Instalacja rsyslog (w niektórych systemach jest domyślnie już zainstalowany)
apt-get install rsyslog
Dodatkowa dokumentacja
apt-get install rsyslog-doc
Pliki konfiguracyjne można znaleźć tutaj
/etc/rsyslog.conf
/etc/rsyslog.d/
Po zmianie pliku konfiguracyjnego wymagane jest ponowne uruchomienie serwisu
service rsyslog restart
Instalacja obsługi bazy danych MySQL lub PostgreSQL,
może automatycznie utworzyć plik konfiguracyjny oraz bazę danych Syslog razem z tablicami SystemEvents i SystemEventsProperties, dodatkowo może dodać użytkownika rsyslog (jedynym wymaganym dla niego uprawnieniem jest INSERT)
apt-get install rsyslog-mysql
apt-get install rsyslog-pgsql
Po instalacji obsługi bazy danych plik konfiguracyjny, np. /etc/rsyslog.d/mysql.conf, powinien wyglądać podobnie do tego,
zostanie załadowany do głównego pliku konfiguracyjnego przez $IncludeConfig /etc/rsyslog.d/*.conf
$ModLoad ommysql
*.* :ommysql:localhost,Syslog,rsyslog,hasło
Po instalacji rsyslog, domyślnie czas jest zapisywany w skróconej formie: np. 2012-05-20 11:57:42,
odpowiada za to poniższa linia w pliku konfiguracyjnym,
by włączyć dokłane zapisywanie czasu - trzeba zamienić ją na komentarz
# $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
Zebrane logi, w np. bazie danych MySQL, można wyświetlić w ten sposób
USE Syslog;
SELECT ReceivedAt, FromHost, SysLogTag, Message FROM SystemEvents;
| data czas | host | mpt-statusd: | detected non-optimal RAID status |
| data czas | host | CRON[11144]: | pam_unix(cron:session): session opened for user root by (uid=0) |
| data czas | host | /USR/SBIN/CRON[11146]: | (root) CMD ( cd / && run-parts --report /etc/cron.hourly) |
| data czas | host | CRON[11144]: | pam_unix(cron:session): session closed for user root |
| data czas | host | mpt-statusd: | detected non-optimal RAID status |
Na serwerze przeznaczonym do zbierania logów można włączyć wybrane porty do ich odbierania,
w domyślnym pliku konfiguracyjnym sprowadza się to do usunięcia znaków komentarzy (#) przy odpowiednich liniach
# UDP
$ModLoad imudp
$UDPServerRun 514
# TCP
$ModLoad imtcp
$InputTCPServerRun 514
# RELP
$ModLoad imrelp
$InputRELPServerRun 20514
Na pozostałych serwerach można włączyć odsyłanie ich logów
# UDP (jeden znak @)
*.* @192.168.0.1:514
# TCP (dwa znaki @@)
*.* @@192.168.0.1:514
# RELP
$ModLoad omrelp
*.* :omrelp:192.168.0.1:20514;RSYSLOG_ForwardFormat
Reguły są zapisywane w postaci: facility.priority,
można dodatkowo używać: * - oznaczającą wszystko oraz none - oznaczające nic,
natomiast przecinkiem można rozdzielić kilka wpisów z jednej grupy
Facilities |
Code |
Keyword |
Facility |
0 |
kern |
Kernel |
1 |
user |
Regular user processess |
2 |
mail |
Mail system |
3 |
daemon |
System daemons |
4 |
auth |
Security (authentication and authorisation) related commands |
5 |
syslog |
Syslog internal messages |
6 |
lpr |
Line printers system |
7 |
news |
NNTP subsystem |
8 |
uucp |
UUCP subsystem |
10 |
authpriv |
Private authorisation messages |
16-23 |
local0-7 |
Site specific use |
Priorities |
Code |
Keyword |
Facility |
0 |
emerg |
Emergency: system is unusable |
1 |
alert |
Alert: action must be taken immediately |
2 |
crit |
Critical: critical conditions |
3 |
err |
Error: error conditions |
4 |
warn |
Warning: warning conditions |
5 |
notice |
Notice: normal but significant conditions |
6 |
info |
Informational: informational messages |
7 |
debug |
Debug: debug level messages |
Reguła zapisująca logi jądra z obojętnie jakim priorytetem
kern.* /var/log/kern.log
Logi auth oraz authpriv z obojętnie jakim priorytetem będą zapisywane do jednego pliku, a wszystkie pozostałe trafią w inne miejsce
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none /var/log/sys.log
Zapisywanie wszystkich logów kern poza tymi z priorytetem info, służy do tego: !=
kern.*;kern.!=info /var/log/kernel/noinfo.log
Można użyć samego znaku =, czyli wybrać logi tylko z jednym priorytetem
kern.=info
Dodatkowe opcje można przypisać do danej reguły
*.* /var/log/traditionalfile.log;RSYSLOG_TraditionalFormat
Usunięcie starych wpisów z bazy danych MySQL
DELETE FROM SystemEvents WHERE ReceivedAt < date_add(current_date, interval -1 day)
Data w nazwie plików
$template DynamicFile,"/var/log/test_logs/%timegenerated%-test.log"
*.* ?DynamicFile
Znak - przed ścieżką pliku logów pozwala na utworzenie buforu danych przed ich zapisem
mail.info -/var/log/mail.info
Dodanie reguły logowania połączeń na port 80, np. ze strony internetowej
iptables -A INPUT -p tcp --dport 80 -j LOG --log-level 6 --log-prefix "iptables "
Utworzenie pliku /etc/rsyslog.d/iptables.conf z konfiguracją dla rsyslog,
druga linia zatrzymuje logi, które zawierały wybrane słowo kluczowe "iptables"
:msg,contains,"iptables" /var/log/iptables.log
& ~
Zadania na ćwiczenia:
1. Skonfiguruj jeden z serwerów, tak by mógł zbierać logi do bazy danych. Następnie na innym serwerze
ustaw przekazywanie niektórych logów.
2. Ustaw logowanie do pliku z automatycznie generowaną nazwą zawierającą datę, czas oraz nazwę komputera.
3. Sprawdź, w jaki sposób można zapisywać wiadomości od wybranego nazwanego procesu.
4. Przejrzyj opcje pozwalające na przesyłanie logów w określonych godzinach, a w pozostałych zapisywanie
ich tymczasowo do pliku.