2019/03/14 21:08 1/15 Linux naplózás < Linux Linux naplózás Szerző: Sallai András Copyright Sallai András, 2016, 2018, 2019 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu A naplózásról A Linux alapú rendszerek fejlett naplózási lehetőségekkel rendelkeznek. Egy Linux rendszeren mindig érdemes belenézni az ilyen fájlokba, mert azok értelmes és logikus feljegyzéseket tartalmaz a rendszer állapotáról, hibáiról, történéseiről. Mi a naplózás célja? hibák felderítése biztonsági audit a rendszer finomhangolása állapotok nyomon követése szolgáltatás használati szokásainak feltérképezése stb. Mit lehet naplózni? Józsi mikor lépet be tegnap este? János mit nézett meg tegnap este? Mikor indult újra a rendszer? Milyen címről léptek be tegnap 8-9 között? Ki kapott levelet? Betörtek? Voltak tegnap eset sikertelen belépési kísérletek? Milyen csomag lett feltelepítve tegnapelőtt? Melyik országból jöttek a felhasználók? Tegnap használták az adott programot? Jóska honnan jelentkezett be? stb. Programok a naplózás területén Az első naplózó program a sendmail program kiegészítéseként készült. Hamar jött a gondolat, hogy az egész rendszeren lehetne használni. A neve sylsog lett. Kezdetben minden Linux rendszerre ezt került fel. A syslog hibáinak kiküszöbölésére jött létre a syslog-ng, amit gyorsabbnak és hatékonyabbnak tartanak. A Debian GNU/Linux rendszereken manapság az rsyslog terjedt el, amely kompatibilis a syslog rendszerrel.
oktatas:linux:naplózás https://szit.hu/doku.php?id=oktatas:linux:napl%c3%b3z%c3%a1s Naplózó démonok: dsyslog rsyslog syslog-ng inetutils-syslogd scoklog A fent felsorolt démonok mind csomagnevek is a Debian alapú rendszerekben. Esetleg külső forrásból: http://metalog.sourceforge.net/ A Debian GNU/Linux rendszerek alapértelmezett naplózó rendszere (2016) a rsyslog. A programozók rendelkezésre áll egy syslog() nevű függvény, amelyet beépíthetnek a programjukba. A rendszergazdán múlik, hogy a fenti programok közül melyik naplózó rendszer fogadja a naplózásra küldött adatokat. Naplóba írhatunk: logger szöveg A logger /var/log/syslog-ot írja. Napló elemző: logcheck Fájlok A /var/log/ könyvtár tartalma alapesetben: auth.log felhasználói azonosítás btmp sikertelen belépések last -f /var/log/btmp daemon.log démonokról tartalmaz információt debug a naplózóban DEBUG szintre állított programok írnak ide dmesg a kernel gyűrűpuffer (kernel ring buffer) dpkg.log telepített, törölt csomagok faillog sikertelen belépési kísérletek kern.log a kernel beállításai https://szit.hu/ Printed on 2019/03/14 21:08
2019/03/14 21:08 3/15 Linux naplózás lastlog legutóbbi bejelentkezési adatok minden felhasználó számára mail.info mail.log mail.log levelek messages globális rendszerüzenetek, induláskori üzenetek syslog a legtöbb log általában a messages is benne van wtmp bejelentkezési információk # last -f /var/log/btmp root tty3 Sat Oct 29 21:48 still logged in janos :0 :0 Tue Oct 25 17:19 gone - no logout janos :0 :0 Wed Oct 19 18:55-17:19 (5+22:23) janos :0 :0 Mon Oct 17 21:25-18:55 (1+21:30) janos :0 :0 Sun Oct 9 21:12-21:25 (8+00:13) janos :0 :0 Sat Oct 8 11:10-21:12 (1+10:01) janos :0 :0 Tue Oct 4 19:58-11:10 (3+15:12) janos :0 :0 Mon Oct 3 23:35-19:58 (20:23) btmp begins Mon Oct 3 23:35:15 2016 Egyéb: alternatives.log alternatív alrendszer fontconfig.log beállított font könyvtárak Az egyes programok általában saját könyvtárat hoznak létre a naplóállományaik számára. Üzenetek prioritása Az üzenetek prioritása: emerg: vészhelyzet; a rendszer valószínűleg használhatatlan alert: azonnali lépések szükségesek crit: kritikus állapotok err: hiba warn: figyelmeztetés; ebből hiba lehet notice: normális állapot, de ez fontos üzenet info: információs üzenet debug: hibakövetési információ
oktatas:linux:naplózás https://szit.hu/doku.php?id=oktatas:linux:napl%c3%b3z%c3%a1s A napló megtekintése cat more less nano mcedit vi tail grep zcat gzip tömörített fájlok olvasása zgrep zmore head tailf dmesg a kernel ring buffer megtekintése multitail A tail paranccsal real-time-ban figyelhetjük a naplókat: tail -f /var/log/syslog MATE grafikus felületen a mate-system-log programmal tekinthetjük meg a naplófájlokat. A /var/log könyvtár az adm csoportba van. Tegyük a felhasználót ebbe a csoportba. A mutlitail használata: multitail -i /var/log/syslog -i /var/log/auth.log rsyslog # nano /etc/rsyslog.conf # ls /etc/rsyslog.d/ Naplózás a 12 teletype-ra: Szerkesszük az rsyslog.conf fájlt: mcedit /etc/rsyslog.conf De készíthetünk egy külön fájlt is: mcedit /etc/rsyslog.d/50-default.conf Az rsyslog.conf végére vagy a 50-default.conf fájlba írjuk: *.*/dev/tty12 https://szit.hu/ Printed on 2019/03/14 21:08
2019/03/14 21:08 5/15 Linux naplózás Indítsuk újra rsyslog szervert: /etc/init.d/rsyslog restart Naplózás más számítógépre: mcedit /etc/rsyslog.d/50-default.conf Írjuk bele: *.* @gépnév Rotálás A naplófájlok egy idő után túl nagyok lennének, ha nem lennének időnként letörölve. A naplófájlok rotációban, átnevezésre, majd később tömörítésre kerülnek. Egy idő után pedig törlésre kerülnek. Ezt a feladatot látja el a logrotate program. A logrotate program fő beállításai a következő helyen találhatók: /etc/logrotate.conf A logrotate beállításai a következő könyvtárban lehet: /etc/logrotate.d/ A könyvtárban minden program számára készíthetünk egy állományt, amelyben leírjuk a rotációt. A logger program A felhasználók a logger paranccsal képesek a syslog fájlba naplózni. Például: logger üzenet A felhasználók korlátozása Bármelyik felhasználó írhat /var/log/syslog fájlba: logger "Működik a naplózás" Ezt megteheti név nélkül is, konzolra írással együtt: logger -p 0 -t kernel "Működik a naplózás"
oktatas:linux:naplózás https://szit.hu/doku.php?id=oktatas:linux:napl%c3%b3z%c3%a1s groupadd log chmod 660 /dev/log chown root.log /dev/log Ezek után csak azok írhatnak a naplóba, akik bele kerültek a log csoportba. rsyslog naplózószerver Központi szerver beállítása A beállítások elvégezhetők a /etc/rsyslog.conf állományban vagy a tetszőleges névvel,.conf kiterjesztéssel létrehozunk magunak egyet a /etc/rsyslog.d könyvtárban. Hozzunk létre egy logserver.conf állományt: nano /etc/rsyslog.d/logserver.conf Tartalma a következő legyen: $ModLoad imtcp $InputTCPServerRun 514 $AllowedSender TCP, 127.0.0.1, 192.168.5.0/24, gepnev1, gepnev2.domain $template LogFiles,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.*?LogFiles A beállítás után indítsuk újra a rsyslog szervert: systemctl restart rsyslog A %HOSTNAME% helyet IP cím is lehet a könyvtárnév: $template LogFiles,"/var/log/%fromhost-ip%/%PROGRAMNAME%.log" Ha megadunk egy gépnevet az $AllowedSender sorban, annak feloldhatónak kell lennie IP címre. Ha DNS szerveren keresztül nem érhető el, akkor állítsuk be az /etc/hosts fájlban. Kliens beállítása A beállítások elvégezhetők a /etc/rsyslog.conf állományban vagy a tetszőleges névvel,.conf kiterjesztéssel létrehozunk magunak egyet a /etc/rsyslog.d könyvtárban. Hozzunk létre egy logserver.conf állományt: nano /etc/rsyslog.d/logserver.conf https://szit.hu/ Printed on 2019/03/14 21:08
2019/03/14 21:08 7/15 Linux naplózás Tartalma a következő legyen: # Távoli syslog szerver beállítása TCP protokollon *.* @@192.168.5.1:514 Indítsuk újra az rsyslog szervert: systemctl restart rsyslog Figyeljünk a kliens gépnevére (hostname)! A szerveroldalon mindig a kliens gépnevével azonos könyvtárba kerülnek a naplóbejegyzések. A kliens gépnevének állítása után a rsyslogot is indítsuk újra: hostnamectl set-hostname tenger systemctl restart rsyslog Ellenőrzés Az 514 port ellenőrzése: ss -ltn Bejegyzés küldése: logger "Működik" A bejegyzésnek szerepelnie kell a kliens syslog állományában és a szerver root.log állományában. journalctl A journalctl a systemd naplózórendszer lekérdezője. A systemd a naplókat a man systemd-journald szerint az alábbi helyeken tárolhatja: /run/log/journal/machine-id/*.journal /run/log/journal/machine-id/*.journal~ /var/log/journal/machine-id/*.journal /var/log/journal/machine-id/*.journal~ Kérdezzük le, a merevlemezen mennyi helyet foglal a systemd naplója: journalctl --disk-usage A kimenet a következőhöz hasonló lehet: Archived and active journals take up 8.0M in the file system.
oktatas:linux:naplózás https://szit.hu/doku.php?id=oktatas:linux:napl%c3%b3z%c3%a1s A journalctl önmagában kiadva az összes bejegyzést mutatja szűrés nélkül: journalctl Lekérdezés egység (Unit) alapján Egy szolgáltatáshoz tartozó bejegyzések megtekintése: journalctl _SYSTEMD_UNIT=ssh.service Másik példa: journalctl _SYSTEMD_UNIT=avahi-daemon.service A -u kapcsolóval: journalctl -u ssh.service Egy adott program által generált napló: journalctl /usr/sbin/sshd PID alapján: journalctl _PID=7285 A rendszerindítás üzenetei Az aktuális rendszerindítási üzeneteket a -b kapcsolóval lehet megtekinteni: journalctl -b Ha a tartós tárolás be van állítva, akkor megnézhetjük az aktuális előtti rendszerindítási üzeneteket is: journalctl -b -1 Kettővel ez előtti: journalctl -b -2 Rendszerindítási azonosítók listázása: journalctl --list-boots https://szit.hu/ Printed on 2019/03/14 21:08
2019/03/14 21:08 9/15 Linux naplózás Időintervallum lekérdezése Egy órával ez előtt óta: journalctl --since "1 hour ago" Két nappal ez előttől: journalctl --since "2 days ago" Mettől meddig: journalctl --since "2018-11-25 20:11:00" --until "2018-11-25 20:35:00" Adott időpont óta: journalctl --since "2018-11-25 20:00:00" Mai napon: journalctl --since today Tegnap óta: journalctl --since yesterday Tartós tárolás beállítása A naplófájlok alapértelmezetten csak a memóriában tárolódnak: /run/log/journal/<gép_azonosító>/system.journal A tartós tárolásról külön gondoskodni kell. Ehhez szerkeszteni kell a journald.conf beállításait: nano /etc/systemd/journald.conf A journald.conf fájlban minden beállítás a [Journal] szekcióban található. Az első tulajdonásg a Storage: Storage= Értékei a következő lehetnek: volatile tárolás csak a memóriában /run/log/journal persistent
oktatas:linux:naplózás https://szit.hu/doku.php?id=oktatas:linux:napl%c3%b3z%c3%a1s auto none tárolás a merevlemezen: /var/log/journal A journal könyvtár létrejön ha szükséges tárolás a merevlemezen: /var/log/journal nem jön létre automatikusan a journal könyvtár és a tartalma nincs semmilyen tárolás Az auto beállítás esetén akkor történik tárolás, ha van hely. Az autóbeállításhoz fájlok, könyvtárak létrehozása: mkdir -p /var/log/journal systemd-tmpfiles --create --prefix /var/log/journal systemctl restart systemd-journald Folyam és vég figyelése journalctl -f journalctl -u ssh.service -f Az utolsó 5 sor mutatása: journalctl -n 5 -u ssh.service Szűrés prioritás alapján Prioritások: 0 emerg 1 alert 2 crit 3 err 4 warning 5 notice 6 info 7 debug journalctl -p err journalctl -p 1..4 journalctl -p emerg..warning Kimenet formálása https://szit.hu/ Printed on 2019/03/14 21:08
2019/03/14 21:08 11/15 Linux naplózás Formázási lehetőségek: cat export json json-pretty json-sse short short-iso short-monotonic short-precise verbose journalctl -b -u ssh.service -o cat Üzenetcsoportok Kernelmag üzenet: journalctl -k Boot üzenet: journalctl -b Minden üzenet: journalctl -a Rotálás journalctl --rotate Átirányítás journalclt --no-pager > uzenetek.txt Fájlok törlése A napló mérete 1 G lehet: journalctl --vacuum-size=1g 1 év naplójának megtartása:
oktatas:linux:naplózás https://szit.hu/doku.php?id=oktatas:linux:napl%c3%b3z%c3%a1s journalctl --vacuum-time=1years Megadható mértékegységek: s m h days months weeks years Szűrés felhasználók alapján Tegyük fel, hogy a sshd démonra vagyunk kíváncsi. Derítsük ki az sshd felhasználó belső azonosítóját: id sshd A kimenet ehhez hasonló lehet: uid=116(sshd) gid=65534(nogroup) csoportok=65534(nogroup) Ezek után napló megtekintése: journalctl _UID=116 multitail apt install multitail multitail /var/log/syslog /var/log/daemon.log https://szit.hu/ Printed on 2019/03/14 21:08
2019/03/14 21:08 13/15 Linux naplózás lnav Naplófájl nézegető. Telepítés: apt install lnav Használatra példa: lnav vagy: lnav /var/log/syslog /var/log/daemon.log less Megnyitunk egy fájl: less /var/log/auth.log Ezek után bekapcsoljuk a folyamatos módot: Shift + F
oktatas:linux:naplózás https://szit.hu/doku.php?id=oktatas:linux:napl%c3%b3z%c3%a1s De indíthatjuk azonnal ebben a módban: less +F /var/log/auth.log tail + grep A tail -f vagy a tailf parancs nagyszerű eszköz egy állomány változásainak folyamatosa figyelésére. A kimenet szűrhető is a grep paranccsal. A következőkben olyan üzeneteket keresünk, ahol janos, mari vagy kati szerepel az üzenetsorban. tail -f /var/log/auth.log grep -E '(janos mari kati)' A -v kapcsolóval most megfordítjuk az illeszkedést. Azt adjuk meg, milyen sorokat nem szeretnénk látni: tail -f /var/log/auth.log grep -Ev '(janos mari kati)' A grep -E kapcsoló helyett használható a egrep parancs is. A tail -f parancs helyett használható a tailf parancs is. Függelék dmesg A kernle ring bufferbe a kernel írja az üzeneteit. Magunk is írhatunk ebbe a naplóba a megfelelő eszköz ismeretében. Írás a dmesg naplóhoz: echo üzenet > /dev/kmsg Források https://www.howtoforge.com/tutorial/rsyslog-centralized-log-server-in-debian-9/ (2018) http://www.thegeekstuff.com/2011/08/linux-var-log-files/ (2016) http://www.thegeekstuff.com/2012/01/rsyslog-remote-logging (2016) https://www.digitalocean.com/community/tutorials/how-to-view-and-configure-linux-logs-on-ubu ntu-and-centos (2016) http://unixlinux.tmit.bme.hu/napl%c3%b3z%c3%a1s (2016) https://help.ubuntu.com/community/linuxlogfiles (2017) https://www.freedesktop.org/software/systemd/man/journald.conf.html (2018) https://www.loggly.com/ultimate-guide/using-journalctl/ (2018) https://debian-handbook.info/browse/squeeze/sect.syslog.html (2018) https://www.linux.com/learn/sysadmin/viewing-linux-logs-command-line (2018) https://szit.hu/ Printed on 2019/03/14 21:08
2019/03/14 21:08 15/15 Linux naplózás man journald.conf (2018) man systemd-journald man journalctl From: https://szit.hu/ - SzitWiki Permanent link: https://szit.hu/doku.php?id=oktatas:linux:napl%c3%b3z%c3%a1s