ich benötige Hilfe bei iptables-Regeln. Ich weiss, dass iptables am "Auslaufen" ist, jedoch ist es immer noch ein aktiver Paket-Filter bei Raspbian, so wie ich das sehe, und es ist ein Paket-Filter bei dem ich mich wenigstens einigermassen auskenne.
'nftables' möchte ich mir anschauen, wenn ich mal Zeit dazu habe und das wird in den nächsten Wochen/Monaten nicht der Fall sein...
Ich habe meinen RasPi am Router aus der "Firewall-/Portforwarding-Zone" in die DMZ gestellt (Wartung/Einstellungen einfacher, da nur am RasPi im Paket-Filter durchzuführen).
Nun habe ich die grundsätzlichen Regeln [in einem Boot-Script] so:
Code: Alles auswählen
LOCAL_IPv4='127.0.0.1'
LOCALHOST_IPv4='127.0.1.1'
HOME_IPv4_SUBNET='192.168.1'
HOME_IPv4_NET="$HOME_IPv4_SUBNET.0/24"
PUBLIC_IPv4_NET='0.0.0.0/0'
LOCAL_IPv6='::1/128'
HOME_IPv6_NET='fe80::/64'
GLOBAL_SCOPE_IPv6='2a02:120b:zzzz:zzzz:zzzz:zzzz:zzzz:zzzz/64'
PUBLIC_IPv6_NET='::/0'
DEVICE_LO='lo'
DEVICE_LAN='eth0'
IPT="/usr/sbin/iptables"
IP6T="/usr/sbin/ip6tables"
$IPT -F
$IPT -X
$IPT -Z
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X
$IP6T -F
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
$IP6T -P INPUT DROP
$IP6T -P FORWARD DROP
$IP6T -P OUTPUT ACCEPT
$IPT -I INPUT -i $DEVICE_LO -j ACCEPT
$IPT -I INPUT -s $LOCAL_IPv4 -j ACCEPT
$IPT -I INPUT -s $LOCALHOST_IPv4 -j ACCEPT
#$IPT -I OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IP6T -I INPUT -i $DEVICE_LO -j ACCEPT
$IP6T -I INPUT -s $LOCAL_IPv6 -j ACCEPT
$IP6T -I INPUT -s $HOME_IPv6_NET -j ACCEPT
#$IP6T -I OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Irgendwann hatte ich festgestellt, dass der Ping nach Aussen nicht ging, weil keine Namensauflösung geklappt hat...
Danach experimentierte ich - wie man sieht - auch mit
Code: Alles auswählen
$IPT -I OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
1. Eingehende Verbindungen sind nur zu explizit erlaubten Ports erlaubt
2. Forwarding ist grundsätzlich nicht erlaubt, da auch nicht gebraucht(?) - z.B. kein NAT, etc.
3. Ausgehende Verbindungen (wie z.B. 'Ping', Namensauflösung, etc.) sind grundsätzlich erlaubt
Wenn mein Verständnis der Regeln grundsätzlich richtig ist, warum muss ich dann trotzdem ein:
$IPT -I INPUT -p udp --sport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
in die Regeln setzen, damit die Namensauflösung klappt?
(Die '--sport 53'-Regel habe ich von einer Webseite.)
Kann es jetzt sein, dass auch z.B. Verbindungen zum Apache2, oder Exim4, oder $x_y_dienst nicht korrekt aufgebaut werden, da eventuell '--sport'-Regeln fehlen [könnten]? Und falls dem so ist, wieso?!
Warum muss eine eingehende Verbindung ('-I INPUT -p udp --sport 53 -J ACCEPT') angegeben werden?
Welchen Dienst braucht es auf dem RasPi, damit die Namensauflösung nach Aussen klappt und warum?
Es wird doch (von welchem Dienst/Programm auch immer) eine Verbindung nach Aussen (die ja grundsätzlich erlaubt ist) zu einem Dienst initiiert und von "dort" (Aussen) kommt lediglich über die bereits aufgebaute Verbindung eine Antwort zurück, oder nyscht..?
*KopfKratz* ^^
Danke für Aufklärung.
worker