Zasadą firmy jest, aby administratorzy logowali się na serwery za pomocą osobistej nazwy użytkownika, a następnie biegali, sudo -i
aby zostać rootem. Po uruchomieniu sudo -i
sudo utworzy zmienną środowiskową o nazwie SUDO_USER
, która zawiera oryginalną nazwę użytkownika.
Czy istnieje sposób na zarejestrowanie WSZYSTKICH poleceń w syslog przy użyciu czegoś podobnego do następującej składni:
${TIME/DATE STAMP}: [${REAL_USER}|${SUDO_USER}]: ${CMD}
Przykładowy wpis to:
Sat Jan 19 22:28:46 CST 2013: [root|ksoviero]: yum install random-pkg
Oczywiście nie musi to być dokładnie powyższa składnia, musi ona zawierać minimum rzeczywistego użytkownika (np. Root), użytkownika sudo (np. Ksoviero) i pełne polecenie, które zostało uruchomione (np. Yum zainstaluj random-pkg).
Próbowałem już snoopy
, ale nie zawierała SUDO_USER
zmiennej.
auditd
.auditd
i chociaż udało mi się zarejestrować wszystkie uruchomione polecenia, nie zawieraSUDO_USER
zmiennej (ani równoważnych informacji) i nie mogę znaleźć sposobu na jej włączenie. Każda pomoc byłaby bardzo mile widziana!Odpowiedzi:
Aktualizacja : jeszcze 2 rzeczy, które pojawiły się w komentarzach i dalszych pytaniach:
auditd
tej metody znacznie zwiększy objętość dziennika, zwłaszcza jeśli system jest intensywnie używany za pomocą wiersza polecenia. Dostosuj zasady przechowywania dzienników.Auditd
dzienniki na hoście, na którym są tworzone, są tak samo bezpieczne, jak inne pliki w tym samym pudełku. Prześlij swoje dzienniki do zdalnego serwera zbierania dzienników, takiego jak ELK lub Graylog, aby zachować ich integralność. Dodatkowo, dodając do powyższego punktu, pozwala on bardziej agresywnie usuwać stare dzienniki.Jak zasugerował Michael Hampton, tutaj
auditd
jest właściwe narzędzie do pracy.Przetestowałem to na instalacji Ubuntu 12.10, więc twój przebieg może się różnić w innych systemach.
Zainstaluj
auditd
:apt-get install auditd
Dodaj te 2 linie do
/etc/audit/audit.rules
:Śledzą one wszystkie polecenia uruchamiane przez root (
euid=0
). Dlaczego dwie zasady? Połączenieexecve
systemowe musi być śledzone zarówno w kodzie 32-bitowym, jak i 64-bitowym.Aby pozbyć się
auid=4294967295
wiadomości w logach, dodajaudit=1
do cmdline jądra (edytując/etc/default/grub
)Umieść linię
session required pam_loginuid.so
we wszystkich plikach konfiguracyjnych PAM, które są istotne dla login (
/etc/pam.d/{login,kdm,sshd}
), ale nie w plikach, które są istotne dlasu
lubsudo
. Umożliwiauditd
touid
prawidłowe uzyskanie dzwoniącego użytkownika podczas połączeniasudo
lubsu
.Uruchom ponownie system teraz.
Zaloguj się i uruchom kilka poleceń:
To da coś takiego
/var/log/audit/auditd.log
:auid
Kolumna zawiera użytkownik wywołującegouid
, który pozwala filtrować poleceń uruchamianych przez użytkownika zSpowoduje to nawet wyświetlenie poleceń uruchomionych przez użytkownika jako root.
Źródła:
źródło
Pamiętaj, że samo sudo rejestruje wszystkie polecenia sudo w syslog, więc wszyscy prywatni użytkownicy powinni być edukowani, aby nie tylko sudo uzyskiwać powłokę root, ale:
Problemem z tym lub innym podejściem, o którym myślałem, jest to, że jako
root
użytkownik dość trudno jest zapobiec unikaniu przez użytkownika określonego rodzaju rejestrowania. Dlatego wszystko, czego spróbujesz, będzie <100% Przykro mi to mówić.Konieczna jest edukacja, dokumentacja, egzekwowanie prawa, a przede wszystkim zaufanie.
źródło
Kiedyś napotkałem ten sam problem i musiałem wymyślić szybkie i brudne rozwiązanie - każdy użytkownik sudo będzie miał swój własny plik historii po uruchomieniu polecenia
sudo -i
W
/root/.bashrc
dodałem następujący wiersz -Tak więc każdy użytkownik, który sudo rootować, będzie miał plik historii .bash_history-username.
Inna metoda -
Dodaj następujący kod,
/root/.bashrc
a doda on nazwę użytkownika, sudo-user i polecenie do pliku dziennika, gdzie kiedykolwiek ustawiony jest poziom powiadomienia, najprawdopodobniej / var / log / messages.Kredyt - http://backdrift.org/logging-bash-history-to-syslog-using-traps
źródło
/bin/sh
,unset HISTFILE
lub/bin/bash --norc
.Wiele zakładów faktycznie zabrania korzystania z audytu, ponieważ wymaga on dużych zasobów i może prowadzić do ataków typu „odmowa usługi”.
Jednym z rozwiązań jest skonfigurowanie najnowszej powłoki Korna (ksh-93, szczegółowe informacje na stronie http://kornshell.com/ ), aby rejestrować wszystkie polecenia wykonywane jako root na zdalnym serwerze syslog, a następnie wymagać tego zgodnie z zasadami, z wyjątkiem sytuacji awaryjnych sytuacje, administratorzy sysadmin logują się na konta osobiste i uruchamiają ulepszoną powłokę Korna przez sudo. Badanie dzienników może wykryć, kiedy administrator uruchamia inną powłokę z zatwierdzonej powłoki w celu pokrycia ich śladów, a następnie SA można edukować w razie potrzeby.
źródło
Sudo ma coś, co nazywa się sudoreplay, gdy włączone sesje są rejestrowane i można je odtworzyć później, działa podobnie jak
script
polecenie, które tworzy maszynopis sesji terminalowej, którą później można odtworzyć za pomocąscriptreplay
polecenia.źródło
Od wersji 2.0.0 snoopy może rejestrować dowolne zmienne środowiskowe.
Jednak niedawny wkład wskazał, że rejestrujący właściciel tty jest dość skuteczną i elegancką odpowiedzią na pytanie „Kto wykonał to polecenie jako root?”.
Ujawnienie: Jestem opiekunem snoopy.
źródło
Nie to, że do tej pory było coś nie tak z żadną inną odpowiedzią, ale jeśli uznasz, że
sudo
logowanie za pośrednictwemsyslog
jest zadowalające, mogę zasugerować zmarszczkę: zaloguj się przez sieć do zdalnego hosta audytu.To rozwiązuje problem: „Teraz zostałem rootem, mogę usunąć wszelkie ślady mojej nadużycia z logów”. Możesz być teraz rootem na lokalnej skrzynce, ale nie możesz wywołać tego pakietu dziennika z sieci i (prawdopodobnie) nie masz uprawnień roota na zdalnym hoście kontroli.
Robiłem to z niektórymi sieciami, którymi zarządzam od lat, i ma dwie inne zalety sygnalizacyjne:
Po pierwsze, jest jedno miejsce w sieci, aby sprawdzić wszystkie syslogs, co pozwala na znacznie łatwiejszą korelację incydentów, a więc jest to kompleksowe centrum badań takich jak „Kiedy
juno
narzekałem, że serwer NFShera
nie odpowiada, czy ktoś jeszcze narzekał ta sama rzecz w tym samym czasie? Jeśli tak,hera
to może być problem, zobaczmy, co się zalogowała; jeśli nie,juno
połączenie sieciowe jest bardziej podejrzane, zobaczmy, co jeszcze sięjuno
zalogowało w tym czasie. ".Po drugie, rotacja dzienników syslog staje się łatwiejsza: nie przechowujesz kopii dzienników na lokalnych hostach przez więcej niż kilka dni, ale upewniasz się, że serwer audytu ma ogromne ilości miejsca na dysku i przechowujesz wszystkie syslogi przez kilka lat. Dodatkowo, jeśli powiedzmy, że chcesz zapisać je na nośniku WORM, np. W celu kontroli sądowej, musisz kupić tylko jeden napęd WORM.
źródło