HOME
gorzow-wlkp.pl/linux
SYSLOGD
czyli logi systemowe


 
Jest to ciąg dalszy ze strony ZARZĄDZANIE.



Jako administrator powinieneś mieć kontrolę nad zdarzeniami zachodzącymi w systemie. Należy w tym celu regularnie edytować pliki z logami. Niestety - ich podstawową wadą jest... nadmiar informacji i bez narzędzi wyszukujących praca z nimi nie ma sensu. Aby na bieżąco móc oglądać wpisy w logu systemowym wciśnij CTRL ALT F12. Jeżeli nic tam nie ma, to wyedytuj plik /etc/syslog.conf i dopisz na końcu wiersz:
*.* /dev/tty12
Następnie zrestartuj syslogd zleceniem:
killall -HUP syslogd



Pod KDE (MANDRAKE CONTROL CENTER czyli mcc -SYSTEM- LOGS lub zleceniem draklog) zaprojektowano przyjazny moduł sortujący wpisy z czterech plików:

  • /var/log/auth.log - zawiera wykaz prób logowania (bezpośrednio i z sieci)
  • /var/log/messages - koszmarnie dużo informacji z każdej chyba dziedziny
  • /var/log/syslog - czyli systemowe oraz sprzętowe komunikaty
  • /var/log/user - co działo się w systemie (np. komunikaty o instalowaniu programów, aktualizacjach)

Inne ciekawe pliki z logami (nie obsługiwanymi przez wspomniane powyżej narzędzie draklog):

  • /var/log/secure - wykaz logowań na serwer proftp, lista wydanych poleceń związanych z dodawaniem i usuwaniem użytkowników.
  • /var/log/security.log komunikaty powstałe po kontroli programu /usr/share/msec/security.sh (program między innymi porównuje pliki i sprawdza czy były modyfikowane)
  • oraz standardowe pliki z logami serwerów typu: proftpd, apache.




Można także samodzielnie tworzyć logi. Ich największą zaletą jest fakt, że zawierają krótkie i treściwe informacje na interesujący nas temat.
Przykład:
Utwórz plik o nazwie rc.sshtest , nadaj mu prawa 700 root.root. Umieść go w katalogu /etc/rc.d . Wpisz do niego następującą treść:

#!/bin/sh
netstat | grep tcp | grep ssh>>home/antek/Desktop/sshlog.txt
echo `/bin/date`>>home/antek/Desktop/sshlog.txt

Jeżeli teraz wprowadzisz do CRONA wpis nakazujący uruchamianie skryptu rc.sshtest co minutę, to na Desktopie usera antek znajdą się logi z działalności serwera sshd. Nie będzie w nich co prawda wszystkich danych (są one w standarowych logach), ale za to ilość informacji związanych z ssh zostanie okrojona do nazwy odległego komputera i jak długo był zalogowany (wpis co minutę razy ilość wpisów da nam czas połączenia). Ponadto wiersz echo `/usr/bin`... wprowadzi datę i godzinę systemową.

O cronie przeczytasz tutaj, o nadawaniu praw tutaj.





Demon syslogd ma za zadanie odbierać komunikaty o błędach systemu. W zależności od konfiguracji umieszczonej w pliku /etc/syslog.conf zapisuje raporty:
  • we wskazanych tekstowych plikach-logach
  • przekazuje raporty do innego demona syslogd na innym komputerze w sieci
  • wyświetla komunikaty na ekranie usera root, o ile ten jest zalogowany w systemie
  • wyświetla na monitorze (najczęściej poprzez terminal /dev/tty10 , który uaktywniany jest skrótem klawiszowym CTRL ALT F10)
  • jeżeli komunikat dotyczy elementu nieopisanego w pliku /etc/syslog.conf , to demon syslogd odrzuci (bez zapisywania w logach) takie informacje


*


Można tak ustawić konfigurację, aby syslogd różne komunikaty umieszczał w różnych plikach, terminalach itd. Budowa takiego komunikatu to: element systemu-kropka-priorytet czyli w praktyce np. kern.warn.

Lista elementów systemu:
  • kern czyli w praktyce np. kern.warn - komunikat związany z elementem systemu o nazwie Kernel (jądro systemu) opatrzony priorytetem typu ostrzeżenie
  • auth - uwierzytelnianie
  • authpriv - uwierzytelnianie uprawnień
  • cron - usługa crontab
  • daemon - demony
  • lpr - drukowanie
  • mail - poczta
  • news - wiadomości sieciowe
  • syslog - dziennik systemowy (oparty o demona syslogd)
  • user - użytkownik
  • uucp - przesyłanie danych pomiędzy systemami
  • lokalne elementy systemu od local0 do local7


Lista priorytetów:
  • info - informacja
  • notice - uwaga
  • err - błąd
  • warn - ostrzeżenie
  • alert - alarm
  • emerg - pilny, awaryjny komunikat systemowy
  • crit - krytyczny komunikat
  • debug - wykrycie błędu programu
  • lista priorytetów znajduje się w pliku /usr/include/sys/syslog.h
Przydatne angielskie słowa: facility - element systemu, priority level - priorytet wiadomości.
 
*

 
W praktyce wpis do pliku /etc/syslog.conf wygląda tak:

*.*     /var/log/messages
czyli wszystkie komunikaty o każdym priorytecie mają być zapisane w pliku messages

kern.warn     /dev/tty10
czyli wszystkie komunikaty związane z elementem systemu o nazwie Kernel opatrzone priorytetem typu ostrzeżenie mają być wyświetlone na terminalu tty10. Oczywiście, jeżeli są dwa wpisy, czyli niniejszy i powyższy, to demon syslogd jednocześnie zapisze komunikat w pliku messages oraz wyświetli na terminalu tty10.

*.emerg;*.err;authpriv.*     root
czyli wszystkie (*) komunikaty pilne (*.emerg) ; wszystkie (*) błędy (*.err) ; oraz komunikaty związane z autoryzacją (authpriv.*) o dowolnym priorytecie (*) mają się wyświetlić na ekranie usera root. Zwróć uwagę, że we wpisie poszczególne rodzaje komunikatów są oddzielone średnikiem (;) bez spacji.



Przypominam, że niektóre programy-demony mogą tworzyć swoje pliki z logami, wyświetlać komunikaty na konsoli roota oraz dopisywać swoje komunikaty do głównych logów bez współpracy z demonem syslogd. Przykładem jest np. shorewall (skrypty nadzorujące iptables).
 



 


Archiwizacja plików z logami


 
Archiwizacja jest podstawowym działaniem zabezpieczającym przez utratą danych. Można archiwizować pliki userów, konfigi, logi korzystając z linuksowych narzędzi lub samodzielnie utworzonych skryptów. Uwaga: ważnym jest, by zarchiwizowane dane były przechowywane na innym komputerze lub na osobnej partycji ARCHIWUM, która będzie odmontowana i zabezpieczona przed zamontowaniem. Karygodnym błędem jest archiwizowanie katalogu zawierającego ważne dane np. /etc w ogólnie dostępnym katalogu np. /home. Archiwa muszą być NIEDOSTĘPNE, a dojście do nich powinno wymagać specjalnych zabiegów admina.

Poniżej pokażę jak kopiować zawartość katalogu /var/log , pakować do pliku tar.gz oraz nadawać nazwę zbudowaną z daty i godziny archiwizacji. Paczkę *.tar.gz umieszczę w katalogu /root lub na odległym komputerze (którego udostępniony katalog zamontowaliśmy w /mnt/jakiskatalog).
  • Pobierz z mojego archiwum skrypt rc.archiw. Umieść go w swoim katalogu /etc/rc.d i nadaj prawa 700 root.root (zleceniami: cd /etc/rc.d oraz chmod 700 rc.archiw oraz chown root.root rc.archiw). Następnie wyedytuj go (zleceniem mcedit rc.archiw) i popraw ścieżkę dostępu do docelowego katalogu, w którym chcesz przechowywać archiwa. Tutaj jest /home/antek/Desktop/, czyli Desktop użytkownika antek. Skrypt ma następującą zawartość:

    #!/bin/sh
    tar -zcf /home/antek/Desktop/`date +%Y.%m.%d.%H.%M.%S`.tar /var/log

    Skrypt zawiera polecenie tar, które można też wklepać pod rootem w powłoce tekstowej. Efekt będzie ten sam, jednak wygodniej jest wpisać polecenie do skryptu (tak jak to zrobiłem) i odpalać go zleceniem ./nazwaskryptu (lub programem mc). Budowa naszego polecenia tar jest następująca:

    tar - czyli określenie programu, który chcemy uruchomić w celu utworzenia paczki (tar nie kompresuje, a jedynie zamienia w pojedyńczy plik zestaw plików oraz katalogów z zachowaniem logiki drzewa katalogowego). Następnie po spacji:

    -zcf - czyli deklaracja, co chcemy po kolei wykonać: z = czyli spakować poprzez gzip (możemy ominąć tę literkę, ale wówczas paczka będzie nieskompresowana i bardzo duża), c = czyli tworzenie pliku ze zarchiwizowanymi danymi, f = plik ma mieć określona nazwę. Następnie po spacji:

    /home/antek/Desktop/`date +%Y.%m.%d.%H.%M.%S`.tar - czyli gdzie umieścić oraz z jaką nazwą (uwaga: jedyna spacja jest po słowie date). Tutaj nazwa to zestaw zmiennych pobranych z zegara systemowego - rok, miesiąc, dzień, godzina, mniuta, sekunda. Zwróć uwagę, że zmienne daty są otoczone z lewa i prawa tzw. górnym przecinkiem (jest pod klawiszem ESC). Następnie po spacji:

    /var/log = czyli co chcesz archiwizować. Zostanie zachowany układ katalogów, podkatalogów.
     

  • Oczywiście nie będziesz co chwila ręcznie uaktywniać skryptu. Z pomocą przejdzie nam cron (opisałem go na sąsiedniej stronie). Aby uruchamiać regularnie skrypt rc.archiw, należy wpisać wiersz do pliku /etc/crontab. U mnie wygląda to tak:

    # run-parts
    01 * * * * root nice -n 19 run-parts /etc/cron.hourly
    02 4 * * * root nice -n 19 run-parts /etc/cron.daily
    22 4 * * 0 root nice -n 19 run-parts /etc/cron.weekly
    42 4 1 * * root nice -n 19 run-parts /etc/cron.monthly
    * * * * * root /etc/rc.d/rc.sditest
    20 5 * * * root cp -f /var/log/security.log /home/antek/Desktop/SECURITY.txt
    21 5 * * * root chown antek.antek /home/antek/Desktop/SECURITY.txt
    0 * * * * root /etc/rc.d/rc.archiw

    Ciebie interesuje ostatni wpis zaznaczony na niebiesko. Zmusi on crona do uruchomienia skryptu rc.archiw raz na godzinę. Oczywiście możesz wybrać różne pory, np. */15 * * * * root /etc/rc.d/rc.archiw, czyli uruchomienie pliku rc.archiw co 15 minut (patrz na sąsiednią stronę). Jeżeli masz bardzo dużo miejsca na dysku, udostępniasz wiele usług typu SSH, SAMBA, HTTPD, ProFTPd, Twój serwer jest intensywnie wykorzystywany, to polecam opcje archiwizacji nawet... co 8 godzin, z jednoczesnym kasowaniem oryginalnych logów np. co dobę.
     

  • Co jest wadą powyższego rozwiązania? To, że włamywacz może trochę się natrudzić i po edycji plików crona odszukać skrypt archiwizujący i... wykasować archiwa z logami. W związku z tym proponuję archiwa umieszczać na innym komputerze. Jak? To proste. Można użyć scp, sftp. Są to programy prymitywne, ale praktyczne do użycia w skryptach. Co ważne korzystają z szyfrowanego tunelu ssh. Jeżeli masz klienta windowsowego w domowej podsieci, to korzystając z SAMBY-CLIENTA należy zamontować jego udostępniony katalog w /mnt/jakiskatalog. Taką ścieżkę dostępu wprowadzić do skryptu rc.archiw. Jeżeli jesteś adminem-paranoikiem, to dodatkowo (na komputerze klienckim) regularnie przesuwaj archiwa z udostępnionego katalogu w inne miejsce. Od tej chwili włamywacz nie będzie mógł dostać się do archiwów i zniszczyć kompromitujących go materiałów ;) . Oczywiście najlepiej jest przerzucać archiwa na inny komputer pod tunelem ssh.





 
twarogal@wp.pl

Wszelkie prawa są zastrzeżone, z wyłączeniem hobbystów, którzy umieszczają opracowania na stronach bez reklam. Dla hobbystów zawartość tej strony jest dostępna bez ograniczeń - używanie i przerabianie moich artykułów są jak najbardziej wskazane, ale na swoją odpowiedzialność.

Aby uniknąć zasysania całej witryny gorzow-wlkp.pl/linux za pomocą programów typu TeleportPro, WebCopier itd. informuję, że udostępniłem spakowaną wersję (w formacie RAR).

 




 

gorzow-wlkp.pl