A gépen történő események (belépés, kilépés, különböző kiszolgáló programokhoz intézett kérések) naplózása a rendszerbiztonság kritikus eleme.
A számunkra fontos log file-okat általában a /var/log/ könyvtár alatt találjuk. Ezek közül a messages, a secure és a maillog létezik alapértelmezésben. Tartalmuk általában a syslog() függvényhívás segítségével keletkezik, tehát a /etc/syslog.conf-ban beállítható, mit és hova szeretnénk logolni.
A ,,mit'' nagyrészt csak attól függ, mennyi információt akarunk kapni a rendszer működéséről. A ,,hova'' azért fontos, mert a betörő megváltoztathatja a logot, ha azt a host-on tároljuk. Ha biztonságban szereténk tudni, irányítsuk át egy másik gépre, ahol nincsenek helyi felhasználók és nem fut olyan szolgáltatás (mail, http, telnet, ftp, bind, pop, imap, stb.), amit felhasználva a gép feltörhető vagy ellene DoS támadás indítható. Az átirányításra a syslogd is kínál lehetőséget, de fogadó gépen az 514/UDP port elérését le kell korlátozni, nehogy jogosulatlanul logolhassanak a gépre, DoS támadást valósítva meg ezzel. Szűrni kell a spoof-olt címről érkező csomagokat is.
Az átirányításhoz a küldő gépen -h, a fogadó gépen pedig -r paraméterrel kell a syslogd-t indítani, illetve a küldő gép /etc/syslog.conf-jának a következőképp kell kinéznie:
*.* @tavoli_host
Ezzel minden log-ot a tavoli_host-ra irányítottunk. Még jobb megoldás, ha a kapcsolatot ssh-val forwardoljuk, így egy sniffer elől is biztonságban van. Mivel nem UDP alapú a kapcsolat, megnehezíti az address spoofing-ot, amely ellen az ssh is védelmet nyújt. Kódolt transzferre a syslog-ng[43] is ad lehetőséget, több más hasznos tulajdonsága mellett, amelyek miatt érdemes kipróbálni.
A log átvitelére az egyik legbiztonságosabb megoldás, ha valamilyen link kábelt (soros vagy párhuzamos) használunk a szerver és a logot tároló gép összekötésére, de küldhetjük nyomtatóra is. Utóbbi hártányai közé tartozik, hogy a papír elfogyhat, esetleg elakadhat nyomtatás közben, így e technika kizárólagos alkalmazása nem javasolt. Ha a log a szerveren (is) megtalálható, elérési jogosultságait úgy kell beállítani, hogy nem privilégizált felhasználók ne olvashassák és főleg ne módosíthassák.
Van néhány program, amely elemzi a logot és figyelmeztet a rendkívüli eseményekre. Ezek közül az Swatch[44]-ot emelném ki, amely képes riasztást is küldeni (pl. pagerre).
Ha tényleg paranoiásak vagyunk, logolhatjuk a felhasználók általi programindításokat is egy kernel modul[45] segítségével.
Sajnos a syslog protokoll jelenlegi implementációi nem tökéletesek, nem
védettek például DoS támadás, illetve a helyi felhasználók ellen. Egy
'logger "Szia mami!"' utasítás után érdemes belepillantani a
/var/log/messages-be. Ugyanez még bosszantóbb, ha a
'logger -p 0 -t kernel "Szia mami!"' módon használják, mivel
így a felhasználó neve sem kerül a logba, illetve a konzolon is
megjelenik az üzenet.
Erre szerencsére van megoldás (Michal Zalewski javaslata):
groupadd log chmod 660 /dev/log chown root.log /dev/log
Ezek után már csak a log group tagjait kell megválogatni.