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.


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).
|