Discussion:
Frage zur OUTPUT-Regel
(zu alt für eine Antwort)
K. Dreier
2019-03-18 17:06:56 UTC
Permalink
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:

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?

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
PF_PREROUTING[]='if:IP_NET_3_DEV:any !@Pihole 53 DNAT:@Pihole:53' # all
DNS traffic from eth2 ex Ph

Passt das so? Danke fÃŒr Input!

Gruß
Klaus
K. Dreier
2019-03-18 17:16:52 UTC
Permalink
Als ErgÀnzung: Fehler. Ohne die Output-Regel angepasst zu haben fÌhrt
das manuelle Setzen von z.B. 8.8.8.8 als DNS-Server mit den obigen
Pre-Regeln zu einem Fehler, die Seite kann nicht geöffnet werden. Das
Android-GerÀt denkt zudem, es sei offline, auch wenn es korrekt mit dem
WLAN verbunden ist und z.B. via IP-Adresse interne Clients erreichen
kann. Ist also klar ein DNS-Problem. und es bedeutet, daß die
53-Anfrage an 8.8.8.8 nicht ÃŒber den fli4l/Pihole "korrigiert" wurde.
fli4l-Regeln stimmen oder greifen nicht. Was ist falsch?

Danke,

Gruß
Klaus
Sebastian Klein
2019-03-20 08:45:03 UTC
Permalink
Post by 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
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)
Post by K. Dreier
PF_OUTPUT_POLICY='ACCEPT' # allow outgoing traffic
PF_OUTPUT_ACCEPT_DEF='no' # do not use default rule set
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
Post by K. Dreier
Der VollstÀndigkeit halber hier noch der relevante Rest der
(default-Regeln)
PF_POSTROUTING[]='if:any:IP_NET_1_DEV MASQUERADE' # masquerade traffic
leaving the WAN-NIC
packets sent to Pihole look as if they came from fli4l
packets sent to Pihole look as if they came from fli4l
Pre (das soll DNS-Anfragen egal auf welche externe IP immer auf den
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.
Post by K. Dreier
DNS traffic from eth2 ex Ph
dito
Post by K. Dreier
Passt das so? Danke fÃŒr Input!
bitte

--
Sebastian
[fli4l-Team]

Loading...