nmartin89
Goto Top

Mikrotik Firewall Rules so passend?

Hallo Leute face-smile

ich hab mich mal wieder an meinen kleinen Mikrotik heXs gesetzt und die Firewall für ipv4 und v6 angepasst. Nun bin ich mir nicht sicher ob das Regelwerk so passend ist sowie auch die Reihenfolge so passt. Geht erstmal nur um das normale Regelwerk. Vlan Regelwerk würde dann dazu kommen.

IPv4:

# 2023-07-27 13:29:30 by RouterOS 7.10.2
# software id = L19Pxssx
# model = RB760iGS
# serial number = HD90xxxx
/ip firewall filter
add action=fasttrack-connection chain=forward connection-state=\
    established,related hw-offload=yes
add action=accept chain=input in-interface=!ether1 protocol=icmp
add action=accept chain=input comment="IPSEC zur Firewall erlauben" \  
    connection-state="" dst-port=500,1701,4500 protocol=udp  
add action=accept chain=input connection-state="" protocol=ipsec-esp  
add action=accept chain=input comment="Wireguard zur Firewall erlauben" \  
    dst-port=51820 in-interface=ether1 protocol=udp
add action=accept chain=input comment="VLAN10 | DNS erlauben" dst-port=53 \  
    in-interface=vlan10 protocol=udp
add action=accept chain=input dst-port=53 in-interface=vlan10 protocol=tcp
add action=accept chain=input comment="Zugriff zur Firewall" \  
    in-interface-list=LAN
add action=accept chain=input in-interface-list=VPN
add action=accept chain=input comment=\
    "ALLG. | Aufgebaute Verbindungen erlauben - Estab.,related" \  
    connection-state=established,related
add action=accept chain=forward comment="LAN | Internetzugriff" \  
    in-interface-list=LAN out-interface=ether1
add action=accept chain=forward comment=\
    "ALLG. | Aufgebaute Verbindungen erlauben - Estab.,related" \  
    connection-state=established,related
add action=accept chain=forward comment=\
    "ALLG. | Aufgebaute Verbindungen erlauben"  
add action=drop chain=forward comment="ALLG. | Alles adnere verwerfen"  
add action=drop chain=input comment=\
    "ALLG. | Alles ohne Verbindungsstatus blockieren+DDOS" connection-state=\  
    invalid
add action=drop chain=input connection-state=new protocol=tcp tcp-flags=!syn
add action=drop chain=input protocol=tcp psd=20,3s,10,2
add action=drop chain=input limit=2,2:packet protocol=tcp tcp-flags=rst
add action=drop chain=input connection-state=new protocol=tcp tcp-mss=\
    !536-65535
add action=drop chain=input
/ip firewall nat
add action=masquerade chain=srcnat out-interface-list=WAN
add action=dst-nat chain=dstnat comment=Minecraft dst-port=25565 \
    in-interface=ether1 protocol=tcp to-addresses=172.16.10.106 to-ports=\
    25565
add action=dst-nat chain=dstnat comment="Forwarding rule" dst-port=11800 \  
    in-interface=ether1 protocol=tcp to-addresses=172.16.10.20 to-ports=3389
add action=dst-nat chain=dstnat comment=Bitwarden dst-port=8555 in-interface=\
    ether1 protocol=tcp to-addresses=172.16.10.3 to-ports=8555
add action=dst-nat chain=dstnat comment=NPM dst-port=443 in-interface=ether1 \
    protocol=tcp to-addresses=172.16.10.3 to-ports=443
add action=dst-nat chain=dstnat dst-port=80 in-interface=ether1 protocol=tcp \
    to-addresses=172.16.10.3 to-ports=80
add action=dst-nat chain=dstnat comment=Nextcloud disabled=yes dst-port=8443 \
    in-interface=ether1 protocol=tcp to-addresses=172.16.10.4 to-ports=443
add action=dst-nat chain=dstnat comment=WOL dst-address=172.16.10.0/24 \
    dst-port=9 protocol=udp to-addresses=172.16.10.254
add action=dst-nat chain=dstnat dst-address=172.17.17.0/24 dst-port=9 \
    protocol=udp to-addresses=172.17.17.254
/ip firewall raw
add action=drop chain=prerouting limit=!1,1:packet protocol=icmp
/ip firewall service-port
set ftp disabled=yes
set pptp disabled=yes
set rtsp disabled=no

screenshot 2023-07-27 145828

IPv6:

# 2023-07-27 13:38:26 by RouterOS 7.10.2
# software id = L19Pxxxx
#
# model = RB760iGS
# serial number = HD9xxx
/ipv6 address
# address pool error: pool not found: DHCPv6-POOL-64 (4)
add from-pool=DHCPv6-POOL-64 interface=vlan10
# address pool error: pool not found: DHCPv6-POOL-64 (4)
add from-pool=DHCPv6-POOL-64 interface=vlan20
/ipv6 dhcp-client
add add-default-route=yes interface=ether1 pool-name=DHCPv6-POOL-64 request=\
    prefix
/ipv6 firewall address-list
add address=fe80::/16 disabled=yes list=allowed
add address=ff02::/16 comment=multicast disabled=yes list=allowed
/ipv6 firewall filter
add action=accept chain=input comment="ALLG.-> FW -Ping von WAN blockieren" \  
    in-interface-list=!WAN protocol=icmpv6
add action=accept chain=forward comment="ALLG Aufgebaute Pings erlauben" \  
    protocol=icmpv6
add action=accept chain=input comment="ALLG.-> VLAN10 DNS" dst-port=53 \  
    in-interface=vlan10 protocol=udp
add action=accept chain=input dst-port=53 in-interface=vlan10 protocol=tcp
add action=accept chain=input comment=\
    "ALLG. -> WAN Aufgebaute Verbindung Erlauben /established , related" \  
    connection-state=established,related
add action=accept chain=input comment=\
    "WAN-> FW DHCPv6-Client prefix delegation." dst-port=546 in-interface=\  
    ether1 protocol=udp src-address=fe80::/16 src-port=547
add action=drop chain=input in-interface=ether1 log-prefix=dropLL_from_public \
    src-address=fe80::/16
add action=drop chain=input comment="ALLG. Ung\FCltige Pakete verwerfen" \  
    connection-state=invalid
add action=drop chain=input comment=\
    "WAN-> FW Alles verwerfen was eine Verbindung aufbauen m\F6chte" \  
    connection-state=new in-interface=ether1
add action=accept chain=forward comment=\
    "ALLG. Aufgebaute Verbindungen erlauben" connection-state=\  
    established,related
add action=drop chain=forward comment=\
    "ALLG. Ung\FCltige Pakete verwerfen invalid" connection-state=invalid \  
    log-prefix=ipv6,invalid
add action=accept chain=forward comment=\
    "LAN + VLANs Neue Verbindungen Erlauben" connection-state=new \  
    in-interface=!ether1
add action=drop chain=forward comment="ALLG. Ung\FCltige Pakete Verwerfen" \  
    connection-state=invalid
add action=drop chain=forward comment="WAN->FW Neue Pakete Verwerfen" \  
    connection-state=new in-interface=ether1
/ipv6 firewall nat
add action=masquerade chain=srcnat
/ipv6 nd
set [ find default=yes ] disabled=yes
add dns=fe80::4cc3:cfff:fe2e:2414 interface=vlan10 other-configuration=yes
add dns=fe80::4cc3:cfff:fe2e:2414 interface=vlan20 other-configuration=yes

screenshot 2023-07-27 145924

Content-Key: 7969147008

Url: https://administrator.de/contentid/7969147008

Printed on: May 2, 2024 at 01:05 o'clock

Mitglied: 7907292512
Solution 7907292512 Jul 27, 2023 updated at 14:04:32 (UTC)
Goto Top
Moin.
/ip firewall filter
add action=fasttrack-connection chain=forward connection-state=\
established,related hw-offload=yes
Vor die Fasttrack Regel gehören noch Regeln zur Ausnahme von IPSec Traffic denn IPSEC Traffic muss zwingend durch die Firewall und darf nicht durch Fasttrack laufen sonst wirst du suuuuper langsamen IPSec Traffic und verworfene Pakete sehen!!

add action=accept chain=forward comment="IPSEC IN - fasttrack bypass" ipsec-policy=in,ipsec  
add action=accept chain=forward comment="IPSEC OUT - fasttrack bypass" ipsec-policy=out,ipsec  
add action=fasttrack-connection chain=forward connection-state=established,related hw-offload=yes
Des weiteren musst du im SRCNAT die Netze die im VPN laufen vom Masquerading ausnehmen damit diese innerhalb des Tunnels nicht geNATet werden.

add action=accept chain=input comment="IPSEC zur Firewall erlauben" \
connection-state="" dst-port=500,1701,4500 protocol=udp
Das leere connection-state="" entfernen

add action=accept chain=input connection-state="" protocol=ipsec-esp
Das leere connection-state="" entfernen

add action=accept chain=input comment="VLAN10 | DNS erlauben" dst-port=53 \
in-interface=vlan10 protocol=udp
add action=accept chain=input dst-port=53 in-interface=vlan10 protocol=tcp
add action=accept chain=input comment="Zugriff zur Firewall" \
in-interface-list=LAN

Wenn vlan10 schon in der LAN Interface-Liste ist sind die zwei ersten Regeln für DNS Redundant denn du erlaubst mit der letzten eh jeglichen Traffic auf den Router.


add action=accept chain=forward comment=\
"ALLG. | Aufgebaute Verbindungen erlauben"
FATAL: Damit öffnest du deinen Router komplett jegliche Forwards werden erlaubt, auch vom WAN aus!!

/ip firewall nat
add action=dst-nat chain=dstnat comment="Forwarding rule" dst-port=11800 \
in-interface=ether1 protocol=tcp to-addresses=172.16.10.20 to-ports=3389
RDP aus dem Internet forwarden?? Sau schlechte Idee...


Btw. Bei Firewall sollte der Grundsatz gelten: Never trust anyone else, just fully understand your rules and fix and test them yourself. Also Regeln niemals blind vertrauen schenken.

Gruß siddius
Member: nmartin89
nmartin89 Jul 27, 2023 at 15:11:39 (UTC)
Goto Top
So das habe ich so mal abgeändert.

Problem ist das ich jetzt über den WG tunnel kein internet mehr habe also keine DNS Auflösung.

im Vlan 10 ist der Adguard DNS. und der Windows 2022 als DC zum testen usw.
Also per DHCP wird der DNS vom Windows Server mitgeteilt der leitet Anfragen weiter an den Adguard und der dann an den Hexs.
Mitglied: 7907292512
Solution 7907292512 Jul 27, 2023 updated at 15:26:06 (UTC)
Goto Top
Klar wenn du die DNS Regeln entfernst und das WG Interface nicht Mitglied der LAN Liste ist kommen die ja nich mehr rein face-wink. Also entweder granular die Port öffnen oder Scheuentor über die Interface-Liste, it's you choice face-wink.
Forwarding muss natürlich für das WG Interface erlaubt werden damit die überhaupt irgendwo hinkommen.
Just think before you act.
Member: aqui
Solution aqui Jul 27, 2023 updated at 15:53:15 (UTC)
Goto Top
Vor die Fasttrack Regel gehören noch Regeln zur Ausnahme von IPSec Traffic
Das gilt nur für L2TP Regeln oder wenn man das Regelwerk komplett manuell erstellt.
Interessanterweise sind die IPsec Ausnahmeregeln im Default Regelwerk (Mikrotik mit Default Konfiguration) schon enthalten wenn man S-2-S VPNs mit IPsec erstellt. M.W. sind im Default Regelwerk die Default IPsec Regeln aber auch erst nach den Fasttrack Regeln. 🤔
Wenn man sichere Regeln will nimmt man immer die Default Konfig mit WAN an ether1 und passt dann einfach die Konfig nach seinen Wünschen an. face-wink
Mitglied: 7907292512
Solution 7907292512 Jul 27, 2023 updated at 16:30:14 (UTC)
Goto Top
Zitat von @aqui:
... oder wenn man das Regelwerk komplett manuell erstellt.
Macht er ja hier wie man sieht face-smile.
IPSec muss aber nicht nur bei L2TP ausgenommen werden das gilt generell für IPSec-Traffic weil dieser aus Prinzip nicht durch Fasttrack laufen darf. Wenn man sich dazu mal das RouterOS Flow-Schaubild anschaut wird auch klar warum das so sein muss.
Interessanterweise sind die IPsec Ausnahmeregeln im Default Regelwerk (Mikrotik mit Default Konfiguration) schon enthalten wenn man S-2-S VPNs mit IPsec erstellt. M.W. sind im Default Regelwerk die Default IPsec Regeln aber auch erst nach den Fasttrack Regeln. 🤔
Es gibt wie immer mehrere Wege nach Rom.
Wenn man sichere Regeln will nimmt man immer die Default Konfig mit WAN an ether1 und passt dann einfach die Konfig nach seinen Wünschen an. face-wink
Jepp, als Anfänger sicher eine erste Basis auf die man aufbauen kann, gibt's auch hier für den TO zum nachlesen
https://help.mikrotik.com/docs/display/ROS/Building+Your+First+Firewall
https://help.mikrotik.com/docs/display/ROS/Building+Advanced+Firewall
Mitglied: 7907292512
Solution 7907292512 Jul 27, 2023 updated at 16:35:57 (UTC)
Goto Top
Das gleiche gilt auch wenn man Mangle-Rules benutzt und Traffic mit Connection-Marks versieht. Die dürfen auch nicht durchs Fasttracking da sonst Firewall-Regeln die darauf aufbauen nicht mehr abgearbeitet werden wie bspw. das Setzen von Routing-Tags.
Bei Fasttrack ist also generell Vorsicht geboten und man muss wissen was man tut, sonst vermasselt es einem gerne mal einen Tag wenn man Ursache und Wirkung nicht kennt.
Member: aqui
Solution aqui Jul 27, 2023 at 16:35:54 (UTC)
Goto Top
Das ist ein guter Hinweis! 👍
Das gilt aber vermutlich nicht für die Fastrack Counter Dummy Regel die ganz am Anfang des Default Regelwerkes steht, oder?
fwl2neu.
Mitglied: 7907292512
Solution 7907292512 Jul 27, 2023 updated at 16:43:27 (UTC)
Goto Top
Das gilt aber vermutlich nicht für die Fastrack Counter Dummy Regel die ganz am Anfang der default Regel steht, oder?
Die Fasttrack-Counter ist eh nur ein reiner dynamisch generierter passhrough posten der wird immer zu beginn angelegt das ist OK.

Die Regeln die du da in der Grafik markiert hast haben aber mit Fasttrack rein gar nichts zu tun, die sind eh in der INPUT-CHAIN. Fasttracking findet aber nur in der FORWARD-CHAIN statt denn Fasttrack ist ja gerade dazu da bestehende Verbindungen zu beschleunigen in dem man sie am Firewall-Processing vorbei fließen lässt.
Member: aqui
Solution aqui Jul 27, 2023 updated at 17:22:33 (UTC)
Goto Top
Nee, sollten sie auch nicht. Das ist nur das Regelwerk für L2TP VPN Zugriff von außen. Diese Regeln muss man immer setzen. Die werden komischerweise nicht durch die IPsec Regeln mitabgedeckt. Fehlen die scheitert der externe L2TP Zugriff.
Member: commodity
Solution commodity Jul 27, 2023 updated at 20:55:30 (UTC)
Goto Top
M.W. sind im Default Regelwerk die Default IPsec Regeln aber auch erst nach den Fasttrack Regeln. 🤔
Nein, wie der Screenshot in Deinem vorletzten Post auch zeigt.

man muss wissen was man tut, sonst vermasselt es einem gerne mal einen Tag...
Wem sagst Du das! face-big-smile Das gilt ja generell. Ich habe mir letztens nen Wolf gesucht, um ein merkwürdiges Scheitern von ICMP-Aufrufen zu klären und konnte die Regel, die da im Weg war partout nicht finden. Bis mir einfiel, mal bei Raw reinzuschauen face-devilish Dann war plötzlich alles ganz klar face-big-smile

Viele Grüße, commodity
Member: nmartin89
nmartin89 Jul 30, 2023 at 20:50:57 (UTC)
Goto Top
Ich habe mich nochmal ran gesetzt und die Fehler geändert.

1. Frage was ist hiermit gemeint?
Des weiteren musst du im SRCNAT die Netze die im VPN laufen vom Masquerading ausnehmen damit diese innerhalb des Tunnels nicht geNATet werden.

2. Frage wenn ich z.b. den RDP nach außen öffne geschied das doch über NAT also mit der Regel
add action=dst-nat chain=dstnat comment="Forwarding rule" dst-port=11800 \  
    in-interface=ether1 log=yes protocol=tcp to-addresses=172.16.10.20 \
    to-ports=3389
Und nicht mit dem Normalen Regelwerk Input oder Forward?

Einfach Halber für mich zum testen mal gemacht es geht keine RDP Verbindung raus bzw rein .

Nur wenn ich die Regel
add action=drop chain=forward comment="ALLG. | Alles andere verwerfen"  
Deaktiviere.

wo liegt hier theoretisch der Fehler?

VPN Steht auch S2S klappt . Nur Verständnis halber warum das nicht klappt. Alle anderen NAT Regeln zum Minecraft Server Klappen z.b.


/ip firewall filter
add action=accept chain=forward comment="IPSEC IN - fasttrack bypass" \  
    ipsec-policy=in,ipsec
add action=accept chain=forward comment="IPSEC OUT - fasttrack bypass" \  
    ipsec-policy=out,ipsec
add action=accept chain=input comment="Ping bis auf WAN" in-interface=!ether1 \  
    protocol=icmp
add action=accept chain=input comment="IPSEC zur Firewall erlauben" dst-port=\  
    500 in-interface=ether1 protocol=udp
add action=accept chain=input dst-port=4500 in-interface=ether1 protocol=udp
add action=accept chain=input dst-port=1701 in-interface=ether1 protocol=udp
add action=accept chain=input in-interface=ether1 protocol=ipsec-esp
add action=accept chain=input comment="Wireguard zur Firewall erlauben" \  
    dst-port=51820 in-interface=ether1 protocol=udp
add action=accept chain=input comment="\"VLAN10 | DNS erlauben\"" dst-port=53 \  
    in-interface=vlan10 protocol=tcp
add action=accept chain=input dst-port=53 in-interface=vlan10 protocol=udp
add action=accept chain=input comment="Zugriff zur Firewall" in-interface=\  
    vlan20
add action=accept chain=input in-interface=vlan10
add action=accept chain=input in-interface=wireguard1
add action=accept chain=input in-interface=all-ppp
add action=accept chain=input comment=\
    "ALLG. | Aufgebaute Verbindungen erlauben - Estab.,related" \  
    connection-state=established,related
add action=log chain=input disabled=yes
add action=drop chain=input comment=\
    "ALLG. | Alles ohne Verbindungsstatus blockieren"  
add action=fasttrack-connection chain=forward comment=Fasttrack \
    connection-state=established,related hw-offload=yes
add action=accept chain=forward comment="WG | Internetzugriff" in-interface=\  
    wireguard1
add action=accept chain=forward comment="L2TP | Internetzugriff" \  
    in-interface=all-ppp
add action=accept chain=forward comment="VLAN 10 | Internetzugriff" \  
    in-interface=vlan10
add action=accept chain=forward comment="VLAN 20 | Internetzugriff" \  
    in-interface=vlan20
add action=accept chain=forward comment="HTTP/S zum NPM erlauben" \  
    dst-address=172.16.10.3 dst-port=80,443 protocol=tcp
add action=accept chain=forward comment=\
    "ALLG. | Aufgebaute Verbindungen erlauben - Estab.,related" \  
    connection-state=established,related
add action=drop chain=forward comment="ALLG. | Alles andere verwerfen"  
/ip firewall nat
add action=masquerade chain=srcnat out-interface-list=WAN
add action=dst-nat chain=dstnat comment="Forwarding rule" dst-port=11800 \  
    in-interface=ether1 log=yes protocol=tcp to-addresses=172.16.10.20 \
    to-ports=3389
add action=dst-nat chain=dstnat comment=NPM dst-port=443 in-interface=ether1 \
    protocol=tcp to-addresses=172.16.10.3 to-ports=443
add action=dst-nat chain=dstnat dst-port=80 in-interface=ether1 protocol=tcp \
    to-addresses=172.16.10.3 to-ports=80
add action=dst-nat chain=dstnat comment=Minecraft dst-port=25565 \
    in-interface=ether1 log=yes protocol=tcp to-addresses=172.16.10.106 \
    to-ports=25565
add action=dst-nat chain=dstnat comment=Bitwarden dst-port=8555 in-interface=\
    ether1 log=yes protocol=tcp to-addresses=172.16.10.3 to-ports=8555
add action=dst-nat chain=dstnat comment=Nextcloud disabled=yes dst-port=8443 \
    in-interface=ether1 protocol=tcp to-addresses=172.16.10.4 to-ports=443
add action=dst-nat chain=dstnat comment=WOL dst-address=172.16.10.0/24 \
    dst-port=9 protocol=udp to-addresses=172.16.10.254
/ip firewall raw
add action=drop chain=prerouting limit=!1,1:packet protocol=icmp
add action=drop chain=prerouting limit=!1,1:packet protocol=icmp
add action=drop chain=prerouting dst-address-list=ddos-targets \
    src-address-list=ddos-attackers
/ip firewall service-port
set ftp disabled=yes
set pptp disabled=yes
set rtsp disabled=no
Member: commodity
Solution commodity Jul 30, 2023 updated at 21:39:46 (UTC)
Goto Top
wo liegt hier theoretisch der Fehler?
DNAT ist keine Forward-Regel, sondern schreibt nur die Adresse um.
Lies den ersten Satz hier: https://de.wikipedia.org/wiki/Netzwerkadress%C3%BCbersetzung#Verwendung_ ...

Sehr anschaulich, wenn man mal 5 Minuten investiert:
https://help.mikrotik.com/docs/display/ROS/Packet+Flow+in+RouterOS#Packe ...

Es bleibt aber bei dem klugen Rat des Kollegen @7907292512:
RDP aus dem Internet forwarden?? Sau schlechte Idee...
Man braucht keine Firewall, wenn man solche Löcher bohrt.

Viele Grüße, commodity
Mitglied: 7907292512
Solution 7907292512 Jul 31, 2023 updated at 09:14:38 (UTC)
Goto Top
Zitat von @nmartin89:

Ich habe mich nochmal ran gesetzt und die Fehler geändert.

1. Frage was ist hiermit gemeint?
Des weiteren musst du im SRCNAT die Netze die im VPN laufen vom Masquerading ausnehmen damit diese innerhalb des Tunnels nicht geNATet werden.

Nun, wenn du die internen Netze nicht vom SRCNAT ausnimmst welches du im SRCNAT am WAN machst dann wird die Quell-Adresse jedes Paketes auf die externe IP der Firewall umgeschrieben, welche dann die Gegenstelle nicht annimmt wegen der Phase2 Policies.
IPSec Traffic gelangt nämlich erst nach dem Postrouting in den IPSec Prozess. Und SRCNAT findet nunmal nur in der POSTROUTING Chain statt!
Schau dir einfach mal das Traffic Flow Chart von RouterOS an.
https://help.mikrotik.com/docs/display/ROS/Packet+Flow+in+RouterOS

1000002053

Pflichtprogramm bei IPSec!!
Diese Regel muss dann auch zwingend vor die generelle SRCNAT Regel!
/ip firewall nat chain=srcnat dst-address=10.11.20.0/24 ipsec-policy=out place-before=0 action=accept

2. Frage wenn ich z.b. den RDP nach außen öffne geschied das doch über NAT also mit der Regel
add action=dst-nat chain=dstnat comment="Forwarding rule" dst-port=11800 \  
    in-interface=ether1 log=yes protocol=tcp to-addresses=172.16.10.20 \
    to-ports=3389
Und nicht mit dem Normalen Regelwerk Input oder Forward?
Richtig,aber wie gesagt RDP ohne Tunnel, da kannst du auch gleich den Offenbarungseid erklären und brauchst keine Firewall, "Security by Obscurity" bringt dir hier auch nichts...


Einfach Halber für mich zum testen mal gemacht es geht keine RDP Verbindung raus bzw rein .
Weil das nur ein Teil ist den du beim Port-Forwarding benötigst. Im DSTNAT wird nur die Zieladresse umgeschrieben, danach geht das Paket in die Forwarding-Decision in der Forwarding-Chain wo du die Verbindung auch erst noch zulassen musst damit sie durchgelassen wird !!
/ip firewall filter add chain=forward connection-nat-state=dstnat in-interface=ether1 action=accept