iptables, Masquerade, Ausnahme für drop
-
- Beiträge: 385
- Registriert: 10.01.2003 00:15:15
- Lizenz eigener Beiträge: GNU General Public License
iptables, Masquerade, Ausnahme für drop
Hallo,
ich habe ein frisch installiertes Raspbian Stretch als Router eingerichtet. eth0 ist WAN, eth1 LAN:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
funktioniert (an eth1 angeschlosse Geräte bekommen per DHCP eine IP zugewiesen und können ins Internet, eth0 ist als DHCP-Client eingerichtet). Jetzt wollte ich erstmal alles blocken, was von eth1 LAN kommt:
iptables -I FORWARD -o eth1 -j DROP
funktioniert auch. Aber jetzt komme ich nicht weiter, ich möchte einige Ports freigeben, damit bestimmte Dienste aus dem LAN wieder darüber ins Internet kommen. Ich habe:
iptables -A FORWARD -p tcp --dport 53 -s 0/0 -d 0/0 -j ACCEPT
iptables -A FORWARD -p tcp --dport 123 -s 0/0 -d 0/0 -j ACCEPT
iptables -A FORWARD -p tcp --dport 1194 -s 0/0 -d 0/0 -j ACCEPT
probiert, die Ports waren aber nicht offen. Vermutlich habe ich hier noch einen Denkfehler, aber ich komme nicht drauf. Jemand eine Idee?
ich habe ein frisch installiertes Raspbian Stretch als Router eingerichtet. eth0 ist WAN, eth1 LAN:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
funktioniert (an eth1 angeschlosse Geräte bekommen per DHCP eine IP zugewiesen und können ins Internet, eth0 ist als DHCP-Client eingerichtet). Jetzt wollte ich erstmal alles blocken, was von eth1 LAN kommt:
iptables -I FORWARD -o eth1 -j DROP
funktioniert auch. Aber jetzt komme ich nicht weiter, ich möchte einige Ports freigeben, damit bestimmte Dienste aus dem LAN wieder darüber ins Internet kommen. Ich habe:
iptables -A FORWARD -p tcp --dport 53 -s 0/0 -d 0/0 -j ACCEPT
iptables -A FORWARD -p tcp --dport 123 -s 0/0 -d 0/0 -j ACCEPT
iptables -A FORWARD -p tcp --dport 1194 -s 0/0 -d 0/0 -j ACCEPT
probiert, die Ports waren aber nicht offen. Vermutlich habe ich hier noch einen Denkfehler, aber ich komme nicht drauf. Jemand eine Idee?
-
- Beiträge: 923
- Registriert: 09.07.2008 11:50:57
- Lizenz eigener Beiträge: MIT Lizenz
Re: iptables, Masquerade, Ausnahme für drop
-o = outputExxter hat geschrieben:02.05.2018 13:46:41
funktioniert (an eth1 angeschlosse Geräte bekommen per DHCP eine IP zugewiesen und können ins Internet, eth0 ist als DHCP-Client eingerichtet). Jetzt wollte ich erstmal alles blocken, was von eth1 LAN kommt:
iptables -I FORWARD -o eth1 -j DROP
Finde den Fehler.
Was du aber wahrscheinlich eher möchtest ist nicht das die erste Regel alles wegwirft sondern das wenn keine andere Regel zutrifft alles weggeworfen wird. Also die Default Regel DROP ist, dafür gibt es -p = policy
Code: Alles auswählen
iptables -P FORWARD DROP
1. Du solltest es begrenzen auf -i eth1 und -s 192.168.0.0/16 oder 10.0.0.0/8 oder was du auch immer hastExxter hat geschrieben:02.05.2018 13:46:41funktioniert auch. Aber jetzt komme ich nicht weiter, ich möchte einige Ports freigeben, damit bestimmte Dienste aus dem LAN wieder darüber ins Internet kommen. Ich habe:
iptables -A FORWARD -p tcp --dport 53 -s 0/0 -d 0/0 -j ACCEPT
iptables -A FORWARD -p tcp --dport 123 -s 0/0 -d 0/0 -j ACCEPT
iptables -A FORWARD -p tcp --dport 1194 -s 0/0 -d 0/0 -j ACCEPT
probiert, die Ports waren aber nicht offen. Vermutlich habe ich hier noch einen Denkfehler, aber ich komme nicht drauf. Jemand eine Idee?
2. iptables geht die Regeln der Reihe nach durch und nimmt sich den ersten Treffer, nicht den besten. Deine erste Regel war? (Finde den Fehler)
3. Wenn du die policy DROP nutzt bedenke das du beide Kommunikationswege öffnen musst, die Anfrage und die Antwort, kann man sich erleichtern indem man als 1. Regel dies nutzt:
Code: Alles auswählen
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Re: iptables, Masquerade, Ausnahme für drop
Die tcp-Ports schon, aber auf diesen Ports wird i. d. R. udp benutzt. Wie hast Du getestet?Exxter hat geschrieben:02.05.2018 13:46:41Ich habe:probiert, die Ports waren aber nicht offen.Code: Alles auswählen
iptables -A FORWARD -p tcp --dport 53 -s 0/0 -d 0/0 -j ACCEPT iptables -A FORWARD -p tcp --dport 123 -s 0/0 -d 0/0 -j ACCEPT iptables -A FORWARD -p tcp --dport 1194 -s 0/0 -d 0/0 -j ACCEPT
Code: Alles auswählen
nc -zv 1.1.1.1 53
Debian 12.9 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce
-
- Beiträge: 385
- Registriert: 10.01.2003 00:15:15
- Lizenz eigener Beiträge: GNU General Public License
Re: iptables, Masquerade, Ausnahme für drop
Stimmt, funktioniert.Gunman1982 hat geschrieben:02.05.2018 14:03:06Was du aber wahrscheinlich eher möchtest ist nicht das die erste Regel alles wegwirft sondern das wenn keine andere Regel zutrifft alles weggeworfen wird. Also die Default Regel DROP ist, dafür gibt es -p = policyCode: Alles auswählen
iptables -P FORWARD DROP
1. und 2. habe ich verstanden und umgesetzt. Zu 3. habe ich noch eine Frage: wenn ich nur:Gunman1982 hat geschrieben:02.05.2018 14:03:061. Du solltest es begrenzen auf -i eth1 und -s 192.168.0.0/16 oder 10.0.0.0/8 oder was du auch immer hast
2. iptables geht die Regeln der Reihe nach durch und nimmt sich den ersten Treffer, nicht den besten. Deine erste Regel war? (Finde den Fehler)
3. Wenn du die policy DROP nutzt bedenke das du beide Kommunikationswege öffnen musst, die Anfrage und die Antwort, kann man sich erleichtern indem man als 1. Regel dies nutzt:Code: Alles auswählen
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Code: Alles auswählen
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -P FORWARD DROP
Edit: ach, musste das Gerät dahinter rebooten, jetzt klappt das.
Du hast Recht, das war auch noch ein Fehler. Ich hatte mit nmap gescannt, aber wie du richtig schreibst, es muss udp freigegeben werden, nicht tcp.mat6937 hat geschrieben:02.05.2018 14:43:02Die tcp-Ports schon, aber auf diesen Ports wird i. d. R. udp benutzt. Wie hast Du getestet?
Re: iptables, Masquerade, Ausnahme für drop
Naja, für den Port 53 (DNS) muss beides (udp und tcp) freigegeben werden.
Debian 12.9 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce
-
- Beiträge: 385
- Registriert: 10.01.2003 00:15:15
- Lizenz eigener Beiträge: GNU General Public License
Re: iptables, Masquerade, Ausnahme für drop
Sicher? Ich habe mal mit softflowd geschaut, welche Pakete wo hin gehen:
Code: Alles auswählen
root@pi:/# nfdump -R /var/cache/nfdump/
Date first seen Duration Proto Src IP Addr:Port Dst IP Addr:Port Packets Bytes Flows
2018-05-03 10:16:50.454 0.438 TCP xxx.ccc.vvv.42:443 -> 192.168.44.87:45951 10 4340 1
2018-05-03 10:16:50.454 0.438 TCP 192.168.44.87:45951 -> xxx.ccc.vvv.42:443 15 2002 1
2018-05-03 10:16:50.441 0.001 UDP 192.168.44.1:53 -> 192.168.44.87:42733 1 73 1
2018-05-03 10:16:50.441 0.001 UDP 192.168.44.87:42733 -> 192.168.44.1:53 1 57 1
Generell ist mein Problem aber gelöst, vielen vielen Dank euch!

Code: Alles auswählen
#!/bin/bash
case "$1" in
start)
echo -n "starte Firewall"
# routing
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -P FORWARD DROP
iptables -A FORWARD -i eth1 -p udp --dport 53 -s 0/0 -d 0/0 -j ACCEPT
iptables -A FORWARD -i eth1 -p udp --dport 123 -s 0/0 -d 0/0 -j ACCEPT
iptables -A FORWARD -i eth1 -p tcp --dport 443 -s 0/0 -d 0/0 -j ACCEPT
iptables -A FORWARD -i eth1 -p udp --dport 1194 -s 0/0 -d 0/0 -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type any -j ACCEPT
echo "... fertig."
;;
stop)
echo -n "stoppe Firewall "
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
echo "... fertig."
;;
*)
echo "probier: ./firewall.sh {start|stop}"
exit 1
;;
esac
exit 0
Zuletzt geändert von Exxter am 03.05.2018 13:58:27, insgesamt 1-mal geändert.
Re: iptables, Masquerade, Ausnahme für drop
Ja, sicher. Wenn z. B. die Größe der Anfrage bzw. der Antwort > 4096 bytes (früher waren es 512 bytes) ist. Die dns-Server lauschen ja nicht umsonst auch auf dem tcp-Port 53.
Code: Alles auswählen
:~$ nc -zv 8.8.8.8 53
Connection to 8.8.8.8 53 port [tcp/domain] succeeded!
Code: Alles auswählen
:~$ host -t A -T heise.de 1.1.1.1
Using domain server:
Name: 1.1.1.1
Address: 1.1.1.1#53
Aliases:
heise.de has address 193.99.144.80
Debian 12.9 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce
-
- Beiträge: 385
- Registriert: 10.01.2003 00:15:15
- Lizenz eigener Beiträge: GNU General Public License
Re: iptables, Masquerade, Ausnahme für drop
Interessant, vielen Dank für die Info, das muss ich berücksichtigen.