A rendszernaplókkal kapcsolatos műveletek egyaránt fontosak a biztonság és a karbantartás szempontjából. Ha közepes vagy nagyobb méretű, esetleg különböző típusú hálózatokban adminisztrálunk több gépet, akkor könnyen átláthatatlanná válhat a naplók rendszeres felügyelete. Ilyen helyzetekben a távoli naplózás beállításával az egész folyamatot sokkal kényelmesebbé tehetjük.
Némileg képesek vagyunk enyhíteni a naplóállományok kezelésének terhét, ha egyetlen központi szerverre küldjük át az adatokat. Ekkor a FreeBSD alaprendszerében megtalálható alapeszközökkel, mint például a syslogd(8) vagy a newsyslog(8) felhasználásával egyetlen helyen be tudjuk állítani a naplók összegyűjtését, összefésülését és cseréjét. A most következő példa konfigurációban az A gép, a naploszerver.minta.com fogja gyűjteni a helyi hálózatról érkező naplóinformációkat. A B gép, a naplokliens.minta.com pedig a szervernek küldi a naplózandó adatokat. Éles környezetben mind a két gépnek rendelkeznie kell megfelelő DNS bejegyzésekkel, vagy legalább szerepelniük kell egymás /etc/hosts állományaiban. Ha ezt elmulasztjuk, a szerver nem lesz hajlandó adatokat fogadni.
A naplószerverek olyan gépek, amelyeket úgy állítottunk be, hogy naplózási információkat tudjanak fogadni távoli számítógépekről. A legtöbb esetben így egyszerűsíteni tudunk a konfiguráción, vagy olykor egyszerűen csak hasznos, ha ezt a megoldást alkalmazzuk. Függetlenül attól, hogy miért használjuk, a továbblépés előtt néhány előkészületet meg kell tennünk.
Egy rendesen beállított naplószervernek legalább a következő követelményeknek kell eleget tennie:
az 514-es UDP portot engedélyezni kell mind a kliensen, mind pedig a szerveren futó tűzfal szabályrendszerében;
a syslogd(8) képes legyen a távoli kliens gépekről érkező üzeneteket fogadni;
a syslogd(8) szervernek és az összes kliensnek rendelkeznie kell érvényes DNS (közvetlen és inverz) bejegyzésekkel vagy szerepelnie kell az /etc/hosts állományban.
A naplószerver beállításához mindegyik klienst fel kell vennünk az /etc/syslog.conf állományba, valamint meg kell adnunk a megfelelő funkciót (facility):
+naplokliens.minta.com *.* /var/log/naplokliens.log
Megjegyzés: A syslog.conf(5) man oldalán megtalálhatjuk a különböző támogatott és elérhető funkciókat.
Miután beállítottuk, az összes adott funkcióhoz tartozó üzenet az előbb megadott állományba (/var/log/naplokliens.log) fog kerülni.
A szerveren továbbá meg kell adnunk a következő sort az /etc/rc.conf állományban:
syslogd_enable="YES" syslogd_flags="-a naplokliens.minta.com -vv"
Az első sorral engedélyezzük a
syslogd elindítását a
rendszerindítás során, majd a
második sorral engedélyezzük, hogy a kliens
naplózni tudjon a szerverre. Itt még
látható a -vv
opció,
amellyel a naplózott üzenetek
részletességét tudjuk növelni. Ennek
nagyon fontos a szerepe a naplózási
funkciók behangolásakor, mivel így a
rendszergazdák pontosan láthatják milyen
típusú üzenetek milyen funkcióval
kerültek rögzítésre a
naplóban.
Befejezésképpen hozzuk létre a naplóállományt. Teljesen mindegy, hogy erre milyen megoldást alkalmazunk, például a touch(1) remekül megfelel:
# touch /var/log/naplokliens.log
Ezután indítsuk újra és ellenőrizzük a syslogd démont:
# /etc/rc.d/syslogd restart # pgrep syslog
Ha válaszul megkapjuk a futó démon azonosítóját, akkor sikerült újraindítanunk, elkezdhetjük a kliens beállítását. Ha valamiért nem indult volna újra a szerver, az /var/log/messages állományból próbáljuk meg kideríteni az okát.
A naplókliens az a gép, amely egy helyi naplópéldány karbantartása mellett továbbküldni a naplózandó információkat egy naplószervernek.
Hasonlóan a naplószerverekhez, a klienseknek is teljesítenie bizonyos alapvető elvárásokat:
a syslogd(8) démon küldjön bizonyos típusú üzeneteket a naplószervernek, amely ezeket pedig képes legyen fogadni;
a hozzá tartozó tűzfal engedje át a forgalmat az 514-es UDP porton;
rendelkezzen mind közvetlen, mind pedig inverz DNS bejegyzéssel, vagy szerepeljenek az /etc/hosts állományban.
A kliens beállítása sokkal egyszerűbb a szerverhez képest. A kliensen adjuk hozzá a következő sorokat az /etc/rc.conf állományhoz:
syslogd_enabled="YES" syslogd_flags="-s -vv"
A szerver beállításaihoz
hasonlóan itt is engedélyezzük a
syslogd démont és
megnöveljük a naplózott üzenetek
részletességét. A -s
kapcsolóval pedig megakadályozzuk, hogy a kliens
más gépekről is hajlandó legyen
naplóüzeneteket elfogadni.
A funkciók a rendszernek azon részét írják le, amelyhez létrejön az adott üzenet. Tehát például az ftp és ipfw egyaránt ilyen funkciók. Amikor keletkezik egy naplóüzenet valamelyikükhöz, általában megjelenik a nevük. A funkciókhoz tartozik még egy prioritás vagy szint is, amellyel az adott üzenet fontosságát jelzik. Ezek közül a leggyakoribb a warning (mint “figyelmeztetés”) és info (mint “információ”). A használható funkciók és a hozzájuk tartozó prioritások teljes listáját a syslog(3) man oldalán olvashatjuk.
A naplószervert meg kell adnunk a kliens /etc/syslog.conf állományában. Itt a @ szimbólummal jelezzük, hogy az adatokat egy távoli szerverre szeretnénk továbbküldeni, valahogy így:
*.* @naploszerver.minta.com
Ezután a beállítás érvényesítéséhez újra kell indítanunk a syslogd démont:
# /etc/rc.d/syslogd restart
A logger(1) használatával próbáljuk ki a kliensről a aplóüzenetek hálózaton keresztüli küldését, és küldjünk valamit a syslogd démonnak:
# logger "Udvozlet a naplokliensrol"
A parancs kiadása után az üzenetnek mind a kliens, mind pedig a szerver /var/log/messages állományában meg kell jelennie.
Előfordulhat, hogy a naplószerver valamiért nem kapja meg rendesen az üzeneteket, ezért valamilyen módon meg kell keresnünk a hiba okát. Ez több minden lehet, de általában két leggyakoribb ok valamilyen hálózati kapcsolódási vagy DNS beállítási hiba. Ezek teszteléséhez gondoskodjunk róla, hogy a gépek kölcsönösen elérhetőek egymásról az /etc/rc.conf állományban megadott hálózati nevük szerint. Ha ezzel látszólag minden rendben van, akkor próbáljuk meg módosítani a syslogd_flags értékét az /etc/rc.conf állományban.
A most következő példában a /var/log/naplokliens.log teljesen üres, illetve a /var/log/messages állomány semmilyen hibára utaló okot nem tartalmaz. A hibakereséshez még több információt a syslogd_flags átírásával tudunk kérni:
syslogd_flags="-d -a naploklien.minta.com -vv"
Természetesen ne felejtsük el újraindítani a szervert:
# /etc/rc.d/syslogd restart
A démon újraindítása után közvetlenül az alábbiakhoz hasonló üzenetek árasztják el a képernyőt:
logmsg: pri 56, flags 4, from naploszerver.minta.com, msg syslogd: restart syslogd: restarted logmsg: pri 6, flags 4, from naploszerver.minta.com, msg syslogd: kernel boot file is /boot/kernel/kernel Logging to FILE /var/log/messages syslogd: kernel boot file is /boot/kernel/kernel cvthname(192.168.1.10) validate: dgram from IP 192.168.1.10, port 514, name naplokliens.minta.com; rejected in rule 0 due to name mismatch.
A diagnosztikai üzeneteket végigolvasva nyilvánvaló válik, hogy azért dobja el az üzeneteket a szerver, mert nem megfelelő a gép neve. Miután átnézzük a beállításainkat, felfedezhetünk az /etc/rc.conf állományban egy apró hibát:
syslogd_flags="-d -a naploklien.minta.com -vv"
Láthatjuk, hogy ebben a sorban a naplokliens névnek kellene szerepelni, nem pedig a naploklien névnek. Miután elvégeztük a szükséges javításokat, indítsuk újra a szervert és vizsgáljuk meg az eredményt:
# /etc/rc.d/syslogd restart logmsg: pri 56, flags 4, from naploszerver.minta.com, msg syslogd: restart syslogd: restarted logmsg: pri 6, flags 4, from naploszerver.minta.com, msg syslogd: kernel boot file is /boot/kernel/kernel syslogd: kernel boot file is /boot/kernel/kernel logmsg: pri 166, flags 17, from naploszerver.minta.com, msg Dec 10 20:55:02 <syslog.err> naploszerver.minta.com syslogd: exiting on signal 2 cvthname(192.168.1.10) validate: dgram from IP 192.168.1.10, port 514, name naplokliens.minta.com; accepted in rule 0. logmsg: pri 15, flags 0, from naplokliens.minta.com, msg Dec 11 02:01:28 pgj: Masodik teszt uzenet Logging to FILE /var/log/naplokliens.log Logging to FILE /var/log/messages
Itt már minden üzenet rendben megérkezett és a megfelelő állományokba került (a /var/log/messages a kliensen, és a /var/log/naplokliens.log a szerveren)).
Mint minden hálózati szolgáltatás esetén, ilyenkor is figyelembe kell vennünk bizonyos biztonsági megfontolásokat a tényleges konfiguráció kiépítése előtt. Olykor előfordulhat, hogy a naplók különböző kényes információkat tartalmaznak, mint például a helyi rendszeren futó szolgáltatások nevei, felhasználói nevek vagy egyéb konfigurációs adatok. A kliens és a szerver között hálózaton utazó adatok viszont se nem titkosítottak, se nem jelszóval védettek. Ha titkosítást szeretnénk használni, akkor javasoljuk például a security/stunnel portot, amellyel egy titkosított tunnelen keresztül tudunk adatokat küldeni a hálózaton.
A helyi rendszer biztonságának szavatolása is fontos lehet. A naplók sem a használat során, sem pedig a lecserélésük után nem kerülnek titkosításra. Emiatt a helyi rendszerhez hozzáférő felhasználók kedvükre nyerhetnek ki belőlük a rendszerünket érintő konfigurációs információkat. Ezért ilyenkor nagyon fontos, hogy mindig a megfelelő engedélyeket állítsuk be a naplókra. A newsyslog(8) segédprogrammal be tudjuk állítani a frissen létrehozott és a lecserélt naplók engedélyeit. Tehát könnyen megakadályozhatjuk a helyi felhasználók kíváncsiskodását, ha itt a naplók engedélyeit például a 600 kóddal adjuk meg.
Ha kérdése van a FreeBSD-vel kapcsolatban, a következő
címre írhat (angolul): <[email protected]>.
Ha ezzel a dokumentummal kapcsolatban van kérdése,
kérjük erre a címre írjon: <[email protected]>.