1 (edytowany przez IreuN 2025-02-26 15:32:50)

Temat: Firewall - jak to ustawić, żeby miało sens?

Dzień dobry,

Dziś pytanie z serii nie 'jak ustawić' tylko 'co ustawić' big_smile

  • W skrócie, do tej pory miałem wszystkie urządzenia w sieci LAN 192.168.1.xxx

  • Mam router Asus RT-AX53U (1 WAN + 3x LAN)

  • Uznałem, że dla bezpieczeństwa można by to podzielić.. tylko nie wiem do końca jak.

  • Switch przeznaczony został dla MiniPC (Proxmox: NginxProxyManager, HomeAssistant (dostępny z WAN po HTTPS), MQTT, AdGuard Home (dostępny z WAN po TLS), Docker) + PC + koordynator Zigbee

  • Na razie sieć WIfi 2.4Ghz przeznaczyłem dla wszystkich IoT-podobnych rzeczy (kontrolery na esphome, jeden kontroler na Tasmota, odkurzacz xiaomi), drukarka itd)

  • Sieć 5Ghz została dla telefonów, laptopów, chromecasta i streamera audio

Myślałem żeby tu jakieś VLANy wrzucić jeszcze, ale nie do końca rozumiem jak to zrobić żeby miało sens.

Na razie zrobiłem:

  • dodałem nowy interfejs br-lan.10 (.10.xxx), przypisałem go do Sieci Wifi 2.4Ghz, i chyba (?) włączyłem na nim VLAN 10 (włączone filtrowanie VLAN, dodany lokalny VLAN 10)

  • br-lan (MiniPC, PC, koord. ZigBee) ustawiłem VLAN 1 (nie-lokalny, wszystkie porty switcha untagged)

  • dodałem nową strefę firewall o nazwie IoT

root@OpenWrt:~# cat /etc/config/network

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'xxxx:xxxx:xxxx::/48'
        option packet_steering '1'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'lan1'
        list ports 'lan2'
        list ports 'lan3'
        option ipv6 '0'
        option vlan_filtering '0'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6assign '60'
        list dns 'xxx'

config interface 'wan'
        option device 'wan'
        option proto 'dhcp'
        option peerdns '0'
        list dns '192.168.1.xxx' # AdGuard Home

config device
        option type 'bridge'
        option name 'br-lan.10'
        option ipv6 '0'
        option bridge_empty '1'
        option vlan_filtering '0'

config interface 'IoT'
        option proto 'static'
        option device 'br-lan.10'
        option ipaddr '192.168.10.1'
        option netmask '255.255.255.0'
        option type 'bridge'

config bridge-vlan
        option device 'br-lan'
        option vlan '1'
        option local '0'
        list ports 'lan1'
        list ports 'lan2'
        list ports 'lan3'

config device
        option name 'wan'
        option ipv6 '0'

config device
        option name 'eth0'
        option ipv6 '0'

config bridge-vlan
        option device 'br-lan.10'
        option vlan '10'

root@OpenWrt:~# cat /etc/config/firewall

config defaults
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option synflood_protect '1'

config zone
        option name 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list network 'lan'

config zone
        option name 'wan'
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        option mtu_fix '1'
        list network 'wan'

config forwarding
        option src 'lan'
        option dest 'wan'

config rule
        option name 'Allow-DHCP-Renew'
        option src 'wan'
        option proto 'udp'
        option dest_port '68'
        option target 'ACCEPT'
        option family 'ipv4'

config rule
        option name 'Allow-Ping'
        option src 'wan'
        option proto 'icmp'
        option icmp_type 'echo-request'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option name 'Allow-IGMP'
        option src 'wan'
        option proto 'igmp'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option name 'Allow-DHCPv6'
        option src 'wan'
        option proto 'udp'
        option dest_port '546'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-MLD'
        option src 'wan'
        option proto 'icmp'
        option src_ip 'fe80::/10'
        list icmp_type '130/0'
        list icmp_type '131/0'
        list icmp_type '132/0'
        list icmp_type '143/0'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Input'
        option src 'wan'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        list icmp_type 'router-solicitation'
        list icmp_type 'neighbour-solicitation'
        list icmp_type 'router-advertisement'
        list icmp_type 'neighbour-advertisement'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Forward'
        option src 'wan'
        option dest '*'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-IPSec-ESP'
        option src 'wan'
        option dest 'lan'
        option proto 'esp'
        option target 'ACCEPT'

config rule
        option name 'Allow-ISAKMP'
        option src 'wan'
        option dest 'lan'
        option dest_port '500'
        option proto 'udp'
        option target 'ACCEPT'

config redirect
        option dest 'lan'
        option target 'DNAT'
        option name 'HomeAssistant'
        option src 'wan'
        option src_dport '8123'
        option dest_ip '192.168.1.xxx'
        option dest_port '8123'

config redirect
        option dest 'lan'
        option target 'DNAT'
        option name 'AdGuardDNS-TLS'
        option src 'wan'
        option src_dport '853'
        option dest_ip '192.168.1.xxx'
        option dest_port '853'

config redirect
        option dest 'lan'
        option target 'DNAT'
        option name 'nginx'
        option src 'wan'
        option src_dport '80'
        option dest_ip '192.168.1.xxx'
        option dest_port '80'

config redirect
        option dest 'lan'
        option target 'DNAT'
        option name 'nginx'
        option src 'wan'
        option src_dport '443'
        option dest_ip '192.168.1.xxx'
        option dest_port '443'

config zone
        option name 'IoT'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'REJECT'
        list network 'IoT'
        list device 'br-lan.10'

config forwarding
        option src 'lan'
        option dest 'IoT'

config rule
        option src 'IoT'
        list src_ip '192.168.10.xxx'  #Tasmota
        option dest 'lan'
        list dest_ip '192.168.1.xxx' #Mosquitto
        option target 'ACCEPT'
        option name 'TasmotaMQTT'

Tak z listy potrzeb to tak:

  • Chromacast potrzebuje internetu i dostępu do Jellyfin(który dopiero będzie)

  • Streamer potrzebuje tylko dostępu do internetu + dostępu z HomeAssistanta i telefonów (sterowanie nim)

  • Do kontrolerów ESPHome powinien móc dobić się HomeAssistant

  • Odkurzacze Xiaomi potrzebują dostępu do internetu + dostępu z HomeAssistanta

  • Koordynator Zigbee + kontroler na Tasmota potrzebują dostępu tylko do MQTT (+ ewentualnie chciałbym się do jego interfejsu web dostać z PC)

  • Do drukarki powinien być dostęp z telefonów i PC

  • Wszystko powinno móc dobić się do AdGuarda

No i teraz pytanie.. czy to co ja robię ma sens? Póki co wydaje się, że działa, ale czy coś zabezpieczone zostało to nie jestem przekonany. Co dalej mogę tu zrobić?

2

Odp: Firewall - jak to ustawić, żeby miało sens?

Nie wygląda to źle, więc używaj tak jak jest.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Firewall - jak to ustawić, żeby miało sens?

Jednak potrzebuję tłumaczenia trochę :x

Aktualny config wygląda tak:

 cat /etc/config/network

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd41:709f:312a::/48'
        option packet_steering '1'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'lan1'
        list ports 'lan2'
        list ports 'lan3'
        option ipv6 '0'

config interface 'lan'
        option device 'br-lan.10'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option ip6assign '60'
        list dns '94.140.14.49'

config interface 'wan'
        option device 'wan'
        option proto 'dhcp'
        option peerdns '0'
        list dns '192.168.1.154'

config interface 'IoT'
        option proto 'static'
        option ipaddr '192.168.10.1'
        option netmask '255.255.255.0'
        option type 'bridge'
        option device 'br-lan.20'

config bridge-vlan
        option device 'br-lan'
        option vlan '10'
        list ports 'lan2:u*'
        list ports 'lan3:u*'

config device
        option name 'wan'
        option ipv6 '0'

config device
        option name 'eth0'
        option ipv6 '0'

config bridge-vlan
        option device 'br-lan'
        option vlan '20'
        list ports 'lan1:u*'
        list ports 'lan3:t'
cat /etc/config/firewall

config defaults
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option synflood_protect '1'

config zone
        option name 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list network 'lan'
        list device 'br-lan.10'

config zone
        option name 'wan'
        option input 'REJECT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        option mtu_fix '1'
        list network 'wan'

config zone
        option name 'IoT'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'REJECT'
        list network 'IoT'
        list device 'br-lan.20'

config forwarding
        option src 'lan'
        option dest 'wan'

config rule
        option name 'Allow-DHCP-Renew'
        option src 'wan'
        option proto 'udp'
        option dest_port '68'
        option target 'ACCEPT'
        option family 'ipv4'

config rule
        option name 'Allow-Ping'
        option src 'wan'
        option proto 'icmp'
        option icmp_type 'echo-request'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option name 'Allow-IGMP'
        option src 'wan'
        option proto 'igmp'
        option family 'ipv4'
        option target 'ACCEPT'

config rule
        option name 'Allow-DHCPv6'
        option src 'wan'
        option proto 'udp'
        option dest_port '546'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-MLD'
        option src 'wan'
        option proto 'icmp'
        option src_ip 'fe80::/10'
        list icmp_type '130/0'
        list icmp_type '131/0'
        list icmp_type '132/0'
        list icmp_type '143/0'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Input'
        option src 'wan'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        list icmp_type 'router-solicitation'
        list icmp_type 'neighbour-solicitation'
        list icmp_type 'router-advertisement'
        list icmp_type 'neighbour-advertisement'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-ICMPv6-Forward'
        option src 'wan'
        option dest '*'
        option proto 'icmp'
        list icmp_type 'echo-request'
        list icmp_type 'echo-reply'
        list icmp_type 'destination-unreachable'
        list icmp_type 'packet-too-big'
        list icmp_type 'time-exceeded'
        list icmp_type 'bad-header'
        list icmp_type 'unknown-header-type'
        option limit '1000/sec'
        option family 'ipv6'
        option target 'ACCEPT'

config rule
        option name 'Allow-IPSec-ESP'
        option src 'wan'
        option dest 'lan'
        option proto 'esp'
        option target 'ACCEPT'

config rule
        option name 'Allow-ISAKMP'
        option src 'wan'
        option dest 'lan'
        option dest_port '500'
        option proto 'udp'
        option target 'ACCEPT'

config redirect
        option dest 'lan'
        option target 'DNAT'
        option name 'AdGuardDNS-TLS'
        option src 'wan'
        option src_dport '853'
        option dest_ip '192.168.1.154'
        option dest_port '853'

config redirect
        option dest 'lan'
        option target 'DNAT'
        option name 'qBittorrentPC'
        option src 'wan'
        option src_dport '9243'
        option dest_ip '192.168.1.2'
        option dest_port '9243'

config redirect
        option dest 'lan'
        option target 'DNAT'
        option name 'nginx'
        option src 'wan'
        option src_dport '80'
        option dest_ip '192.168.1.199'
        option dest_port '80'

config redirect
        option dest 'lan'
        option target 'DNAT'
        option name 'nginx'
        option src 'wan'
        option src_dport '443'
        option dest_ip '192.168.1.199'
        option dest_port '443'

config rule
        option src 'IoT'
        option dest 'lan'
        list dest_ip '192.168.1.144'
        option target 'ACCEPT'
        option name 'Tasmota->MQTT'
        list src_ip '192.168.10.204'
        list src_ip '192.168.10.20'

config rule
        option dest 'wan'
        option target 'ACCEPT'
        option src 'IoT'
        option name 'IoT->WAN Exceptions'
        list src_ip '192.168.10.240'
        list src_ip '192.168.10.193'
        list src_ip '192.168.10.20'

config rule
        option dest 'lan'
        option target 'ACCEPT'
        option src 'IoT'
        option name 'IoT->WAN Exceptions (AdGuard)'
        list src_ip '192.168.10.240'
        list src_ip '192.168.10.193'
        list src_ip '192.168.10.20'
        list dest_ip '192.168.1.154'

config rule
        list src_ip '192.168.10.240'
        list src_ip '192.168.10.193'
        option dest 'IoT'
        option target 'ACCEPT'
        option src 'IoT'
        option name 'Odkurzacze'
        list dest_ip '192.168.10.20'

config rule
        option src 'lan'
        option dest 'IoT'
        option target 'ACCEPT'
        option name 'PC,HA->IoT'
        list src_ip '192.168.1.2'
        list src_ip '192.168.10.20'

config rule
        option name 'Zigbee2Mqtt->SLZB'
        option src 'lan'
        list src_ip '192.168.1.191'
        option dest 'IoT'
        list dest_ip '192.168.10.179'
        option target 'ACCEPT'

config rule
        option src 'lan'
        list src_ip '192.168.1.199'
        option dest 'IoT'
        list dest_ip '192.168.10.20'
        option target 'ACCEPT'
        option name 'Nginx->HA'

config rule
        option name 'AdGuard'
        option dest 'lan'
        list dest_ip '192.168.1.154'
        option target 'ACCEPT'
        option src 'IoT'
        list src_ip '192.168.10.20'

Czyli chyba trochę lepiej te VLANy ustawiłem, problemy zaczęły się, gdy chciałem HomeAssistant dać do VLAN 20 (IoT)
Tutaj kilku rzeczy nie rozumiem..
Home Assistant stoi sobie jako LXC na proxmox. W Proxmox ustawiłem bridge na VLAN aware https://i.imgur.com/SetwFLX.png
W kontenerze z HomeAssistant ustawiłem VLAN 20 i statyczne IP z tej sieci https://i.imgur.com/kqj05nC.png
A w br-lan ustawiłem VLAN tak: https://i.imgur.com/2ZrbXFz.png
Chciałem zezwolić mu na dostęp do internetu, stąd wstawiłem regułę:
https://i.imgur.com/RkC24ge.png

Jednak ping 8.8.8.8 z wnętrza tego kontenera zwraca:

root@homeassistant-core:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 192.168.10.1 icmp_seq=1 Destination Port Unreachable
From 192.168.10.1 icmp_seq=2 Destination Port Unreachable
From 192.168.10.1 icmp_seq=3 Destination Port Unreachable

Dlaczego tak? Przecież jest reguła która na taki ruch powinna zezwolić?
Właściwie jedyne co pozwala na PING to to:

uci add firewall forwarding # =cfg1bad58
uci set firewall.@forwarding[-1].src='IoT'
uci set firewall.@forwarding[-1].dest='wan'

Ale to chyba zezwala na cały ruch z IoT->WAN? A ja bym chciał na taki ruch zezwolić tylko w ramach wyjątku dla danego adresu IP

4

Odp: Firewall - jak to ustawić, żeby miało sens?

To ostatnie co piszesz - wynikało by że jednak nie wychodzi z tych adresów co podałeś. Daj tam 192.168.10.1 i zobacz czy zadziała.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: Firewall - jak to ustawić, żeby miało sens?

No ni cholery nie rozumiem co tu się dzieje - po jakieś godzinie albo nawet nie - wszystko zaczęło działać tak jak powinno, samo z siebie, na takich ustawieniach jakie od początku próbowałem. Magia!

6

Odp: Firewall - jak to ustawić, żeby miało sens?

Do czego potrzebujesz nietagowanego vlan id 10 na lan3?

Niektóre routery nie obsługują takiej konfiguracji gdzie na jednym porcie jest tagowany i nietagowany vlan, pamiętam, że kiedyś szukałem co zrobiłem na firewallu, gdyż nie otrzymywałem adresu przez DHCP mimo, że stosowna reguła była. Jak ustawiłem obydwa vlan-y na tagowane i na podłączonym PC dodałem wszystkie interfejsy z odpowiednimi vlan-ami, wszystko zaczęło działać.

7

Odp: Firewall - jak to ustawić, żeby miało sens?

Ustawiłem tak, bo jak dałem na tagowany to traciłem dostęp do dashboardu proxmox..

8 (edytowany przez IreuN 2025-03-02 18:55:43)

Odp: Firewall - jak to ustawić, żeby miało sens?

Zagadka rozwiązana - wszystko działało tak jak powinno, ping nie działał przez to, że w regule zabrakło ICMP smile