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. A 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. A 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
- CentOS 7.3 telepítési eljárás
- 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.
A & ~ á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.