Weboldal keresés

Központi naplókiszolgáló létrehozása Rsyslog segítségével a CentOS/RHEL 7 rendszerben


Ahhoz, hogy a rendszeradminisztrátor azonosíthassa vagy elhárítsa a problémát a CentOS 7 vagy RHEL 7 szerverrendszeren, ismernie kell és meg kell tekintenie az adott rendszeren történt eseményeket. időtartamot a rendszerben a /var/log könyvtárban tárolt naplófájlokból.

A rendszernaplószerver egy Linux gépen központi felügyeleti pontként működhet a hálózaton, ahol az összes szerver, hálózati eszköz, útválasztó, switch és a legtöbb belső szolgáltatásuk, amely naplókat generál, akár konkrét belső problémáról, akár csak tájékoztató üzenetekről van szó, elküldheti naplóit. .

CentOS/RHEL 7 rendszeren az Rsyslog démon az előre telepített fő naplószerver, ezt követi a Systemd Journal Daemon (journald).

Az Rsyslog szerver kliens/szerver architektúra szolgáltatásként beépítve, és mindkét szerepet egyszerre tudja betölteni. Szerverként futhat, és összegyűjtheti a hálózat más eszközei által továbbított összes naplót, vagy futhat kliensként az összes naplózott belső rendszeresemény elküldésével egy távoli végponti rendszernapló-kiszolgálóra.

Ha az rsyslog kliensként van konfigurálva, a naplók tárolhatók helyben a helyi fájlrendszer fájljaiban, vagy távolról is elküldhetők, ahelyett, hogy a gépen tárolt fájlokba írnák, vagy az eseménynaplófájlokat helyileg írnák, és elküldhetők egy távoli syslog szerverre ugyanakkor.

A Syslog szerver bármilyen naplóüzenetet a következő séma szerint kezel:

type (facility).priority (severity)  destination(where to send the log)

V.létesítmény vagy típusadatokat az üzeneteket előállító belső rendszerfolyamatok képviselik. A Linuxban a naplókat előállító belső folyamatok (létesítmények) a következők szerint vannak szabványosítva:

  • auth = hitelesítési folyamatok (bejelentkezés) által generált üzenetek.
  • cron= ütemezett folyamatok által generált üzenetek (crontab).
  • démon = démonok (belső szolgáltatások) által generált üzenetek.
  • kernel = maga a Linux kernel által generált üzenetek.
  • mail = levelezőszerver által generált üzenetek.
  • syslog = maga az rsyslog démon által generált üzenetek.
  • lpr = helyi nyomtatók vagy nyomtatószerver által generált üzenetek.
  • local0 – local7 = a rendszergazda által meghatározott egyéni üzenetek (a helyi7 általában Cisco vagy Windows rendszerhez van hozzárendelve).

B.prioritási (súlyossági) szintek szintén szabványosak. Minden prioritáshoz egy szabványos rövidítés és egy szám tartozik az alábbiak szerint. A 7. prioritás az összes közül a magasabb szint.

  • emerg = Vészhelyzet – 0
  • figyelmeztetés = Figyelmeztetések – 1
  • hiba = Hibák – 3
  • warn = Figyelmeztetések – 4
  • notice = Értesítés – 5
  • információ = Információ – 6
  • debug = Hibakeresés – 7

Speciális Rsyslog kulcsszavak:

  • *=minden lehetőség vagy prioritás
  • nincs=a létesítményeknek nincs meghatározott prioritása Pl.: mail.none

C. A syslog-séma harmadik részét a destination direktíva képviseli. Az Rsyslog démon naplóüzeneteket tud küldeni, amelyeket a helyi fájlrendszeren lévő fájlba kell írni (leginkább a /var/log/ könyvtárban lévő fájlba), vagy át kell küldeni egy másik helyi folyamatba, vagy el kell küldeni egy helyi felhasználói konzolra (stdouthoz), vagy elküldheti az üzenetet egy távoli rendszernapló-szervernek TCP/UDP protokollon keresztül, vagy akár el is dobhatja az üzenetet a /dev/null címre.

A CentOS/RHEL 7 központi naplószerverként való konfigurálásához először ellenőriznünk kell, és meg kell győződnünk arról, hogy a /var partíció, amelyen az összes naplófájl rögzítve van, elég nagy ( legalább néhány GB), hogy el tudja tárolni az összes naplófájlt, amelyet más eszközök küldenek. Jó döntés egy külön meghajtó (LVM, RAID) használata a /var/log/ könyvtár csatlakoztatásához.

Követelmények

  1. CentOS 7.3 telepítési eljárás
  2. RHEL 7.3 Telepítési eljárás

Az Rsyslog konfigurálása a CentOS/RHEL 7 szerveren

1. Alapértelmezés szerint az Rsyslog szolgáltatás automatikusan telepítésre kerül, és a CentOS/RHEL 7 rendszerben kell futnia. Annak ellenőrzéséhez, hogy a démon elindult-e a rendszerben, adja ki a következő parancsot root jogosultságokkal.

systemctl status rsyslog.service

Ha a szolgáltatás alapértelmezés szerint nem fut, hajtsa végre az alábbi parancsot az rsyslog démon elindításához.

systemctl start rsyslog.service

2. Ha az rsyslog csomag nincs telepítve arra a rendszerre, amelyet központi naplózószerverként kíván használni, akkor adja ki a következő parancsot az rsyslog csomag telepítéséhez.

yum install rsyslog

3. Az első lépés, amit meg kell tennünk a rendszeren annak érdekében, hogy az rsyslog démont központi naplószerverként konfigurálhassuk, hogy naplóüzeneteket tudjon fogadni külső kliensek számára, a megnyitás és szerkesztés a kedvenc szövegszerkesztő, az /etc/rsyslog.conf fő konfigurációs fájlja, az alábbi kivonat szerint.

vi /etc/rsyslog.conf

Az rsyslog fő konfigurációs fájljában keresse meg és törölje a megjegyzéseket a következő sorokban (távolítsa el a hashtag # jelet a sor elején), hogy UDP-átviteli vételt biztosítson az Rsyslog-szervernek az 514 segítségével. kikötő. Az UDP az Rsyslog által a naplózáshoz használt szabványos protokoll.

$ModLoad imudp 
$UDPServerRun 514

4. Az UDP-protokoll nem rendelkezik TCP-többletterheléssel, ami gyorsabbá teszi az adatátvitelt, mint a TCP-protokoll. Másrészt az UDP protokoll nem biztosítja a továbbított adatok megbízhatóságát.

Ha azonban TCP protokollt kell használnia a naplófogadáshoz, akkor meg kell keresnie és ki kell vennie a megjegyzéseket a következő sorokból az /etc/rsyslog.conf fájlból, hogy beállítsa az Rsyslog démont a TCP socket 514-en történő összekapcsolására és figyelésére. kikötő. A vételhez szükséges TCP és UDP figyelő socketek egyidejűleg konfigurálhatók egy Rsyslog szerveren.

$ModLoad imtcp 
$InputTCPServerRun 514 

5. A következő lépésben még ne zárja be a fájlt, hanem hozzon létre egy új sablont, amelyet a távoli üzenetek fogadására fog használni. Ez a sablon utasítja a helyi Rsyslog-kiszolgálót, hogy hova mentse a syslog hálózati ügyfelek által küldött üzeneteket. A sablont a GLOBÁLIS IRÁNYELVEK blokk eleje előtt kell hozzáadni, amint azt az alábbi kivonat szemlélteti.

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
. ?RemoteLogs & ~

A fenti $template RemoteLogs irányelv arra utasítja az Rsyslog démont, hogy gyűjtse össze és írja be az összes kapott naplóüzenetet különálló fájlokba az ügyfélgép neve és a távoli kliens létesítmény (alkalmazás) alapján, amely az üzeneteket létrehozta. meghatározott tulajdonságok jelennek meg a sablonkonfigurációban: %HOSTNAME% és %PROGRAMNAME%.

Mindezek a naplófájlok a helyi fájlrendszerbe íródnak egy dedikált fájlba, amelyet az ügyfélgép hosztnevéről neveznek el, és a /var/log/ könyvtárban tárolódnak.

& ~ átirányítási szabály arra utasítja a helyi Rsyslog-szervert, hogy állítsa le a kapott naplóüzenet további feldolgozását, és dobja el az üzeneteket (ne írja azokat belső naplófájlokba).

A RemoteLogs név egy tetszőleges név, amelyet ennek a sablon direktívának adnak. Bármilyen nevet használhat, amely a legjobban megfelel a sablonnak.

Ha az ügyfelektől kapott összes üzenetet egyetlen, a távoli kliens IP-címéről elnevezett naplófájlba szeretné írni anélkül, hogy szűrné az üzenetet létrehozó szolgáltatást, használja az alábbi kivonatot.

$template FromIp,"/var/log/%FROMHOST-IP%.log" 
. ?FromIp & ~ 

Egy másik példa egy sablonra, ahol az összes hitelesítési lehetőség jelzővel ellátott üzenet egy „TmplAuth” nevű sablonba kerül naplózásra.

$template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
authpriv.*   ?TmplAuth

Az alábbiakban egy kivonat található az Rsyslog 7 szerver sablondefiníciójából:

template(name="TmplMsg" type="string"
         string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log"
        )

A fenti sablonrészlet így is írható:

template(name="TmplMsg" type="list") {
    constant(value="/var/log/remote/msg/")
    property(name="hostname")
    constant(value="/")
    property(name="programname" SecurePath="replace")
    constant(value=".log")
    }

Összetett Rsyslog-sablonok írásához olvassa el az Rsyslog konfigurációs fájl kézikönyvét a man rsyslog.conf parancs kiadásával, vagy tekintse meg az Rsyslog online dokumentációját.

6. Miután szerkesztette az Rsyslog konfigurációs fájlt saját beállításaival a fent leírtak szerint, indítsa újra az Rsyslog démont a módosítások végrehajtásához a következő parancs kiadásával:

service rsyslog restart

7. Mostanra az Rsyslog-kiszolgálót úgy kell beállítani, hogy központi naplószerverként működjön, és rögzítse a syslog-kliensek üzeneteit. Az Rsyslog hálózati socketek ellenőrzéséhez futtassa a netstat parancsot root jogosultságokkal, és használja a grep parancsot az rsyslog karakterlánc szűrésére.

netstat -tulpn | grep rsyslog 

8. Ha a SELinux engedélyezve van a CentOS/RHEL 7 rendszerben, adja ki a következő parancsot a SELinux konfigurálásához, hogy engedélyezze az rsyslog forgalmat a hálózati socket típusától függően.

semanage -a -t syslogd_port_t -p udp 514
semanage -a -t syslogd_port_t -p tcp 514 

9. Ha a tűzfal engedélyezve van és aktív, futtassa az alábbi parancsot, hogy hozzáadja a szükséges szabályokat az rsyslog portok megnyitásához a Firewalldban.

firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=514/udp
firewall-cmd –reload

Ez minden! Az Rsyslog most kiszolgáló módban van konfigurálva, és képes központosítani a távoli ügyfelek naplóit. A következő cikkben látni fogjuk, hogyan kell konfigurálni az Rsyslog klienst a CentOS/RHEL 7 szerveren.

Ha az Rsyslog szervert a távoli naplóüzenetek központi megfigyelési pontjaként használja, megtekintheti a naplófájlokat, és könnyebben megfigyelheti az ügyfelek állapotát, vagy könnyebben hibakeresheti a kliens problémáit, amikor a rendszer összeomlik vagy valamilyen támadás éri őket.