Hlavní navigace

Firewall pfSense: monitorování pomocí Zabbix a SNMP

Lukáš Malý

Nejprve si přiblížíme, jak instalovat a konfigurovat Zabbix agenta a Zabbix proxy a jak monitorovat prostředky firewallu, závěrem si ukážeme, jak nakonfigurovat SNMP a jak sledovat packet filter pomocí modulu bsnmp pf.

Monitoring

Sledovat stav firewallu je aktivita, kterou byl nucen řešit asi každý. Firewall pfSense obsahuje vlastní interní mechanismus sledování systému, provozu atd. menu Status / Minitoring, kde je k dispozici cela řada grafů. Máme tedy možnost nahlížet na historická data běhu routeru. pfSense si též sám  monitoruje dostupnost gateway. Pomocí dashboardu je pak možné vidět, zda např. gw nemá packet lost. Dnes si ale povíme o pokročilejších způsobech monitoringu pomoci Zabbix a SNMP.

Zabbix

Představovat si podrobně monitorovací systém Zabbix asi není nutné. V předchozích dílech jsem se o možnosti instalace agenta a proxy na pfSense již zmiňoval. Monitorovací systém Zabbix disponuje možností monitorovat hosta – router pomocí Zabbix agent checks – klientských klíčů skrze ZBX protokol, kterým komunikuje server s agentem na portu 10050, nebo aktivně agent se serverem na portu 10051.

Instalace Zabbix

Balíčky Zabbix nepatří mezi ty oficiálně podporované, ale komunitní podpora je dostatečná na to, aby byly balíčky bezproblémově použitelné. Instalaci provedeme v menu System / Package Manager / Available Packages, kde vyhledáme „Zabbix“ a poté klikneme na zelené tlačítko Install.

pfSense-Install-Zabbix

pfSense install Zabbix agent

Po instalaci agenta i proxy se v systému routeru objeví čtyři balíčky. Balíčky s prefixem pfSense-name upravují chování Zabbix agenta či proxy ve WebGUI, obsahují PHP kód – funkce, které upravují patřičné menu a XML soubory pro pfSense balíčkovací systém. Balíčky bez prefixu jsou oficiální balíčky FreeBSD, které jsou ve verzi, kterou pfSense maintainer použil. Zde může být jisté zpoždění oproti aktuálním verzím. V pfSense je Zabbix 3.0 LTS. Očekávat se dá upgrade na další LTS verzi.

Zabbix balíčky
pfSense-pkg-zabbix-agent-0.8.9_3 pfSense package zabbix-agent
pfSense-pkg-zabbix-proxy-0.9.0 pfSense package zabbix-proxy
zabbix3-agent-3.0.7 Enterprise-class open source distributed monitoring (agent) LTS
zabbix3-proxy-3.0.7 Enterprise-class open source distributed monitoring (proxy) LTS

Konfigurace Zabbix

Nastavení obou nových monitorovacích komponent se provádí v menu Services / Zabbix Agent LTS Agent nebo Services / Zabbix Proxy LTS Proxy. Konfigurace se provádí formou vyplnění formulářových prvků. Z nich posléze vznikne konfigurační soubor, který je validovaný a je možné jej použít pro start agenta nebo proxy.

pfSense configure Zabbix agent

pfSense configure Zabbix agent

Zabbix agent – nastavení

  • Zabbix Agent LTS Settings
  • TLS-RELATED Parameters

Zabbix proxy – nastavení

  • Zabbix Proxy LTS Settings
  • TLS-RELATED Parameters
  • SNMP Trap Monitoring
  • Advanced Features

Všechny vytvořené konfigurační soubory se nacházejí v adresáři /usr/local/etc/zabbix3/, kde jsou i předpřipravené soubory pro přepsání např. zabbix_agentd.cert a key pro šifrovanou komunikaci.

Pro funkční komunikaci mezi Zabbix serverem a Agentem na firewallu musíme zajistit povolení TCP na již zmiňované porty.

V rámci monitorovacího systému Zabbix můžeme použít výchozí instalační šablonu Template OS FreeBSD, která obsahuje cca 29 položek a navíc dvě Low Level Discovery, které automaticky rozkryjí filesystémy a síťové interface a zajistí jejich sledování. Šablona zajistí sledování pomocí klíčů, které jsou seskupovány do Aplikací (terminologie Zabbix – spíše skupina položek nějakého typu).

Zabbix FreeBSD Items- Latest Data

Zabbix FreeBSD Items- Latest Data

Aplikace Zabbix – skupina položek
  • CPU
  • Filesystems
  • General
  • Memory
  • Network interfaces
  • OS
  • Performance
  • Processes
  • Security
Seznam vybraných agent klíčů
Host name of zabbix_agentd running agent.hostname
Agent ping  agent.ping
Version of zabbix_agent(d) running agent.version
Maximum number of processes proc.num[,,run]
Interrupts per second system.cpu.intr
Context switches per second system.cpu.switches
CPU system time system.cpu.util[,system]
CPU user time system.cpu.util[,user]
System uptime system.uptime
Incoming network traffic on re0 net.if.in[re0]
Outgoing network traffic on re0 net.if.out[re0]
Free disk space on / vfs.fs.size[/,free]
Used disk space on / vfs.fs.size[/,used]

SNMP

Dalším protokolem pro získání informací o routeru je Simple Network Management Protocol. V pfSense je přítomen mini SNMP daemon – BSNMP. Tento malý daemon je implementace SNMP vyvíjená pod projektem FreeBSD a je jeho součástí (userland). BSNMP disponuje celou řadou modulů.

pfSense SNMP configure

pfSense SNMP configure

BSNMP moduly
MibII /usr/lib/snmp_mibII.so BEGEMOT-MIB2-MIB
Netgraph /usr/lib/snmp_netgraph.so BEGEMOT-NETGRAPH
PF /usr/lib/snmp_pf.so BEGEMOT-PF-MIB
Host Resources /usr/lib/snmp_hostres.so BEGEMOT-HOSTRES-MIB
UCD /usr/local/lib/snmp_ucd.so UCD-SNMP-MIB
Regex /usr/local/lib/snmp_regex.so counters from log files

Poslední dva moduly nejsou součástí BSNMP, ale existují jako porty. V systému je přítomen i modul WLAN, ale ten se nedá aktivovat pomocí WebGUI. Testoval jsem jej a manuálně přidal do konfigurace. Pak je možné získat OID i z BEGEMOT-WIRELESS-MIB. Za předpokladu, že máme v routeru nějakou WiFi kartu.

# snmpwalk -Os -c public -v 2c 192.168.42.1 BEGEMOT-WIRELESS-MIB::wlanInterfaceTable
wlanIfaceIndex."ath0_wlan0" = INTEGER: 8
wlanIfaceName."ath0_wlan0" = STRING: ath0_wlan0
wlanParentIfName."ath0_wlan0" = STRING: 
wlanIfaceOperatingMode."ath0_wlan0" = INTEGER: station(1)
wlanIfaceFlags."ath0_wlan0" = BITS: 00 
wlanIfaceBssid."ath0_wlan0" = STRING: 0:0:0:0:0:0
wlanIfaceLocalAddress."ath0_wlan0" = STRING: 0:0:0:0:0:0
wlanIfaceStatus."ath0_wlan0" = INTEGER: active(1)
wlanIfaceState."ath0_wlan0" = INTEGER: up(1)

Konfigurace SNMP

Nastavení SNMP se provádí v menu Services / SNMP, kde se formou formulářů nadefinují základní údaje, port, lokace, kontakt a komunita. Výsledný konfigurační soubor se nachází na cestě  /var/etc/snmpd.conf.

pfSense snmpd.conf

pfSense snmpd.conf

SNMP – nastavení

  • SNMP Daemon
  • SNMP Daemon Settings
  • SNMP Traps Enable
  • SNMP Modules
  • Interface Binding

MIB soubory v pfSense se nachází na obvyklé cestě. Pochází z FreeBSD a jednotlivé MIB soubory náleží patřičnému BSNMP modulu.

/usr/share/snmp/mibs: ls -1
BEGEMOT-BRIDGE-MIB.txt
BEGEMOT-HAST-MIB.txt
BEGEMOT-HOSTRES-MIB.txt
BEGEMOT-IP-MIB.txt
BEGEMOT-MIB.txt
BEGEMOT-MIB2-MIB.txt
BEGEMOT-NETGRAPH.txt
BEGEMOT-PF-MIB.txt
BEGEMOT-SNMPD.txt
BEGEMOT-WIRELESS-MIB.txt
BRIDGE-MIB.txt
FOKUS-MIB.txt
FREEBSD-MIB.txt
RSTP-MIB.txt

Tyto MIB soubory je vhodné instalovat na Zabbix serveru, abychom byly schopny používat jmenné OID.

Monitoring Packet Filter

Nejzajímavější pro monitorování pfSense pomoci BSNMP je modul PF, který nám poskytne velmi podrobné informace o samotném firewalu. Popis hodnot najdeme v MIB souboru BEGEMOT-PF-MIB. Z tohoto seznamu si již můžeme sestavit Zabbix šablonu sledující PF hodnoty jako např. velikost stavové tabulky, počty záznamů v pfTables atd.

Zabbix pfSense SNMP

Zabbix pfSense SNMP

Seznam SNMP PF objektů

pfStatus
pfCounter
pfStateTable
pfSrcNodes
pfLimits
pfTimeouts
pfLogInterface
pfInterfaces
pfTables
pfAltq
pfLabels

Syslog

Doposud jsme se zabývali operativním monitoringem. Dále je možné realizovat též bezpečnostní monitoring. Jehož zdrojem jsou události, které nastanou např. u OpenVPN při vzdáleném přihášení uživatelů, nebo u firewall pravidel, která mají logování zapnuté. pfSense umožňuje posílat pomocí syslog protokolu zprávy na logmanagement.  O nastavení syslogu jsem se zmínil v druhém díle tohoto seriálu.

Závěr

Zabbix agent i SNMP nám umožní získat velké množství informací o pfSense firewallu. Je nutné si uvědomit, že některé hodnoty poskytují oba mechanismy souběžně. Je jen na nás, co je pro nás zajímavé a co chceme sledovat kterým nástrojem. Obecně nás bude zajímat využití CPU a RAM, dále obsazenost disku. Určitě jsou na routeru zajímavé grafy přenosů síťových karet. Pokud chceme jít do detailu, můžeme sledovat přenosy na úrovni pfLabels, zde je vhodné využít Zabbix LLD a dynamicky sledovat vytvořená pravidla a jejich toky. Hodnoty MIB pro Packet Filter jsou velmi podrobně popsané a zdokumentované a díky BSNMP a modulu PF jsou všechny hodnoty plně k dispozici.

Našli jste v článku chybu?