wenn du kein Angriffsszenario siehst, in dem ICMP intern bei dir eine Rolle spielt, sehe ich keinen Grund ICMP intern überhaupt zu blocken.Wie gesagt, ich mach das primär aus Lerngründen. Aber spricht aus Deiner Sicht etwas gegen einen generellen Kompromiss zwischen "nur was gebraucht wird" und "alles offen"? Das ist ja auch das Credo in den von uns verlinkten Artikeln.
Dass man auf dem WAN eingehend filtert, klar warum nicht. Was man hier durchlassen kann und was nicht, steht ja unter anderem bei den Links mit bei.Ja, da scheint mir dein zweiter Link sehr hilfreich, zumindest was IPv6 betrifft. Vielen Dank hierfür.
Der "PF" kennt bei icmp "stateful", auch wenn es das Protokoll eigentlich nicht kann und lässt somit automatisch "replys" raus wenn ein "request" eingehend erlaubt wurde.Pure Magie! Danke fürs Bretter entfernen. :)
Time Exceeded tritt bei nem normalen Ping ja eigentlich eher selten auf.Ist es nicht so, dass wenn ich ICMP Time Exceeded blocke, ein Traceroute nicht funktionieren dürfte?
OPNsense unterscheidet hier leider in der Auswahl bei IPv4 und IPv6 überhaupt nicht nach Typen.Oh, huch, man kann sogar unsinnige Kombinationen speichern.
Das wäre ggf. ein Fall für ein Feature Request bzw. Bugreport, dass hier die Oberfläche überhaupt nicht unterscheidet zwischen 4 und 6, sondern immer alle ihr bekannten Typen (und dazu etwas wenige) anbietet.Unbedingt. Vielleicht wäre es zudem sinnvoll, zusätzlich zu den Bezeichnungen, auch noch (Type x, Code y) anzuzeigen. Und wie wäre es, wenn man mehrere Typen in einer Regel selektieren/zusammenfassen könnte?
Darum ist es auch schwer, auf dem WAN "reply, timex, squench, unreach" als ICMP types freizugeben? Tja nun. Einmauern hat historisch auch immer gut geklappt ;)
Pass, | WAN, | IPv4, | ICMP, | Destination Unreachable, | Source: any, | Destination: any* |
Pass, | WAN, | IPv4, | ICMP, | Time Exceeded, | Source: any, | Destination: any* |
Pass, | LAN, | IPv4, | ICMP, | Echo request, | Source: LAN net, | Destination: LAN address |
Block, | LAN, | IPv4, | ICMP, | Echo request, | Source: LAN net, | Destination: RFC 1918* |
Pass, | LAN, | IPv4, | ICMP, | any, | Source: LAN net, | Destination: RFC 1918 |
Pass, | LAN, | IPv4, | ICMP, | Echo request, | Source: LAN net, | Destination: ! RFC 1918 |
Pass, | LAN, | IPv4, | ICMP, | Destination Unreachable, | Source: LAN net, | Destination: ! RFC 1918 |
Pass, | LAN, | IPv4, | ICMP, | Time Exceeded, | Source: LAN net, | Destination: ! RFC 1918 |
Oh, ich bin jetzt gerade noch über diesen Thread hier gestolpert:
https://forum.opnsense.org/index.php?topic=8736.msg38955#msg38955
Wenn ich das richtig verstanden habe und die Analyse von @indyspeed stimmt, dann sind zumindest meine abgehenden Regeln eh für die Katz. :(
Pass, | LAN, | IPv4, | ICMP, | Echo Request, | Source: LAN net, | Destination: LAN address *1 |
Block, | LAN, | IPv4, | ICMP, | Echo Request, | Source: LAN net, | Destination: RFC 1918 *1 |
Block, | LAN, | IPv6, | ICMP, | Echo Request, | Source: LAN net, | Destination: RFC 1918 *1 |
Pass, | LAN, | IPv4+6, | ICMP, | any, | Source: LAN net, | Destination: any |
Pass, | WAN, | IPv4, | ICMP, | Echo Request, | Source: any, | Destination: WAN address |
Pass, | WAN, | IPv4, | ICMP, | Destination Unreachable, | Source: any, | Destination: WAN address *2 |
Pass, | WAN, | IPv4, | ICMP, | Time Exceeded, | Source: any, | Destination: WAN address *2 |
Pass, | WAN, | IPv6, | ICMP, | Destination Unreachable, | Source: any, | Destination: WAN address *2 |
Pass, | WAN, | IPv6, | ICMP, | Packet Too Big, | Source: any, | Destination: WAN address *3 |
Pass, | WAN, | IPv6, | ICMP, | Time Exceeded, | Source: any, | Destination: WAN address *2 |
Pass, | WAN, | IPv6, | ICMP, | Parameter Problem, | Source: any, | Destination: WAN address *2 |
Pass, | WAN, | IPv6, | ICMP, | Echo Request, | Source: any, | Destination: WAN address |
Pass, | WAN, | IPv6, | ICMP, | Echo Reply, | Source: any, | Destination: WAN address *2 |
root@OPNsense:~ # cat /tmp/rules.debug | grep ipv6-icmp
pass in log quick inet6 proto ipv6-icmp from {any} to {any} icmp6-type {1,2,135,136} keep state label "IPv6 requirements (ICMP)"
pass out log quick inet6 proto ipv6-icmp from {(self)} to {fe80::/10,ff02::/16} icmp6-type {129,133,134,135,136} keep state label "IPv6 requirements (ICMP)"
pass in log quick inet6 proto ipv6-icmp from {fe80::/10} to {fe80::/10,ff02::/16} icmp6-type {128,133,134,135,136} keep state label "IPv6 requirements (ICMP)"
pass in log quick inet6 proto ipv6-icmp from {ff02::/16} to {fe80::/10} icmp6-type {128,133,134,135,136} keep state label "IPv6 requirements (ICMP)"