Vyhledávání na webu

Nastavte centralizovaný server protokolů s Rsyslog v CentOS/RHEL 8


Aby správci systému rozpoznali nebo analyzovali problémy na serveru CentOS 8 nebo RHEL 8, je důležité znát a zobrazovat události, ke kterým na serveru došlo v konkrétní časové období ze souborů protokolu nalezených v adresáři /var/log v systému.

Systém Syslog (System Logging Protocol) na serveru může fungovat jako centrální bod sledování protokolů v síti, kde jsou všechny servery, síťová zařízení, přepínače, směrovače a interní služby, které vytvářet logy, ať už související s konkrétním interním problémem, nebo jen informativní zprávy mohou odesílat své logy.

Na serveru CentOS/RHEL 8 je démon Rsyslog nejdůležitějším protokolovým serverem, který je ve výchozím nastavení předinstalován, následovaný Systemd Journal Daemon (žurnál).

Rsyslog je nástroj s otevřeným zdrojovým kódem, který byl vyvinut jako služba architektury klient/server a může dosáhnout obou rolí nezávisle. Může běžet jako server a shromažďovat všechny protokoly přenášené jinými zařízeními po 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 vzdálený Syslog server.

Požadavky

  1. Instalace „CentOS 8.0“ se snímky obrazovky
  2. Instalace RHEL 8 se snímky obrazovky

Chcete-li nastavit centralizovaný server protokolů na serveru CentOS/RHEL 8, musíte zkontrolovat a potvrdit, že oddíl /var má dostatek místa (minimálně několik GB ) k uložení všech zaznamenaných souborů protokolu v systému, které odesílají ostatní zařízení v síti. Doporučuji vám mít samostatný disk (LVM nebo RAID) pro připojení adresáře /var/log/.

Jak nakonfigurovat server Rsyslog v CentOS/RHEL 8

1. Jak jsem řekl, služba Rsyslog je nainstalována a spuštěna automaticky na serveru CentOS/RHEL 8. Chcete-li ověřit, že démon běží v systému, spusťte následující příkaz.

systemctl status rsyslog.service

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

systemctl start rsyslog.service

2. Pokud obslužný program Rsyslog není ve výchozím nastavení nainstalován v systému, který plánujete používat jako server centralizovaného protokolování, spusťte následující příkaz dnf k instalaci balíčku rsyslog a spustit démona.


dnf install rsyslog
systemctl start rsyslog.service

3. Po instalaci nástroje Rsyslog můžete nyní nakonfigurovat rsyslog jako centralizovaný protokolovací server otevřením hlavního konfiguračního souboru /etc/rsyslog.conf , abyste mohli přijímat zprávy protokolu pro externí klienty.

vi /etc/rsyslog.conf

V konfiguračním souboru /etc/rsyslog.conf vyhledejte a odkomentujte následující řádky, abyste udělili příjem přenosu UDP serveru Rsyslog přes port 514 . Rsyslog používá pro přenos protokolu standardní protokol UDP.

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

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

Pokud však chcete pro příjem protokolu použít protokol TCP, musíte najít a odkomentovat následující řádky v konfiguračním souboru /etc/rsyslog.conf, abyste mohli nakonfigurovat Rsyslog démona k navázání a poslechu soketu TCP na portu 514.

module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

5. Nyní vytvořte novou šablonu pro příjem vzdálených zpráv, protože tato šablona povede místní server Rsyslog, kam se mají ukládat přijaté zprávy odeslané klienty sítě Syslog.


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

Direktiva $template RemoteLogs vede démona Rsyslog ke shromažďování a zápisu všech přenesených zpráv protokolu do odlišných souborů na základě jména klienta a aplikace vzdáleného klienta, která zprávy vytvořila na základě nastíněných vlastností přidaných v konfigurace šablony: %HOSTNAME% a %PROGRAMNAME%.

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

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

RemoteLogs je libovolný název daný této direktivě šablony. Můžete použít libovolný název, který se nejlépe hodí pro vaši šablonu.

Chcete-li nakonfigurovat složitější šablony Rsyslog, přečtěte si příručku ke konfiguračnímu souboru Rsyslog spuštěním příkazu man rsyslog.conf nebo si prohlédněte online dokumentaci Rsyslog.

man rsyslog.conf

6. Po provedení výše uvedených změn konfigurace můžete restartovat démona Rsyslog a použít poslední změny spuštěním následujícího příkazu.

service rsyslog restart

7. Jakmile restartujete server Rsyslog, měl by nyní fungovat jako centralizovaný server protokolů a zaznamenávat zprávy od klientů Syslog. Chcete-li potvrdit síťové sokety Rsyslog, spusťte příkaz netstat a pomocí nástroje grep filtrujte řetězec rsyslog.

netstat -tulpn | grep rsyslog 

Pokud příkaz netstat není v systému CentOS 8 nainstalován, můžete jej nainstalovat pomocí následujícího příkazu.


dnf whatprovides netstat
dnf install net-tools

8. Pokud máte v CentOS/RHEL 8 aktivní SELinux, spusťte následující příkaz, abyste povolili provoz rsyslog v závislosti na typu síťového soketu.

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

Pokud se příkaz semanage nenainstaluje na CentOS 8, můžete jej nainstalovat pomocí následujícího příkazu.


dnf whatprovides semanage
dnf install policycoreutils-python-utils

9. Pokud máte v systému aktivní bránu firewall, spusťte následující příkaz, abyste přidali potřebná pravidla pro povolení provozu rsyslog na portech v bráně Firewalld.


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

Můžete také omezit příchozí připojení na portu 514 z povolených rozsahů IP, jak je znázorněno.


firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="udp" accept'
firewall-cmd --reload

To je vše! Rsyslog je nyní nakonfigurován jako centralizovaný server protokolů a může shromažďovat protokoly od vzdálených klientů. V příštím článku se podíváme, jak nakonfigurovat klienta Rsyslog na serveru CentOS/RHEL 8.