Felhasználói eszközök

Eszközök a webhelyen


oktatas:linux:naplozas

< Linux

Linux naplózás

  • Szerző: Sallai András
  • Copyright © Sallai András, 2016, 2018, 2019
  • Licenc: GNU Free Documentation License 1.3

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.

Naplózó démonok:

  • rsyslog
  • syslog-ng
  • inetutils-syslogd

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
  • 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ó

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

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"
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

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.

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

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
    • tárolás a merevlemezen: /var/log/journal
    • A journal könyvtár létrejön ha szükséges
  • auto
    • tárolás a merevlemezen: /var/log/journal
    • nem jön létre automatikusan a journal könyvtár és a tartalma
  • none
    • 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

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:

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

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

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

oktatas/linux/naplozas.txt · Utolsó módosítás: 2019/10/17 19:28 szerkesztette: admin