Vyhledávání na webu

Jak vytvořit centralizovaný server protokolů s Rsyslog v CentOS/RHEL 7


Aby správce systému identifikoval nebo řešil problém na serverovém systému CentOS 7 nebo RHEL 7, musí znát a zobrazit události, které se v systému staly v konkrétním časové období ze souborů protokolu uložených v systému v adresáři /var/log.

Server syslog na počítači se systémem Linux může fungovat jako centrální monitorovací bod v síti, kde všechny servery, síťová zařízení, směrovače, přepínače a většina jejich interních služeb, které generují protokoly, ať už související s konkrétním interním problémem nebo pouze informativní zprávy, mohou posílat své protokoly. .

V systému CentOS/RHEL 7 je hlavním předinstalovaným logovacím serverem Rsyslog démon, po němž následuje Systemd Journal Daemon (journald).

Server Rsyslog je sestaven jako služba architektury klient/server a může dosáhnout obou rolí současně. Může běžet jako server a shromažďovat všechny protokoly přenášené jinými zařízeními v síti nebo může běžet jako klient odesíláním všech interních systémových událostí zaznamenaných na server syslog vzdáleného koncového bodu.

Když je rsyslog nakonfigurován jako klient, mohou být protokoly uloženy lokálně v souborech na místním souborovém systému nebo mohou být odeslány vzdáleně, místo aby je zapisovaly do souborů uložených na počítači nebo zapisovaly soubory protokolu událostí lokálně a posílaly je na vzdálený server syslog na adrese stejný čas.

Syslog server provozuje jakoukoli zprávu protokolu pomocí následujícího schématu:

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

A. Data zařízení nebo typu představují interní systémové procesy, které generují zprávy. V Linuxu jsou interní procesy (zařízení), které generují protokoly, standardizovány následovně:

  • auth = zprávy generované procesy ověřování (přihlášení).
  • cron= zprávy generované naplánovanými procesy (crontab).
  • démon = zprávy generované démony (interní služby).
  • kernel = zprávy generované samotným jádrem Linuxu.
  • mail = zprávy generované poštovním serverem.
  • syslog = zprávy generované samotným démonem rsyslog.
  • lpr = zprávy generované místními tiskárnami nebo tiskovým serverem.
  • local0 – local7 = vlastní zprávy definované správcem (local7 je obvykle přiřazeno pro Cisco nebo Windows).

B. Úrovně priority (závažnosti) jsou také standardizovány. Každé prioritě je přiřazena standardní zkratka a číslo, jak je popsáno níže. 7. priorita je vyšší úroveň ze všech.

  • nouzový = nouzový stav – 0
  • upozornění = Upozornění – 1
  • chyba = Chyby – 3
  • varovat = Varování – 4
  • upozornění = Oznámení – 5
  • informace = Informace – 6
  • ladění = Ladění – 7

Speciální klíčová slova Rsyslog:

  • *=všechna zařízení nebo priority
  • none=zařízení nemají žádné dané priority Např.: mail.none

C. Třetí část schématu syslog představuje směrnice destination . Démon Rsyslog může posílat zprávy protokolu, které mají být zapsány do souboru v místním souborovém systému (většinou do souboru v adresáři /var/log/), nebo mohou být přeneseny do jiného místního procesu nebo odeslány do lokální uživatelskou konzoli (na stdout), nebo poslat zprávu na vzdálený syslog server přes TCP/UDP protokol, nebo dokonce zprávu zahodit do /dev/null.

Abychom mohli nakonfigurovat CentOS/RHEL 7 jako centrální server protokolů, musíme nejprve zkontrolovat a zajistit, že oddíl /var , kam se zaznamenávají všechny soubory protokolu, je dostatečně velký ( minimálně několik GB), abyste mohli ukládat všechny soubory protokolu, které budou odeslány jinými zařízeními. K připojení adresáře /var/log/ je dobré použít samostatný disk (LVM, RAID).

Požadavky

  1. Postup instalace CentOS 7.3
  2. RHEL 7.3 Postup instalace

Jak nakonfigurovat Rsyslog na serveru CentOS/RHEL 7

1. Ve výchozím nastavení je služba Rsyslog nainstalována automaticky a měla by být spuštěna v CentOS/RHEL 7. Chcete-li zkontrolovat, zda je démon v systému spuštěn, zadejte následující příkaz s právy root.

systemctl status rsyslog.service

Pokud služba ve výchozím nastavení neběží, spusťte níže uvedený příkaz a spusťte démona rsyslog.

systemctl start rsyslog.service

2. Pokud balíček rsyslog není nainstalován v systému, který hodláte používat jako server centralizovaného protokolování, nainstalujte balíček rsyslog zadáním následujícího příkazu.

yum install rsyslog

3. Prvním krokem, který musíme v systému udělat, abychom nakonfigurovali démona rsyslog jako centralizovaný server protokolů, aby mohl přijímat zprávy protokolu pro externí klienty, je otevřít a upravit pomocí oblíbený textový editor, hlavní konfigurační soubor z /etc/rsyslog.conf, jak je uvedeno v níže uvedeném úryvku.

vi /etc/rsyslog.conf

V hlavním konfiguračním souboru rsyslog vyhledejte a odkomentujte následující řádky (odstraňte znak hashtag # na začátku řádku), abyste zajistili příjem přenosu UDP na server Rsyslog prostřednictvím 514 přístav. UDP je standardní protokol používaný pro přenos protokolů pomocí Rsyslog.

$ModLoad imudp 
$UDPServerRun 514

4. Protokol UDP nemá režii TCP, díky čemuž je přenos dat rychlejší než protokol TCP. Na druhou stranu protokol UDP nezaručuje spolehlivost přenášených dat.

Pokud však potřebujete pro příjem protokolu použít protokol TCP, musíte prohledat a odkomentovat následující řádky ze souboru /etc/rsyslog.conf, abyste nakonfigurovali démona Rsyslog tak, aby svázal a naslouchal TCP soketu na 514 přístav. Naslouchací sokety TCP a UDP pro příjem lze konfigurovat na serveru Rsyslog současně.

$ModLoad imtcp 
$InputTCPServerRun 514 

5. V dalším kroku soubor ještě nezavírejte, vytvořte novou šablonu, která se bude používat pro příjem vzdálených zpráv. Tato šablona dá pokyn místnímu serveru Rsyslog, kam má uložit přijaté zprávy odeslané klienty sítě syslog. Šablona musí být přidána před začátkem bloku GLOBAL DIRECTIVES, jak je znázorněno na níže uvedeném úryvku.

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

Výše uvedená směrnice $template RemoteLogs přikazuje démonu Rsyslog shromažďovat a zapisovat všechny přijaté zprávy protokolu do odlišných souborů na základě názvu klientského počítače a zařízení vzdáleného klienta (aplikace), které zprávy vygenerovalo na základě definované vlastnosti prezentuje v konfiguraci šablony: %HOSTNAME% a %PROGRAMNAME%.

Všechny tyto soubory protokolu budou zapsány do místního souborového systému do vyhrazeného souboru pojmenovaného podle názvu hostitele klientského počítače a uloženy v adresáři /var/log/.

Pravidlo přesměrování & ~ dává pokyn místnímu serveru Rsyslog, aby přestal dále zpracovávat přijatou zprávu protokolu a zprávy zahodil (nezapisoval je do interních souborů protokolu).

Název RemoteLogs je libovolný název přidělený této direktivě šablony. Můžete použít jakýkoli název, který se vám nejlépe hodí pro vaši šablonu.

Chcete-li zapsat všechny přijaté zprávy od klientů do jednoho souboru protokolu pojmenovaného podle IP adresy vzdáleného klienta, bez filtrování zařízení, které zprávu vygenerovalo, použijte níže uvedený úryvek.

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

Další příklad šablony, kde budou všechny zprávy s příznakem auth zařízení protokolovány do šablony s názvem „TmplAuth“.

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

Níže je výňatek z definice šablony ze serveru Rsyslog 7:

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

Výše uvedený úryvek šablony lze také napsat jako:

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

Chcete-li napsat složité šablony Rsyslog, přečtěte si příručku konfiguračního souboru Rsyslog zadáním příkazu man rsyslog.conf nebo si prostudujte online dokumentaci Rsyslog.

6. Poté, co jste upravili konfigurační soubor Rsyslog pomocí vlastních nastavení, jak je vysvětleno výše, restartujte démona Rsyslog, abyste mohli použít změny, zadáním následujícího příkazu:

service rsyslog restart

7. Nyní by měl být server Rsyslog nakonfigurován tak, aby fungoval jako centralizovaný protokolový server a zaznamenával zprávy od klientů syslog. Chcete-li ověřit síťové sokety Rsyslog, spusťte příkaz netstat s právy root a pomocí grep filtrujte řetězec rsyslog.

netstat -tulpn | grep rsyslog 

8. Pokud máte povolen SELinux v CentOS/RHEL 7, zadejte následující příkaz pro konfiguraci SELinuxu tak, aby povolil provoz rsyslog v závislosti na typu síťového soketu.

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

9. Pokud je brána firewall povolená a aktivní, spusťte níže uvedený příkaz, abyste přidali nezbytná pravidla pro otevírání portů rsyslog v bráně Firewalld.

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

To je vše! Rsyslog je nyní nakonfigurován v režimu serveru a může centralizovat protokoly ze vzdálených klientů. V dalším článku uvidíme, jak nakonfigurovat klienta Rsyslog na serveru CentOS/RHEL 7.

Pomocí serveru Rsyslog jako centrálního monitorovacího bodu pro vzdálené protokolové zprávy můžete prohlížet soubory protokolů a sledovat zdravotní stav klientů nebo snadněji ladit problémy klienta, když systémy havarují nebo jsou pod nějakým druhem útoku.