Segmentare una rete con OpenWrt: Ufficio, Gestione, SIP, DMZ e telecamere

Configurazione pratica di una rete segmentata con OpenWrt/firewall4: zone, policy default-drop, Ufficio, Gestione, SIP, DMZ, telecamere, regole UCI e diagnostica con fw4, nftables e tcpdump.

La segmentazione non consiste nel creare molte VLAN: consiste nel decidere chi può parlare con chi, su quali porte e perché. In questa guida costruiamo una topologia concreta con OpenWrt e firewall4/nftables.

Topologia

Ufficio   192.168.1.0/24
DMZ       172.16.0.0/24
SIP       10.0.10.0/24
Gestione  10.0.20.0/24
CCTV      10.0.30.0/24   # esempio

La policy di base è INPUT e FORWARD in DROP per le reti normali; Gestione è la zona privilegiata da cui amministrare le altre.

Fotografare la configurazione

uci export network
uci export firewall
fw4 print
nft list ruleset

fw4 print mostra ciò che OpenWrt genererà; nft list ruleset mostra ciò che è realmente caricato nel kernel.

Creare le zone

uci add firewall zone
uci set firewall.@zone[-1].name='Ufficio'
uci add_list firewall.@zone[-1].network='Ufficio'
uci set firewall.@zone[-1].input='DROP'
uci set firewall.@zone[-1].output='ACCEPT'
uci set firewall.@zone[-1].forward='DROP'

uci add firewall zone
uci set firewall.@zone[-1].name='Gestione'
uci add_list firewall.@zone[-1].network='Gestione'
uci set firewall.@zone[-1].input='ACCEPT'
uci set firewall.@zone[-1].output='ACCEPT'
uci set firewall.@zone[-1].forward='ACCEPT'

uci commit firewall
fw4 check
/etc/init.d/firewall restart

Regola puntuale invece di forwarding globale

config rule
        option name 'Ufficio-to-PBX-SIP-TLS'
        option src 'Ufficio'
        option dest 'Sip'
        option dest_ip '10.0.10.100'
        option proto 'tcp'
        option dest_port '5061'
        option target 'ACCEPT'

Non impostiamo src_port: la porta sorgente del client è normalmente effimera.

Servizi specifici in DMZ

config rule
        option name 'SIP-to-DNS'
        option src 'Sip'
        option dest 'Dmz'
        option dest_ip '172.16.0.100'
        option proto 'tcp udp'
        option dest_port '53'
        option target 'ACCEPT'

config rule
        option name 'SIP-to-Web'
        option src 'Sip'
        option dest 'Dmz'
        option dest_ip '172.16.0.200'
        option proto 'tcp'
        option dest_port '80 443'
        option target 'ACCEPT'

Telecamere

Le telecamere devono raggiungere il server di videosorveglianza e, se serve, DNS/NTP. Non hanno motivo di aprire sessioni verso PC e server della LAN.

Caso reale: telefono SIP e 504

Un telefono spostato dalla rete SIP alla rete Ufficio attraversava correttamente OpenWrt. Il REGISTER arrivava al PBX, ma il servizio rispondeva con errore. La causa era la policy INPUT del PBX, che non autorizzava la nuova sorgente.

# Sul router
tcpdump -ni any host 10.0.10.100 and port 5060

# Sul PBX
tcpdump -ni any 'port 5060 or port 5061'

uci show firewall | grep -E 'Ufficio|Sip|5060|5061'
fw4 print | grep -n -E '5060|5061'

Debug sistematico

uci export network
uci export firewall
fw4 check
fw4 print
nft list ruleset
tcpdump -ni any host 192.168.1.50
tcpdump -ni any host 10.0.10.100

Per ogni apertura dovrebbe esistere una frase comprensibile: “Ufficio può raggiungere il PBX su 5061 perché…”. Se non riusciamo più a spiegare la regola, è il momento di rivederla.