ip6tables ignoriert ipv6-icmp state

Gemeinsam ins Internet mit Firewall und Proxy.
fkit
Beiträge: 17
Registriert: 21.11.2004 20:23:09

Re: ip6tables ignoriert ipv6-icmp state

Beitrag von fkit » 30.11.2016 16:53:37

TomL hat geschrieben: Nein, ICMP mit "echo request" und "echo reply" ist nicht stateless.... 'request' ist NEW, 'reply' ist ESTABLISHED.
Du redest vom Design von ICMP und ich rede vom ip6tables state/conntrack Modul in Bezug auf ICMPv6. Und wie dieser Thread und die Versuche zeigen ist dieser ICMPv6 eben stateless im Sinne der ip6tables Module sonst könnte ich ihn unter Verwendung dieser anhand des jeweiligen Zustandes (NEW,INVALID) in benutzerdefinierte Chains leiten.
Es belibt hier nur die Möglichkeit das in INPUT und OUTPUT Chain zu regeln.
Nein, auch das ist falsch. Du kannst das problemlos in eigenen Chains lösen, genau so, wie Du das vorgesehen hast.
Ja das ist richtig, da habe ich mich falsch ausgedrückt. Ich wollte damit nochmal aufzeigen, daß diese Pakete stateless sind und nicht mit state/conntrack abgefangen werden können.
Dein Setup ist aber nicht generell gültig und abhängig von den Gegebenheiten.
Das verstehe ich nicht. Bitte erkläre mir, bei welchen Gegebenheiten man zwar ein Ping-Handling in der Firewall erreichen möchte, aber keine ICMP-Identifikation durchführen kann.
Die Beantwortung deiner Frage gibst Du Dir im nächsten Absatz selber. In Deinem Setup hattest Du nur icmpv6-type 128 erlaubt. Das ist u.U zuwenig:
Ganz nebenbeibemerkt halte ich den Ansatz generell für nicht durchdacht, weil ICMP unter IPv6 eine andere Bedeutung hat, als unter IPv4. ICMP hat hier eine "höherwertigere" Paketbedeutung, als normale TCP-Pakete und steuert auch den TCP-Pakete-Verkehr. Unter IPv6 ist es falsch, ICMP generell zu blocken. Mehr Infos dazu findest Du in der RFC 4890. So sollten generell die Fehlernachrichten 1-4 explitzit erlaubt werden, ebenso wie das Router- und Neighbour-Advertisement 133-136 (z.B. für SLAAC), dazu noch ein paar weitere Codes.
Und zur Behebung Deines Problems müsstest Du noch kontrollieren, ob das Kernel-Modul "ip_conntrack" überhaupt geladen ist. Aber wie gesagt, der richtige Lösungsansatz ist es, ICMP-Pakete korrekt zu matchen und dann wie gewünscht darauf zu reagieren.
nf_conntrack_ipv6 ist geladen, hilft aber nichts bei ICMPv6. Beim Testen und Lesen zu IPv6 ist mir aber klar geworden, daß dieses Protokoll sehr viel mehr beinhaltet als das bei ICMPv4 der Fall war. So wie Du es gerade eben ja auch beschrieben hast. Ein Vorposter hat das ja auch schon erwähnt, daß hier auch ARP dadurch ersetzt wird. Da wird dann schnell klar, daß es hier nicht stateful geht. Danke für die ganzen Anregungen hier!

TomL

Re: ip6tables ignoriert ipv6-icmp state

Beitrag von TomL » 30.11.2016 17:02:52

Nein, ich speche nicht vom Design, sondern vom Connection-Tracking. Sowohl der Ping-Pong durch Request-Replay wie auch TimeStamp-Request haben den Tracking-State genau so, wie ich das gesagt habe, request ist NEW, reply ist ESTABLISHED. ICMP ist generell kein Stateful-Stream, aber diese 2 Paare erzeugen Rückkehrpakete, also funktioniert auch der Tracking-State. Aber das hierüber zu matchen ist meiner Meinung nach der falsche Weg.

So sieht das bei mir in der INPUT-Chain aus:

Code: Alles auswählen

   42  4368 ACCEPT     icmpv6    *   *   2003:xx:xxx:xxxx::/64 ::/0    ipv6-icmptype 128
    0     0 REJECT     icmpv6    *   *   ::/0                  ::/0    ipv6-icmptype 128 reject-with icmp6-port-unreachable
    0     0 ACCEPT     icmpv6    *   *   ::/0                  ::/0    ipv6-icmptype 1
    0     0 ACCEPT     icmpv6    *   *   ::/0                  ::/0    ipv6-icmptype 2
    0     0 ACCEPT     icmpv6    *   *   ::/0                  ::/0    ipv6-icmptype 3
    0     0 ACCEPT     icmpv6    *   *   ::/0                  ::/0    ipv6-icmptype 4
    0     0 ACCEPT     icmpv6    *   *   ::/0                  ::/0    ipv6-icmptype 133
   33  5016 ACCEPT     icmpv6    *   *   ::/0                  ::/0    ipv6-icmptype 134
   43  3096 ACCEPT     icmpv6    *   *   ::/0                  ::/0    ipv6-icmptype 135
   54  3480 ACCEPT     icmpv6    *   *   ::/0                  ::/0    ipv6-icmptype 136
    0     0 ACCEPT     icmpv6    *   *   ::/0                  ::/0    ipv6-icmptype 137
    0     0 ACCEPT     icmpv6    *   *   ::/0                  ::/0    ipv6-icmptype 141
    0     0 ACCEPT     icmpv6    *   *   ::/0                  ::/0    ipv6-icmptype 142
    0     0 ACCEPT     icmpv6    *   *   fe80::/10             ::/0    ipv6-icmptype 130
    0     0 ACCEPT     icmpv6    *   *   fe80::/10             ::/0    ipv6-icmptype 131
    0     0 ACCEPT     icmpv6    *   *   fe80::/10             ::/0    ipv6-icmptype 132
    0     0 ACCEPT     icmpv6    *   *   fe80::/10             ::/0    ipv6-icmptype 143
    0     0 ACCEPT     icmpv6    *   *   ::/0                  ::/0    ipv6-icmptype 148
    0     0 ACCEPT     icmpv6    *   *   ::/0                  ::/0    ipv6-icmptype 149
    0     0 ACCEPT     icmpv6    *   *   fe80::/10             ::/0    ipv6-icmptype 151
    0     0 ACCEPT     icmpv6    *   *   fe80::/10             ::/0    ipv6-icmptype 152
    0     0 ACCEPT     icmpv6    *   *   fe80::/10             ::/0    ipv6-icmptype 153

fkit
Beiträge: 17
Registriert: 21.11.2004 20:23:09

Re: ip6tables ignoriert ipv6-icmp state

Beitrag von fkit » 30.11.2016 17:23:13

TomL hat geschrieben:Nein, ich speche nicht vom Design, sondern vom Connection-Tracking. Sowohl der Ping-Pong durch Request-Replay wie auch TimeStamp-Request haben den Tracking-State genau so, wie ich das gesagt habe, request ist NEW, reply ist ESTABLISHED. ICMP ist generell kein Stateful-Stream, aber diese 2 Paare erzeugen Rückkehrpakete, also funktioniert auch der Tracking-State.

Aber das hierüber zu matchen ist meiner Meinung nach der falsche Weg.
Es war mir kein Anliegen falsch oder richtig zu klären, sondern zu fragen ob in meinem System eine Fehlkonfiguration vorliegt, da ich ICMPv6 nicht mit state/conntrack Modul behandeln kann. Wie sich herausgestellt hat, sind die ICMPv6 Pakete die zur Zuweisung von IPv6 Adressen und/oder echo-request, echo-reply notwendig sind im Sinne von ip6tables stateless. Gerne lasse ich mich aber eines besseren belehren, wenn Du mir zeigen kannst, wie Du ein icmpv6 Paket mittels conntrack in eine benutzerdefinierte Chain bekommst.

TomL

Re: ip6tables ignoriert ipv6-icmp state

Beitrag von TomL » 30.11.2016 18:04:40

fkit hat geschrieben: Wie sich herausgestellt hat, sind die ICMPv6 Pakete die zur Zuweisung von IPv6 Adressen und/oder echo-request, echo-reply notwendig sind im Sinne von ip6tables stateless.
Du hörst einfach nicht zu, was ich sage.... echo-replay sowie der Timer-Request IST NICHT STATELESS.... warum das bei Dir nicht geht, weiss ich nicht, aber die sind NICHT STATELESS. Bei mir landen die mit Conntrack-State genau da, wo sie landen sollen. Nur denke ich, dass diese Lösung 'daneben' ist. Ich würde das nicht auf diese Weise lösen.
Gerne lasse ich mich aber eines besseren belehren, wenn Du mir zeigen kannst, wie Du ein icmpv6 Paket mittels conntrack in eine benutzerdefinierte Chain bekommst.
Wenn Du mir erklärst, warum Du unbedingt einen echo-Request auf "NEW" abfragen musst oder willst... ein echo-Request ist IMMER NEW. Es gibt da keine Variationen, weil es keinen Stream gibt, nur ein Rückkehrpaket.... ein Ping ist immer NEW, ein Reply ist immer ESTABLISHED. Warum reicht es nicht einfach aus, auf den ICMP-Code 128 zu reagieren...?.... wenn er im Output steht, ist er NEW, weil Du ihn gesendet hast. Wenn er im Input landet, ist er NEW, weil jemand anders Deine Maschine gepingt hat. Warum muss man den denn über den Conntrack-State identifizieren? Das ist doch völlig unsinnig... vor allem, weil sich das ICMP-Paket auch vom TCP-Paket unterscheidet und man da ja eigentlich keine unerwünschten Wechselwirkungen haben möchte.... das heisst: besser ist es eindeutig zu matchen.

Du kannst ganz einfach meine Regel aus dem ersten Posting verwenden und damit wie gehabt in deine eigene Chain -j'umpen'. BTW, zeige mal die Ausgabe von:

Code: Alles auswählen

lsmod | grep conntrack

fkit
Beiträge: 17
Registriert: 21.11.2004 20:23:09

Re: ip6tables ignoriert ipv6-icmp state

Beitrag von fkit » 30.11.2016 18:23:37

TomL hat geschrieben:Bei mir landen die mit Conntrack-State genau da, wo sie landen sollen.
Genau das interessiert mich. Bitte um ein Beispiel wie Du das mit dem ip6tables conntrack Moudl umsetzen konntest.
Gerne lasse ich mich aber eines besseren belehren, wenn Du mir zeigen kannst, wie Du ein icmpv6 Paket mittels conntrack in eine benutzerdefinierte Chain bekommst.
Wenn Du mir erklärst, warum Du unbedingt einen echo-Request auf "NEW" abfragen musst ...
Habe ich vorher erklärt. Ich wollte rausfinden, ob ich wie ich es schon mit ICMPv4 mache auch mit ICMPv6 ein solches Paket mit dem ip6tables state/conntrack Modul abfangen kann.
Du kannst ganz einfach meine Regel aus dem ersten Posting verwenden und damit wie gehabt in deine eigene Chain -j'umpen'.
In dieser Regel aus Deinem ersten Posting arbeitest Du nicht mit dem state/conntrack Modul. Doch darum geht es hier in diesem Thread bzw. das war mein Anliegen.

TomL

Re: ip6tables ignoriert ipv6-icmp state

Beitrag von TomL » 30.11.2016 19:30:27

fkit hat geschrieben:In dieser Regel aus Deinem ersten Posting arbeitest Du nicht mit dem state/conntrack Modul. Doch darum geht es hier in diesem Thread bzw. das war mein Anliegen.
Ich habe Deine Regel genommen und bei mir funktioniert sie mit dem Conntrack-State auf Anhieb. Ich kann Dir auch nicht mehr weiter helfen. Das ist mir jetzt echt zu anstrengend, alles immer 2 oder 3 mal wiederholen zu müssen. Ich hatte Dich einmal gebeten das Kernel-Modul zu checken, dann noch mal um eine lsmod-Ausgabe gebeten, und jetzt ein drittes Mal? Und das vor dem Hintergrund, dass das Ziel ein ICMP-Paket allein über den Conntrack-State zu identifizieren mehr als zweifelhaft ist.

Tut mir leid... mein Laptop-Akku ist am Ende.... ich muss mich jetzt leider ausklinken.....

HIer ist mein Beispiel... ich habe mich auch nur auf die Output-Chain beschränkt, weil Du ja bemerkt hast, dass es gar nicht erst rausgeht.

Code: Alles auswählen

#!/bin/bash

/sbin/ip6tables -N HANDLERNEW
/sbin/ip6tables -N HANDLERDROP

/sbin/ip6tables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/ip6tables -A OUTPUT -o eth0 -m state --state NEW -j HANDLERNEW
/sbin/ip6tables -A OUTPUT -j HANDLERDROP

/sbin/ip6tables -A HANDLERNEW -j LOG --log-prefix "HANDLERNEW: "
/sbin/ip6tables -A HANDLERNEW -j ACCEPT

/sbin/ip6tables -A HANDLERDROP -j LOG --log-prefix "HANDLERDROP: "
/sbin/ip6tables -A HANDLERDROP -j DROP
Ein zweites Terminalfenster mit journalctl -f zeigt im gleichen Moment, wo der Ping behandelt wird. Aber wie gesagt, die Lösung ist zweifelhaft.... und imho nicht ratsam. Aber egal....

fkit
Beiträge: 17
Registriert: 21.11.2004 20:23:09

Re: ip6tables ignoriert ipv6-icmp state

Beitrag von fkit » 02.12.2016 10:38:17

TomL hat geschrieben:Ich hatte Dich einmal gebeten das Kernel-Modul zu checken, dann noch mal um eine lsmod-Ausgabe gebeten, und jetzt ein drittes Mal?
Ich hatte doch geschrieben, daß das entsprechende conntrack Modul geladen ist. Aber bitte:

Code: Alles auswählen

~# lsmod|grep conntrack
nf_conntrack_ipv6      13605  0 
nf_defrag_ipv6         33358  1 nf_conntrack_ipv6
nf_conntrack_ipv4      18448  2 
nf_defrag_ipv4         12483  1 nf_conntrack_ipv4
xt_conntrack           12681  1 
nf_conntrack           87424  7 ipt_MASQUERADE,nf_nat,nf_nat_ipv4,xt_conntrack,iptable_nat,nf_conntrack_ipv4,nf_conntrack_ipv6
x_tables               27399  11 ip6table_filter,xt_CHECKSUM,ip_tables,xt_tcpudp,ipt_MASQUERADE,xt_conntrack,xt_LOG,iptable_filter,ipt_REJECT,iptable_mangle,ip6_tables
Tut mir leid... mein Laptop-Akku ist am Ende.... ich muss mich jetzt leider ausklinken.....
Jetzt wo es interessant wird, geht dein Akku aus, das ist schade.
HIer ist mein Beispiel... ich habe mich auch nur auf die Output-Chain beschränkt, weil Du ja bemerkt hast, dass es gar nicht erst rausgeht.

Code: Alles auswählen

#!/bin/bash

/sbin/ip6tables -N HANDLERNEW
/sbin/ip6tables -N HANDLERDROP

/sbin/ip6tables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/ip6tables -A OUTPUT -o eth0 -m state --state NEW -j HANDLERNEW
/sbin/ip6tables -A OUTPUT -j HANDLERDROP

/sbin/ip6tables -A HANDLERNEW -j LOG --log-prefix "HANDLERNEW: "
/sbin/ip6tables -A HANDLERNEW -j ACCEPT

/sbin/ip6tables -A HANDLERDROP -j LOG --log-prefix "HANDLERDROP: "
/sbin/ip6tables -A HANDLERDROP -j DROP
Ok, danke für den Vorschlag. Mir fehlt hier daß die alten Regeln vorher gelöscht werden und die Standard Policy erstmal auf DROP steht. Ich habe das also zu Beginn eingefügt und dann Dein Beispiel verwendet:

Code: Alles auswählen

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:HANDLERDROP - [0:0]
:HANDLERNEW - [0:0]
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -m state --state NEW -j HANDLERNEW
-A OUTPUT -j HANDLERDROP
-A HANDLERDROP -j LOG --log-prefix "HANDLERDROP: "
-A HANDLERDROP -j DROP
-A HANDLERNEW -j LOG --log-prefix "HANDLERNEW: "
-A HANDLERNEW -j ACCEPT
COMMIT

Code: Alles auswählen

ping6 -I eth0 fe80::230:18ff:fead:3bfb

Dec  1 07:37:01 ork kernel: [ 1460.487658] HANDLERNEW: IN= OUT=eth0 SRC=fe80:0000:0000:0000:dacb:8aff:fe31:a544 DST=fe80:0000:0000:0000:0230:18ff:fead:3bfb LEN=104 TC=0 HOPLIMIT=255 FLOWLBL=0 PROTO=ICMPv6 TYPE=128 CODE=0 ID=7570 SEQ=1 
Dec  1 07:37:01 ork kernel: [ 1460.487678] HANDLERDROP: IN= OUT=eth0 SRC=fe80:0000:0000:0000:dacb:8aff:fe31:a544 DST=ff02:0000:0000:0000:0000:0001:ffad:3bfb LEN=72 TC=0 HOPLIMIT=255 FLOWLBL=0 PROTO=ICMPv6 TYPE=135 CODE=0
Das Beispiel funktioniert nicht, hast Du das überhaupt ausprobiert?

mludwig
Beiträge: 793
Registriert: 30.01.2005 19:35:04

Re: ip6tables ignoriert ipv6-icmp state

Beitrag von mludwig » 02.12.2016 10:48:16

Code: Alles auswählen

ping6 -I eth0 fe80::230:18ff:fead:3bfb

Dec  1 07:37:01 ork kernel: [ 1460.487658] HANDLERNEW: IN= OUT=eth0 SRC=fe80:0000:0000:0000:dacb:8aff:fe31:a544 DST=fe80:0000:0000:0000:0230:18ff:fead:3bfb LEN=104 TC=0 HOPLIMIT=255 FLOWLBL=0 PROTO=ICMPv6 TYPE=128 CODE=0 ID=7570 SEQ=1 
Dec  1 07:37:01 ork kernel: [ 1460.487678] HANDLERDROP: IN= OUT=eth0 SRC=fe80:0000:0000:0000:dacb:8aff:fe31:a544 DST=ff02:0000:0000:0000:0000:0001:ffad:3bfb LEN=72 TC=0 HOPLIMIT=255 FLOWLBL=0 PROTO=ICMPv6 TYPE=135 CODE=0
Das Beispiel funktioniert nicht, hast Du das überhaupt ausprobiert?
Sieht ja erstmal gut aus: die erste Zeile deines Logs ist aus HANDLENEW, wird dort also von der Log-Zeile erfasst und sollte in der nächsten Zeile deiner Regeln akzeptiert werden. Was mir hier fehlt ist die entsprechende Regel, das Anwortpaket zu akzeptieren (deine INPUT-Policy ist drop, es gibt aber keine definierten Regeln irgendwas zu aktezptieren bzw. in die HANDLE-Ketten zu nehmen.)

Die zweite Zeile des Logs ist das schon angesprochene NDP (Neighbor Discovery Protocol aka ARP), welches in HANDLEDROP erfasst wird. Hier scheint also das mit den States nicht zu greifen.

fkit
Beiträge: 17
Registriert: 21.11.2004 20:23:09

Re: ip6tables ignoriert ipv6-icmp state

Beitrag von fkit » 02.12.2016 11:19:19

Danke fürs Reindenken!
mludwig hat geschrieben: Sieht ja erstmal gut aus: die erste Zeile deines Logs ist aus HANDLENEW, wird dort also von der Log-Zeile erfasst und sollte in der nächsten Zeile deiner Regeln akzeptiert werden. Was mir hier fehlt ist die entsprechende Regel, das Anwortpaket zu akzeptieren (deine INPUT-Policy ist drop, es gibt aber keine definierten Regeln irgendwas zu aktezptieren bzw. in die HANDLE-Ketten zu nehmen.)
Stimmt, das sieht erstmal nicht schlecht aus. Trotzdem wandert das Paket gleich weiter in HANDLERDROP wie Du ja auch geschrieben hast. Also doch nicht stateful. Ich habe die Regeln jetzt nochmal um wegen INPUT ergänzt, es kommt aber dasselbe Ergebnis raus:

Code: Alles auswählen

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:HANDLERDROP - [0:0]
:HANDLERNEW - [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -m state --state INVALID,NEW -j HANDLERNEW
-A INPUT -j HANDLERDROP
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -m state --state INVALID,NEW -j HANDLERNEW
-A OUTPUT -j HANDLERDROP
-A HANDLERDROP -j LOG --log-prefix "HANDLERDROP: "
-A HANDLERDROP -j DROP
-A HANDLERNEW -j LOG --log-prefix "HANDLERNEW: "
-A HANDLERNEW -j ACCEPT
COMMIT

Code: Alles auswählen

~# ping6 -c 1 -I eth0 fe80::230:18ff:fead:3bfb
PING fe80::230:18ff:fead:3bfb(fe80::230:18ff:fead:3bfb) from fe80::dacb:8aff:fe31:a544 eth0: 56 data bytes
From fe80::dacb:8aff:fe31:a544 icmp_seq=1 Destination unreachable: Address unreachable

--- fe80::230:18ff:fead:3bfb ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

Dec  2 11:08:39 ork kernel: [12760.953676] HANDLERNEW: IN= OUT=eth0 SRC=fe80:0000:0000:0000:dacb:8aff:fe31:a544 DST=fe80:0000:0000:0000:0230:18ff:fead:3bfb LEN=104 TC=0 HOPLIMIT=255 FLOWLBL=0 PROTO=ICMPv6 TYPE=128 CODE=0 ID=30594 SEQ=1 
Dec  2 11:08:39 ork kernel: [12760.953693] HANDLERDROP: IN= OUT=eth0 SRC=fe80:0000:0000:0000:dacb:8aff:fe31:a544 DST=ff02:0000:0000:0000:0000:0001:ffad:3bfb LEN=72 TC=0 HOPLIMIT=255 FLOWLBL=0 PROTO=ICMPv6 TYPE=135 CODE=0 
Dec  2 11:08:40 ork kernel: [12761.952046] HANDLERDROP: IN= OUT=eth0 SRC=fe80:0000:0000:0000:dacb:8aff:fe31:a544 DST=ff02:0000:0000:0000:0000:0001:ffad:3bfb LEN=72 TC=0 HOPLIMIT=255 FLOWLBL=0 PROTO=ICMPv6 TYPE=135 CODE=0 
Dec  2 11:08:41 ork kernel: [12762.952067] HANDLERDROP: IN= OUT=eth0 SRC=fe80:0000:0000:0000:dacb:8aff:fe31:a544 DST=ff02:0000:0000:0000:0000:0001:ffad:3bfb LEN=72 TC=0 HOPLIMIT=255 FLOWLBL=0 PROTO=ICMPv6 TYPE=135 CODE=0 
Die zweite Zeile des Logs ist das schon angesprochene NDP (Neighbor Discovery Protocol aka ARP), welches in HANDLEDROP erfasst wird. Hier scheint also das mit den States nicht zu greifen.
Das sieht so aus, richtig. Für einen ping6 bekomme ich 4 Logfileeinträge...

mludwig
Beiträge: 793
Registriert: 30.01.2005 19:35:04

Re: ip6tables ignoriert ipv6-icmp state

Beitrag von mludwig » 02.12.2016 11:29:19

Dein System schickt einen Ping, der geht auch raus (HANDLERNEW), da er dort keine Antwort erhält, versucht er dann doch nochmal die MAC zu ermitteln (mit NDP) was aber wegen der Firewallregeln nicht gelingt --> er muss also aufgeben. Meiner Meinung nach wird das Ping (deine erste Log-Zeile) nicht gedroppt, in der Kette wird ja danach alles akzeptiert.

Ergo würde ich a) rausfinden, warum auf das erste Ping keine Anwort kommt, es steht auch nix im Log --> INPUT Kette um eine Logzeile wie bei HANDLENEW erweitern! und b) die Regeln so erweitern, dass NDP funktioniert. z. B. indem ICMPv6 Type 135 erlaubt wird. NDP wird sowieso nur im lokalen Netz gemacht, dass sollte eigentlich auch sicherheitsmäßig unkritisch sein, gleichzeitig ist es eigentlich elementar wichtig. Dein Gegenüber (der PC den du anpingen möchstest), schickt bestimmt auch ein NDP, um die MAC von dir rauszufinden. Die bleibt vielleicht auch schon im INPUT hängen.

fkit
Beiträge: 17
Registriert: 21.11.2004 20:23:09

Re: ip6tables ignoriert ipv6-icmp state

Beitrag von fkit » 02.12.2016 12:14:10

mludwig hat geschrieben:Dein System schickt einen Ping, der geht auch raus (HANDLERNEW), da er dort keine Antwort erhält, versucht er dann doch nochmal die MAC zu ermitteln (mit NDP) was aber wegen der Firewallregeln nicht gelingt --> er muss also aufgeben. Meiner Meinung nach wird das Ping (deine erste Log-Zeile) nicht gedroppt, in der Kette wird ja danach alles akzeptiert.

Ergo würde ich a) rausfinden, warum auf das erste Ping keine Anwort kommt, es steht auch nix im Log --> INPUT Kette um eine Logzeile wie bei HANDLENEW erweitern! und b) die Regeln so erweitern, dass NDP funktioniert. z. B. indem ICMPv6 Type 135 erlaubt wird. NDP wird sowieso nur im lokalen Netz gemacht, dass sollte eigentlich auch sicherheitsmäßig unkritisch sein, gleichzeitig ist es eigentlich elementar wichtig. Dein Gegenüber (der PC den du anpingen möchstest), schickt bestimmt auch ein NDP, um die MAC von dir rauszufinden. Die bleibt vielleicht auch schon im INPUT hängen.
Ich haber versucht an oberster Stelle die INPUT Chain zu loggen. Da kommt nichts vom Gegenüber an. Aber es hätte sein können.

Ich würde das hier jetzt auch beenden, denn ich sehe auch, daß es stateful mit dem icmpv6 nicht richtig funktioniert. Danke für die Diskussion!

Also dann doch so:

Code: Alles auswählen

-A INPUT -s fe80::/10 -p ipv6-icmp -j ACCEPT
-A OUTPUT -p ipv6-icmp -j ACCEPT

Antworten