[fli4l] Frage zur OUTPUT-Regel

Sebastian Klein fli4l at wysiwyng.de
Mi Mär 20 09:45:03 CET 2019


Am 18.03.19 um 18:06 schrieb K. Dreier:
> Hallo,
> 
> (4.0-testing; 1x WAN-NIC (eth0 = NET_1 sowie >1 LAN-NIC (eth1+, NET_2+)
> 
> Wie könnte ich einem Client (und: auch einem ganzen internen Netz wie
> NET_2) den Zugriff via DNS-Anfragen ins WAN verbieten? Grundsätzlich
> sollen alle DNS-Anfragen über einen internen DNS-Server laufen.
> Insbesondere für solche Geräte, die den vom fli4l beworbenen
> DNS-Server ignorieren.
> Zum Testen möchte ich also alles, was nicht über den internen
> DNS-Server an den fli4l kommt sperren, um so zu sehen, ob meine
> "umbiege"-Regeln via PREROUTING greifen. Das Ergebnis wäre
> offensichtlich (= geht oder geht nicht) und ich müsstte nicht Logs vom
> Pihole durchforsten.
> 
> Kann ich bei den OUTPUT-Regeln die gleiche Logik anwenden wie bei den
> anderen? Zum Beispiel:

Im Prinzip schon, aber die Output Regeln durchläuft ein Paket nur wenn
es von einem Prozess kommt der auf dem fli4l läuft. Und nicht wenn es
aus einem Netz kommt das am fli4l hängt (egal ob LAN oder WAN)

> PF_OUTPUT_POLICY='ACCEPT'	# allow outgoing traffic
> PF_OUTPUT_ACCEPT_DEF='no'	# do not use default rule set
> PF_OUTPUT[]='@Pihole ACCEPT'	# erlaube sämtlichen Traffic vom
> DNS-Server
> PF_OUTPUT[]='tmpl:dns IP_NET_2 REJECT'	# verbiete (nicht-Pihole)
> DNS-Traffic aus NET_2
> PF_OUTPUT[]='tmpl:dns IP_NET_3 REJECT'	# verbiete (nicht-Pihole)
> DNS-Traffic aus NET_3
> PF_OUTPUT[]='state:ESTABLISHED,RELATED ACCEPT'	# Standard rule applied
> now for the rest
> 
> Wäre das zielführend?

nein, siehe oben...
das kannst du sowohl im pre oder post routing machen als auch im Forward
(Was ich bevorzugen würde)

PF_FORWARD[]='tmpl:dns @Pihole ACCEPT'
damit lässt du die dns Pakete vom Pihole durch

PF_FORWARD[]='tmpl:dns IP_NET_2 REJECT'
damit geht dann kein DNS von IP_NET_2 in ein anderes Netz

will sagen mit beiden Regeln geht DNS über den Pihole, wenn du die erste
raus nimmst geht gar kein DNS aus IP_NET_2

> Der Vollständigkeit halber hier noch der relevante Rest der
> Firewall-Regeln:
> 
> (default-Regeln)
> Post:
> PF_POSTROUTING[]='if:any:IP_NET_1_DEV MASQUERADE'		# masquerade traffic
> leaving the WAN-NIC
> PF_POSTROUTING[]='IP_NET_2 @Pihole:53 SNAT:IP_NET_2_IPADDR'	# make all
> packets sent to Pihole look as if they came from fli4l
> PF_POSTROUTING[]='IP_NET_3 @Pi3hole:53 SNAT:IP_NET_3_IPADDR'	# make all
> packets sent to Pihole look as if they came from fli4l


> 
> Pre (das soll DNS-Anfragen egal auf welche externe IP immer auf den
> internen Pihole führen):
> PF_PREROUTING[]='if:IP_NET_2_DEV:any !@Pihole 53 DNAT:@Pihole:53'	# any
> DNS traffic from eth1 passed to Pihole except traffic from Pihole
> itself

ich meine die Regel ist so nicht ganz richtig...
if:IP_NET_2_DEV:any tmpl:dns !@Pihole DNAT:@Pihole(:53)

den Port hinten braucht es nicht zwingend, da ja nur die Zieladresse
getauscht wird.

> PF_PREROUTING[]='if:IP_NET_3_DEV:any !@Pihole 53 DNAT:@Pihole:53'	# all
> DNS traffic from eth2 ex Ph

dito

> Passt das so? Danke für Input!

bitte

--
Sebastian
[fli4l-Team]




Mehr Informationen über die Mailingliste Fli4L