iptables -P FORWARD DROP k čemu dobré na routeru

Hamparle

  • ****
  • 360
  • junior developer ucho
    • Zobrazit profil
    • E-mail
iptables -P FORWARD DROP k čemu dobré na routeru
« kdy: 30. 08. 2020, 00:59:27 »
Nevím, proč se neuložil příspěvek, který jsem odesílal, ale pokusím zrychleně popsat znova.
Zjednodušeně, v návodech pro zprovoznění brány do internetu s funkcí nat  na železe s linuxuem nebo openwrt stěžejní kroky jsou sysctl net.ipv4.ip_forward=1 a  iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE.

Samozřejmě  v kompletním návodu je i zprovoznění DHCP, DNS (jak pro vnitřní síťku  za NATem tak i pro WAN rozhraní). a v neposlední řadě nastavení pravidel firewallu. To je kvůli čemu se ptám.

Pravidlo pro povolení provozu ven jsou:
Kód: [Vybrat]
iptables -A FORWARD -i eth0 -o wlan0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
Nicméně nejsou potřeba, když je default policy ACCEPT (pro forward ). Zároveň se ale radí dát
Kód: [Vybrat]
iptables -P FORWARD DROP. A to proč?
Z jakých dobrých důvodů se tohle dělá? Co hrozí, když zustane accept? (INPUT a output -t filter samotného stroje neřeším nyní)

Namátkou:
- hrozí že se do vnitřní sítě za natem "může dostat" někdo nepovolaný (čímž myslím 2 případy: třeba kohokoli z globálního internetu,  a nebo někoho kdo by uhodl IP rozsah sítě za NATem a vydávával se za zařízení z tého sítě na WAN portu), buď že vůbec se podaří  poslat konkrétnímu zařízení za NATem a nebo i dokonce že toto zařízení na něj odpoví a odpověď se k "útočníkovi dostane"
- opačná situace, že zařízení za NATem mohou komunikovat(tedy ony iniciují komunikaci, v odstavci výše to byl někdo zvenčí) se zařízeními v  jiné lokální síti v WAN (tímto laickým popisem myslím, že za NATem není "ještě internet", ale další jiná síť, ve které až leží brána do internetu, ) a povídat si zařízeními v této síti.  Když už jsem to napsal tak bych chtěl bych aby tato síť pro ně neexistovala (což sí myslím že by mělo jít pomocí příkazu route del-net 192.168.10.0/24, příkaz proběhne korektně ale nic se nezmění, jako kdyby se vzápětí routa vytvořila)

a nevím jestli se tím nedotýkám i volby net.ipv4.conf.all.rp_filter, ale tuto volbu jsem nikdy neřešil





_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:iptables -P FORWARD DROP k čemu dobré na routeru
« Odpověď #1 kdy: 30. 08. 2020, 01:38:53 »
- hrozí že se do vnitřní sítě za natem "může dostat" někdo nepovolaný (čímž myslím 2 případy: třeba kohokoli z globálního internetu,  a nebo někoho kdo by uhodl IP rozsah sítě za NATem a vydávával se za zařízení z tého sítě na WAN portu)
No to právě ne, nechceš se vydávat za 192.168.0.66 na WAN portu, protože to k ničemu nebude a právě to zahodí ten RP filtr.

Normálně si v tom segmentu co je WAN nastavíš "ip r a 192.168.0.0/24 via 88.55.44.33" (WAN IP toho routeru) a pak můžeš do LAN posílat pakety. Není to _úplná_ bezpečnostní hrozba, nejde to z celého internetu - jenom z toho jednoho segmentu (protože další routery nevědí, kam mají 192.168.0.0 routovat, leda že by byl zapnutý source routing nebo co), ale ten segment může být třeba ISP se sousedama a free wifi nebo tak.

Re:iptables -P FORWARD DROP k čemu dobré na routeru
« Odpověď #2 kdy: 30. 08. 2020, 10:03:12 »
Kód: [Vybrat]
iptables -A FORWARD -i eth0 -o wlan0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
Nicméně nejsou potřeba, když je default policy ACCEPT (pro forward ). Zároveň se ale radí dát
Kód: [Vybrat]
iptables -P FORWARD DROP. A to proč?
Z jakých dobrých důvodů se tohle dělá? Co hrozí, když zustane accept? (INPUT a output -t filter samotného stroje neřeším nyní)

Tahle tři pravidla způsobí, že nepůjde navázat komunikaci zvenku dovnitř, pouze z vnitřní sítě ven. Pokud jsou ve vnitřní síti jen uživatelské počítače, není žádný důvod, aby se na ně z venku navazovala komunikace. Hrozí nanejvýš to, že někde poběží nějaký server omylem (třeba nějaké sdílení ve Windows), takže by se na něj dalo zvenku útočit. Kombinace těchto tří pravidel zabrání navazování spojení z venku hned na firewallu, takže ty počítače ve vnitřní síti nepůjde napadnout takhle přímo.

Pokud je to nějaká domácí nebo SOHO síť, stejně musíte počítat s tím, že napadené mohou být i ostatní počítače v síti – tyhle sítě nejsou bezpečné v tom smyslu, že je možné ostatním zařízením důvěřovat. Takže je stejně potřeba svoje zařízení v takové síti zabezpečit. Ale ta ostatní nezabezpečená zařízení tam díky tomu firewallu alespoň nebudou tak na ráně.

A pokud jste se ptal na souvislost s NATem – NAT není firewall, NAT není bezpečnostní opatření, a při návrhu zabezpečení se k tomu přistupuje, jako by tam žádný NAT nebyl. Pokud k tomu chcete nějaké detaily – představte si, že na vnější rozhraní vašeho routeru s NATem přijde paket, jehož cílová adresa je ve vaší vnitřní síti. Když tam bude jenom ten NAT, žádný firewall, ten paket normálně projde do vaší sítě. No a to, jaké pakety budou chodit na vnější rozhraní vašeho routeru, vy nemůžete nijak ovlivnit. Paket s IP adresou z vaší vnitřní sítě vám tam může poslat váš ISP, možná ho tam také může poslat jiný zákazník téhož ISP, který je na stejném segmentu sítě, jako vy… Zkrátka NAT není firewall.

Re:iptables -P FORWARD DROP k čemu dobré na routeru
« Odpověď #3 kdy: 31. 08. 2020, 07:57:09 »
Kód: [Vybrat]
iptables -P FORWARD DROP

Toto odpovídá obecné zásadě "least privilege".
Jednotlivými pravidly v chainu "FORWARD" a jím odkazovaných uživatelských chainech poté povolujete jednotlivé "díry" do paušálního zákazu.

Volněji k Vašemu dotazu: neuvedl jste, které rozhraní je WAN a které/která jsou LAN. Předpokládám že eth0 je WAN. Neuvádíte pravidla pro NAT, ale ten match na conntrack je patrně "protikusem" NATových pravidel.

Typický hardware pro OpenWRT má dnes lokální WiFi, pár portů LAN a jeden port WAN (přeskakuju detaily, jako že si to člověk může přiřadit po svém). A pokud se týče lokálních sítí (NAT inside) tak se můžete rozhodnout, jestli z nich soft-bridgem vyrobíte jediný L2 segment, nebo mezi nimi budete navzájem forwardovat a filtrovat na třetí vrstvě... Varianta B může být bezpečnější, ale je taky méně komfortní z hlediska všelijakých PnP radovánek v domácí LAN.

Hamparle

  • ****
  • 360
  • junior developer ucho
    • Zobrazit profil
    • E-mail
rp_filter - hairpinning
« Odpověď #4 kdy: 13. 01. 2021, 17:40:41 »

a nevím jestli se tím nedotýkám i volby net.ipv4.conf.all.rp_filter, ale tuto volbu jsem nikdy neřešil

Bude fungovat hairpining v případě zapnutého rp_filteru? A rp_filter nevyhovující pakety odstraní ještě před vstupem do iptables (čili to není možné ovlivnit iptables)?