Zabezpieczenie serwera przed usuwaniem logów .bash_history przez userów.

Część 1 – Zezwolenie na otwarcie zapisu do pliku .bash_history

tylko w trybie dopisywania danych na końcu.
(chattr +a)

* Dla partycji z systemem plików ext3 wystarczy wydać polecenie:
chattr +a /home/*/.bash_history

* Dla partycji z systemem plików reiserFS należy do pliku /etc/fstab
w sekcji /home dopisać opcję attrs.
(Przykład: /dev/hda4 /home reiserfs defaults,attrs 1 2)
teraz przemontować partycję (mount -o remount /home)
i powyższe chattr +a /home/*/.bash_history

* Modyfikacja pliku /usr/sbin/adduser.
Aby każdy nowo założony użytkownik serwera posiadał od razu
w swoim katalogu domowym plik .bash_history
z atrybutem chattr +a należy do w/w pliku dopisać:

if [ „$SHL” = „-s /bin/bash” ]; then
cd $HME
touch .bash_history
chown $LOGIN: .bash_history
$chmod 600 .bash_history
chattr +a .bash_history
fi

wpis ten najlepiej dodać na końcu pliku przed:

echo
echo
echo „Account setup complete.”
exit 0

Część 2 – Zapis historii do pliku.

Sam atrybut chattr +a nie da pełnego zabezpieczenia ponieważ działania
usera który przed wylogowaniem się z serwera wywoła polecenie unset HISTFILE
nie zostaną zapisane w pliku .bash_history. Aby temu zaradzić wystarczy do pliku
/etc/profile dopisać następujące linijki:

HISTIGNORE=””
HISTCONTROL=””
readonly HISTFILE
readonly HISTSIZE
readonly HISTFILESIZE
readonly HISTIGNORE
readonly HISTCONTROL
export HISTFILE HISTSIZE HISTFILESIZE HISTIGNORE HISTCONTROL

teraz po wydaniu polecenia unset HISTFILE oczom usera ukaże się
-bash: unset: HISTFILE: nie można anulować definicji: variable jest tylko do odczytu

Powyższy artykuł został pisany w oparciu o serwer z zainstalowanym systemem Slackware
(na innych systemach pliki mogą się różnić od wymienionych tutaj) i sprawdza się jeżeli
jedyna dostępna powłoka dla userów to bash.

Autor: Krzysztof Wnuk