Priebežné testovanie pravidiel firewallu v Zabbixe: čo má — a čo nemá — byť dostupné

Priebežné testovanie pravidiel firewallu v Zabbixe: čo má — a čo nemá — byť dostupné

Obsah

Segmentácia siete vyzerá na diagrame skvele: DMZ sa nedostane do VLAN s databázami, kancelárske stanice sa nedostanú k management rozhraniam serverov, zálohy sú dostupné iba zo zálohovacieho servera. Potom prejde rok. Niekto pridá dočasné pravidlo „any-any“, aby odladil problém. Migrácia firewallu prevedie politiky trochu inak. Nová VLAN vznikne skopírovaním starej.

Nikto pravidlá znova netestuje, takže nikto nevie, či segmentácia ešte existuje. Audítori (aj NIS2) sa pritom pýtajú čoraz častejšie práve na toto.

Myšlienka za týmto template je jednoduchá: zapíšte si očakávanú konektivitu a nechajte ju Zabbix testovať neustále — z miest, na ktorých záleží.

Template: custom-zabbix-templates/port-reachability — Zabbix 7.0+, používa štandardného Zabbix agenta.

Dva zoznamy, dva druhy upozornení

Template pripojíte k hostu so Zabbix agentom — serveru v danom segmente siete — a vyplníte dve makrá:

{$TCP_CHECKS}      = srv1:22,web01:443,db01:5432
{$NOT_TCP_CHECKS}  = db01:3306,mgmt-sw01:22,internal:8080
  • {$TCP_CHECKS} — porty, ktoré majú byť dostupné z tohto hosta. Ak niektorý prestane odpovedať, dostanete „Port … is unreachable (should be reachable)“. To je prerušená cesta k službe: služba spadla alebo ju odrezala zmena vo firewalle.
  • {$NOT_TCP_CHECKS} — porty, ktoré NEMAJÚ byť dostupné z tohto hosta. Ak niektorý začne odpovedať, dostanete „Port … is reachable (should NOT be reachable)“. To je únik zo segmentácie: pravidlo je príliš široké alebo bola služba vystavená tam, kde nemá byť.

Oba triggery majú závažnosť Average. Posledné údaje zobrazujú každú dvojicu s jej očakávaným stavom, takže to funguje aj ako živá dokumentácia toho, čo s čím komunikuje.

Ako to funguje

  1. Discovery pravidlo typu Script (JavaScript) rozparsuje obe CSV makrá na dvojice host:port, každú označenú ako reachable alebo not_reachable. Beží každú hodinu ({$TCP_DISCOVERY_INTERVAL}).
  2. Pre každú dvojicu sa vytvorí položka net.tcp.port[host,port]. Je to aktívna kontrola agenta: agent na monitorovanom hoste sám skúsi otvoriť TCP spojenie — test teda beží z daného segmentu siete, cez tie isté firewally, cez ktoré by išla skutočná prevádzka. Predvolený interval 5 minút ({$TCP_CHECK_INTERVAL}).
  3. LLD overrides zapnú pre každú dvojicu iba zodpovedajúci trigger: „should be reachable“ pre prvý zoznam, „should NOT be reachable“ pre druhý.

Zmeníte makro a pri ďalšom discovery sa kontroly automaticky pridajú alebo odstránia.

Nastavenie

  1. Uistite sa, že na hoste beží Zabbix agent so zapnutými aktívnymi kontrolami (ServerActive= smeruje na váš Zabbix server alebo proxy).
  2. Importujte template (Data collection → Templates → Import, template_port_reachability.yaml) a pripojte ho k hostu.
  3. Nastavte na hoste makrá {$TCP_CHECKS} a/alebo {$NOT_TCP_CHECKS}. Názvy hostov musia byť z agenta preložiteľné; fungujú aj IP adresy.
  4. Počkajte na discovery (najviac hodinu) alebo ho spustite ručne: otvorte discovery pravidlo a kliknite na Execute now.

Kam umiestniť sondy

Jeden template, veľa pozorovacích bodov. Praktické rozloženie:

Host-sonda Má byť dostupné NEMÁ byť dostupné
Webový server v DMZ API aplikačného servera, DNS, NTP porty databáz, AD/LDAP, management sieť
VLAN kancelárskych staníc (malé VM) súborový server, intranet, pošta SSH/RDP serverov, management hypervízorov a switchov, zálohovací server
Zálohovací server port agenta každého chráneného hosta —
Hosťovská Wi-Fi (Raspberry Pi) internet (napr. 1.1.1.1:443) všetko interné

Najcennejšia je časť NEMÁ byť. Premení vašu politiku segmentácie na testy — keď niečie „dočasné“ pravidlo otvorí databázu do DMZ, viete o tom do piatich minút, nie pri ďalšom audite.

Note

net.tcp.port overuje iba to, či sa dá otvoriť TCP spojenie. Netestuje UDP a nepovie vám, či aplikácia za portom funguje. Na zdravie služieb používajte webové scenáre alebo aplikačné templaty; tento používajte na dostupnosť a segmentáciu.

Zhrnutie

  • Dve makrá: porty, ktoré musia byť dostupné, a porty, ktoré nesmú.
  • Kontroly bežia z hosta s agentom, takže testujú skutočnú sieťovú cestu cez vaše firewally.
  • Upozornenia na prerušené cesty k službám aj na úniky zo segmentácie.
  • Umiestnite malé hosty-sondy do každého dôležitého segmentu a vaša politika firewallu sa bude testovať priebežne.

Navrhujete segmentáciu siete alebo spravujete firewally Fortinet? Ozvite sa nám.

comments powered by Disqus

Súvisiace články

gWebTail: tail -f v prehliadači pre tímy bez SSH prístupu

gWebTail: tail -f v prehliadači pre tímy bez SSH prístupu

Známa situácia: na testovací server sa nasadí nový build a vývojár sa pýta „môžeš mi poslať log?“. Niekto so SSH prístupom sa prihlási, spustí tail -f, skopíruje kus do chatu — a o desať minút znova.

Čítať ďalej
Monitoring HPE Managed PDU v Zabbixe: napájanie, zásuvky, ističe a senzory v racku

Monitoring HPE Managed PDU v Zabbixe: napájanie, zásuvky, ističe a senzory v racku

PDU je najmenej oslnivá krabica v racku — kým nevypadne istič a polovica serverov nepríde o jeden zdroj, alebo kým nový server nepreťaží fázu a celý rack nezhasne. Managed PDU toto všetko meria. Údaje len musia skončiť niekde, kam sa ľudia naozaj pozerajú.

Čítať ďalej
Monitoring stavu diskov na VMware ESXi pomocou smartctl

Monitoring stavu diskov na VMware ESXi pomocou smartctl

Samostatné ESXi hosty a malé vSphere klastre často bežia na lokálnych SATA alebo SAS diskoch — v homelabe, na pobočke alebo na zálohovacom serveri. Keď niektorý z týchto diskov začne zlyhávať, chcete sa to dozvedieť z monitoringu, nie z datastoru, ktorý sa zrazu prepne do režimu iba na čítanie.

Čítať ďalej