MikroTik Knowledge‑Base: Beispiel Firewall‑Filterkonfiguration¶
Diese Konfiguration ist ein Beispiel für ein Firewall‑Filterskript unter RouterOS (z. B. v6.x), das Netzwerkzonen („public“, „local“, „guest“) über Interface‑Listen trennt, gewisse Dienste freigibt, FastTrack nutzt und Standardregeln für INPUT / FORWARD / OUTPUT definiert.
Inhalt & Zweck¶
- Aufteilung in Netzwerkzonen (Interface‑Listen:
public,local,guest). - Regeln, die eingehenden Verkehr zu Router (INPUT‑Chain) zulassen für bestimmte Ports / Protokolle aus der „public“-Zone (z. B. HTTP, SSH, VPN etc.).
- Regeln zur Regelung von Verkehr zwischen Zonen (z. B. PUBLIC → LOCAL, LOCAL → PUBLIC, GUEST etc.).
- Standard‑Politiken (Default policy) für INPUT, FORWARD, OUTPUT mit Akzeptieren von etablierten / relativen Verbindungen, Ablehnen von ungültigen Zuständen etc.
- Verwendung von FastTrack für Performance bei weitergeleiteten Verbindungen.
Auszug des Skripts¶
# jan/29/2018 22: 4:17 by RouterOS 6.41
/interface list add name=public comment="public network"
/interface list add name=local comment="local network"
/interface list add name=guest comment="guest network"
# Change the interfaces below to your own
/interface list member add list=public interface=ether1
/interface list member add list=local interface=bridge
/ip firewall filter
# WARNING! All filter rules will be deleted :delay 10 remove [find dynamic=no]
## Enable FastTrack for all zones
add chain=forward action=fasttrack-connection connection-state=established,related comment="Enable FastTrack for all zones"
## PUBLIC ---> ROUTER
add chain=input action=jump jump-target=PUBLIC-TO-ROUTER in-interface-list=public comment="PUBLIC ---> ROUTER"
add chain=PUBLIC-TO-ROUTER action=accept protocol=tcp dst-port=80 comment="DISABLE IT IF NOT NEEDED"
add chain=PUBLIC-TO-ROUTER action=accept protocol=tcp dst-port=22 comment="DISABLE IT IF NOT NEEDED"
add chain=PUBLIC-TO-ROUTER action=accept protocol=tcp dst-port=1194 comment="OpenVPN"
add chain=PUBLIC-TO-ROUTER action=accept protocol=udp dst-port=500,4500 comment="L2TP/IPSec"
add chain=PUBLIC-TO-ROUTER action=accept protocol=udp dst-port=1701 ipsec-policy=in,ipsec
add chain=PUBLIC-TO-ROUTER action=accept protocol=ipsec-esp
add chain=PUBLIC-TO-ROUTER action=accept protocol=tcp dst-port=1723 comment="PPTP"
add chain=PUBLIC-TO-ROUTER action=accept protocol=gre
add chain=PUBLIC-TO-ROUTER action=return
## PUBLIC <--- ROUTER
add chain=output action=jump jump-target=ROUTER-TO-PUBLIC out-interface-list=public comment="PUBLIC <--- ROUTER"
add chain=ROUTER-TO-PUBLIC action=return
## LOCAL ---> ROUTER
add chain=input action=jump jump-target=LOCAL-TO-ROUTER in-interface-list=local comment="LOCAL ---> ROUTER"
add chain=LOCAL-TO-ROUTER action=accept
## LOCAL <--- ROUTER
add chain=output action=jump jump-target=ROUTER-TO-LOCAL out-interface-list=local comment="LOCAL <--- ROUTER"
add chain=ROUTER-TO-LOCAL action=accept
## PUBLIC ---> LOCAL
add chain=forward action=jump jump-target=PUBLIC-TO-LOCAL in-interface-list=public out-interface-list=local comment="PUBLIC ---> LOCAL"
add chain=PUBLIC-TO-LOCAL action=accept connection-state=established,related,untracked
add chain=PUBLIC-TO-LOCAL action=drop connection-state=invalid
add chain=PUBLIC-TO-LOCAL action=drop connection-state=new connection-nat-state=!dstnat
add chain=PUBLIC-TO-LOCAL action=accept
## Default Policies
add chain=input action=accept connection-state=established,related,untracked comment="[Default policy] INPUT"
add chain=input action=drop connection-state=invalid
add chain=input action=accept protocol=icmp
add chain=input action=drop
add chain=forward action=accept connection-state=established,related,untracked comment="[Default policy] FORWARD"
add chain=forward action=accept ipsec-policy=in,ipsec
add chain=forward action=accept ipsec-policy=out,ipsec
add chain=forward action=drop connection-state=invalid
add chain=forward action=drop connection-state=new connection-nat-state=!dstnat in-interface-list=public
add chain=forward action=reject reject-with=icmp-net-prohibited disabled=yes comment="Forbid connections between networks"
add chain=output action=accept comment="[Default policy] OUTPUT"
Bedeutung der Abschnitte & Regeln¶
| Abschnitt | Zweck |
|---|---|
| Interface Listen / Zonen | Zuweisung von Interfaces zu Netzwerkzonen wie „public“, „local“, „guest“. |
| FastTrack | Beschleunigt Forwarded Traffic, der bereits etabliert oder verwandt ist, durch Optimierung der Paketverarbeitung. |
| PUBLIC → ROUTER | Regelt, welche Dienste von außen direkt zum Router erlaubt sind (z. B. SSH, HTTP, VPN). |
| Zonenkommunikation | Definiert, wie Zonen untereinander kommunizieren dürfen (z. B. Guest restriktiv). |
| Default Policies | Legt Standardverhalten für INPUT, FORWARD, OUTPUT fest: akzeptiert etablierte/related Pakete, verwirft invalid/new ohne NAT. |
Anpassung & Hinweise¶
- Interfaces anpassen: Zonen‑Interfaces (
ether1,bridge) anpassen. - Dienste prüfen: Nur benötigte Ports öffnen.
- ICMP: „accept protocol=icmp“ ggf. restriktiver gestalten.
- FastTrack: Aktivieren, wenn keine tiefe Inspektion nötig.
- Regelreihenfolge: Jumps und Returns in richtiger Reihenfolge wichtig.
- Zustandsüberwachung: Auf korrekte Nutzung von
connection-stateachten.
Best Practices & Sicherheit¶
- Nur benötigte Dienste nach außen öffnen.
- Dropped Pakete ggf. loggen.
- Regelmäßig testen und prüfen.
- Guest-Netz stark einschränken.
- RouterOS aktuell halten.
Quelle¶
https://gist.githubusercontent.com/SmartFinn/f675cff768fcdd4862fe/raw/fcaa921c7434fbfb003ea99de28cb0f30c5c7fd5/ip_firewall_filter.rsc