standard ip6tables

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
peter7
Beiträge: 37
Registriert: 04.10.2012 08:46:41
Lizenz eigener Beiträge: MIT Lizenz

standard ip6tables

Beitrag von peter7 » 01.10.2022 19:25:48

Wenn ich die folgende ip6tables-Einstellung benutze,

Code: Alles auswählen

ip6tables -P INPUT   DROP; 
ip6tables -P FORWARD DROP; 
ip6tables -P OUTPUT  DROP

ip6tables -A INPUT   -i lo    -j ACCEPT
ip6tables -A OUTPUT  -o lo    -j ACCEPT

ip6tables -A INPUT   -i eth0  -m state --state     ESTABLISHED,RELATED  -j ACCEPT
ip6tables -A OUTPUT  -o eth0  -m state --state NEW,ESTABLISHED,RELATED  -j ACCEPT

ip6tables -A INPUT   -i eth0  -p ipv6-icmp --icmpv6-type  echo-request             -j ACCEPT
ip6tables -A INPUT   -i eth0  -p ipv6-icmp --icmpv6-type  echo-reply               -j ACCEPT
ip6tables -A INPUT   -i eth0  -p ipv6-icmp --icmpv6-type  neighbour-solicitation   -j ACCEPT
ip6tables -A INPUT   -i eth0  -p ipv6-icmp --icmpv6-type  neighbour-advertisement  -j ACCEPT
gibt es Probleme mit ping6.

Nach einigen Tests habe ich herausgefunden, dass ich noch zwei zusätzliche Regeln benötige:

Code: Alles auswählen

ip6tables -A OUTPUT  -o eth0  -p ipv6-icmp --icmpv6-type  neighbour-solicitation   -j ACCEPT
ip6tables -A OUTPUT  -o eth0  -p ipv6-icmp --icmpv6-type  neighbour-advertisement  -j ACCEPT
Hier ist meine FRAGE:
Soweit ich weiß, gibt es nur die Zustände (state) NEW, ESTABLISHED, RELATED.
Warum sind in der folgenden Zeile

Code: Alles auswählen

ip6tables -A OUTPUT  -o eth0  -m state --state NEW,ESTABLISHED,RELATED  -j ACCEPT
die beiden zusätzlichen OUTPUT-Regeln nicht schon enthalten?

DeletedUserReAsG

Re: standard ip6tables

Beitrag von DeletedUserReAsG » 01.10.2022 20:12:54

peter7 hat geschrieben: ↑ zum Beitrag ↑
01.10.2022 19:25:48
Warum sind […] die beiden zusätzlichen OUTPUT-Regeln nicht schon enthalten?
Möglicherweise, weil die States zu TCP gehören, und deine Regel daher ICMP nicht abdeckt.

OT:
„Standard“

peter7
Beiträge: 37
Registriert: 04.10.2012 08:46:41
Lizenz eigener Beiträge: MIT Lizenz

Re: standard ip6tables

Beitrag von peter7 » 02.10.2022 08:21:46

... hab's gefunden:
Es gibt bei IPv6 offenbar beides - sowohl stateful als auch stateless Protokolle
(siehe z.B. https://www.mygreatlearning.com/blog/st ... stateless/)

DeletedUserReAsG

Re: standard ip6tables

Beitrag von DeletedUserReAsG » 02.10.2022 09:03:37

peter7 hat geschrieben: ↑ zum Beitrag ↑
02.10.2022 08:21:46
Es gibt bei IPv6 offenbar beides - sowohl stateful als auch stateless Protokolle
Das ist keine Eigenschaft von IPv6, sondern auch bei IPv4 so. Es ging hier um ICMP, und das kennt halt keine States – egal, ob v6 oder v4.

DonaltDack
Beiträge: 27
Registriert: 18.09.2021 11:31:20

Re: standard ip6tables

Beitrag von DonaltDack » 02.10.2022 11:20:34

peter7 hat geschrieben: ↑ zum Beitrag ↑
02.10.2022 08:21:46
... hab's gefunden:Es gibt bei IPv6 offenbar beides - sowohl stateful als auch stateless Protokolle
Es ist ein Unterschied, ob eine Firewall Stateful oder Stateless ist oder ein Protokoll. Eine Firewall kann beides sein, als Protokoll ist TCP Stateful, UDP hingeben Stateless, beides läuft auf dem IP-Stack. ICMP findet aber nicht auf Ebene TCP statt, sondern ebenfalls auf dem IP-Stack, aber der ist ja Stateless. Darüber hinaus definiert sich ICMP selber als höheres Protokoll auf dem IP-Stack.

Dein Ansatz für ICMPv6 ist an sich falsch. Ich denke, Du verzichtest besser ganz drauf oder Du erlaubst ICMP generell und drop'st lediglich flooding. ICMP für V6 zu kastrieren ist eine ganz schlechte Idee, weil es einen anderen Stellenwert im Vergleich zu V4 hat.

peter7
Beiträge: 37
Registriert: 04.10.2012 08:46:41
Lizenz eigener Beiträge: MIT Lizenz

Re: standard ip6tables

Beitrag von peter7 » 03.10.2022 11:44:03

Vielen Dank für die Rückmeldungen.
Meine Beispiel-Firewall diente dazu, herauszufinden, welche Regeln ich benötige, um erfolgreich Pingen zu können.
Dabei ist mir aufgefallen, dass es im Hinblick auf IPv4 vs IPv6 vor allem bei den OUTPUT-Regeln Unterschiede gibt.

Bei IPv4 ist es offenbar nicht notwendig ICMP im OUTPUT freizuschalten - siehe Beispiel (die INPUT-Regeln habe ich hier jetzt nicht nochmal aufgeführt)

Code: Alles auswählen

iptables -P OUTPUT  DROP
iptables -A OUTPUT  -o lo    -j ACCEPT
iptables -A OUTPUT  -o eth0  -m state --state NEW,ESTABLISHED,RELATED  -j ACCEPT
Ein Ping auf eth0 ist (zumindest bei mir) trotzdem erfolgreich.

Bei IPv6 scheint das anders zu sein - die Zeile mit NEW,ESTABLISHED,RELATED reicht nicht mehr aus. Hier benötige ich entweder

Code: Alles auswählen

ip6tables -P OUTPUT  DROP
ip6tables -A OUTPUT  -o lo    -j ACCEPT
ip6tables -A OUTPUT  -o eth0  -j ACCEPT
oder

Code: Alles auswählen

ip6tables -P OUTPUT  DROP
ip6tables -A OUTPUT  -o lo    -j ACCEPT
ip6tables -A OUTPUT  -o eth0  -m state --state NEW,ESTABLISHED,RELATED  -j ACCEPT
ip6tables -A OUTPUT  -o eth0  -p ipv6-icmp --icmpv6-type  neighbour-solicitation   -j ACCEPT

peter7
Beiträge: 37
Registriert: 04.10.2012 08:46:41
Lizenz eigener Beiträge: MIT Lizenz

Re: standard ip6tables

Beitrag von peter7 » 04.10.2022 10:04:24

... um diesem Thread zu einem sinnvollen Abschluss zu bringen, fasse ich jetzt nochmal die wesentlichen Aussagen zusammen:
  • ICMP findet nicht auf TCP-Ebene statt, sondern auf dem IP-Stack, der Stateless ist (wobei ICMP sich als höheres Protokoll auf dem IP-Stack definiert) - daher kennt ICMP keine States – egal, ob v6 oder v4

FRAGE:
Warum kann ich mit folgenden Iptables rules problemlos IPv4 pingen ...

Code: Alles auswählen

iptables -P INPUT   DROP; 
iptables -P FORWARD DROP; 
iptables -P OUTPUT  DROP

iptables -A INPUT   -i lo    -j ACCEPT
iptables -A OUTPUT  -o lo    -j ACCEPT

iptables -A INPUT   -i eth0  -m state --state     ESTABLISHED,RELATED  -j ACCEPT
iptables -A OUTPUT  -o eth0  -m state --state NEW,ESTABLISHED,RELATED  -j ACCEPT

iptables -A INPUT  -i $anka -p icmp --icmp-type  echo-request -j ACCEPT
iptables -A INPUT  -i $anka -p icmp --icmp-type  echo-reply   -j ACCEPT
... , wenn doch für ICMP gar keine OUTPUT Regel vorhanden ist?

DonaltDack
Beiträge: 27
Registriert: 18.09.2021 11:31:20

Re: standard ip6tables

Beitrag von DonaltDack » 04.10.2022 20:49:36

peter7 hat geschrieben: ↑ zum Beitrag ↑
04.10.2022 10:04:24
... , wenn doch für ICMP gar keine OUTPUT Regel vorhanden ist?
Doch, die ist vorhanden, und zwar implizit, weil Du nicht explizit ein Protokoll definiert hast, was Conntrack unterstützt.

Antworten