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.
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.
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.
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).
Aplikace Zabbix – skupina položek
- CPU
- Filesystems
- General
- Memory
- Network interfaces
- OS
- Performance
- Processes
- Security
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ů.
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
.
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.
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.