sat-fan
Goto Top

Firewall mit Löchern ?

Hallo,

nachdem mir in anderen Beiträgen Vorschläge gemacht wurden, meine Firewall zu prüfen und zu überarbeiten habe ich das nun nochmals gemacht.
Es wäre sehr schön, wenn mir jemand konkret sagen könnte, was noch fehlt oder welcher Eintrag noch Fehler enthält.
Ich habe zur Erstellung der Regeln mir bekannten Tutorials und Anleitungen genutzt. Dabei sicher noch einiges Übersehen, oder Regeln in die falsche Reihenflge gesetzt.
Insbesondere ist die Regel in Zeile 36 notwendig um aus dem 100er Netz ins Internet zu kommen. Diese Regel wurde aber als "scheunentor" bezeichnet. Danke für eine konkrete Hilfe !

/ip dns static
add address=10.0.0.85 name=myxxxxxx.duckdns.org
/ip firewall address-list
add address=10.0.0.0/24 list=VLAN1
add address=192.168.1.0/24 list=Wireguard
add address=192.168.10.0/24 list=VLAN10
add address=192.168.20.0/24 list=VLAN20
add address=192.168.100.0/24 list=VLAN100
/ip firewall filter
add action=accept chain=forward comment="Foreward Homeassistant" dst-address=\  
    10.0.0.85 dst-port=8123 protocol=tcp
add action=drop chain=input comment="WAN -> FW | Ping blockieren" \  
    in-interface=pppoe-out1 protocol=icmp
add action=accept chain=input comment=\
    "ALLG | Erlauben: established,related,untracked" connection-state=\  
    established,related,untracked
add action=accept chain=input comment="LAN -> FW erlauben" in-interface=\  
    bridge
add action=drop chain=input comment="Rest verwerfen" connection-state=""  
add action=accept chain=forward comment="allow VLAN100 to VLAN20" \  
    dst-address-list=VLAN20 src-address-list=VLAN100
add action=accept chain=forward comment="allow VLAN100  internet" \  
    out-interface-list=WAN src-address-list=VLAN100
add action=accept chain=forward comment="allow VLAN100 to VLAN1" \  
    dst-address-list=VLAN1 src-address-list=VLAN100
add action=accept chain=forward comment="allow VLAN10 only internet" \  
    out-interface-list=WAN src-address-list=VLAN10
add action=accept chain=forward comment="allow VLAN1  internet" \  
    out-interface-list=WAN src-address-list=VLAN1
add action=accept chain=forward comment="allow VLAN20 only Internet" \  
    out-interface-list=WAN src-address-list=VLAN20
add action=accept chain=forward comment="allow VLAN1 to VLAN20" \  
    dst-address-list=VLAN20 src-address-list=VLAN1
add action=accept chain=forward comment="allow VLAN1 to VLAN100" \  
    dst-address-list=VLAN100 src-address-list=VLAN1
add action=accept chain=forward comment=\
    "ALLG. | Aufgebaute Verbindungen erlauben"  
add action=drop chain=input comment=\
    "ALLG.| Alles ohne Verbindungsstatus DROP" connection-state=invalid  
add action=accept chain=input comment="WAN -> FW | WireGuard-Zugriff" \  
    dst-port=13331 protocol=udp
add action=accept chain=input dst-address=192.168.1.1 in-interface=\
    wireguard-vpn
add action=drop chain=input comment="drop all not coming from LAN" \  
    in-interface-list=!LAN
add action=accept chain=forward comment="VPN -> LAN | Netzwerkzugriff" \  
    dst-address=!192.168.1.0/24 in-interface=wireguard-vpn out-interface=\
    all-vlan
add action=accept chain=forward comment=\
    "LAN -> WAN | Internet zugriff erlauben" in-interface=wireguard-vpn \  
    out-interface=pppoe-out1
add action=accept chain=forward comment=\
    "LAN -> WAN | Internet zugriff erlauben" in-interface=bridge \  
    out-interface=pppoe-out1
add action=drop chain=forward comment="ALLG. | Alles andere verwerfen"  
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" \  
    ipsec-policy=out,none out-interface-list=WAN
add action=dst-nat chain=dstnat comment="Port Forward 8123 TCP" dst-port=8123 \  
    in-interface=pppoe-out1 protocol=tcp to-addresses=10.0.0.85 to-ports=443
add action=dst-nat chain=dstnat comment="Port Forward 443 TCP" dst-port=443 \  
    in-interface=pppoe-out1 protocol=tcp to-addresses=10.0.0.85 to-ports=443
add action=accept chain=dstnat comment=\
    "WAN -> LAN | SIP-Anbieter Netcom zu FritzBox fr Telefonie" \  
    in-interface-list=WAN protocol=tcp src-address=80.69.193.112 src-port=\
    5060 to-addresses=10.0.0.111 to-ports=5060
add action=accept chain=dstnat comment=\
    "WAN -> LAN | SIP-Anbieter Netcom zu FritzBox fr Telefonie" \  
    in-interface-list=WAN protocol=udp src-address=80.69.193.112 src-port=\
    5060 to-addresses=10.0.0.111 to-ports=5060
add action=accept chain=dstnat comment=\
    "WAN -> LAN | SIP-Anbieter Netcom zu FritzBox fr Telefonie" \  
    in-interface-list=WAN protocol=udp src-address=80.69.193.112 src-port=\
    7077 to-addresses=10.0.0.111 to-ports=7077
add action=accept chain=dstnat comment=\
    "WAN -> LAN | SIP-Anbieter Netcom zu FritzBox fr Telefonie" \  
    in-interface-list=WAN protocol=udp src-address=80.69.193.112 src-port=\
    7078 to-addresses=10.0.0.111 to-ports=7078
add action=accept chain=dstnat comment=\
    "WAN -> LAN | SIP-Anbieter Netcom zu FritzBox fr Telefonie" \  
    in-interface-list=WAN protocol=udp src-address=80.69.193.112 src-port=\
    7079 to-addresses=10.0.0.111 to-ports=7079
add action=accept chain=dstnat comment=\
    "WAN -> LAN | SIP-Anbieter Netcom zu FritzBox fr Telefonie" \  
    in-interface-list=WAN protocol=udp src-address=80.69.193.112 src-port=\
    7080 to-addresses=10.0.0.111 to-ports=7080
add action=accept chain=dstnat comment=\
    "WAN -> LAN | SIP-Anbieter Netcom zu FritzBox fr Telefonie" \  
    in-interface-list=WAN protocol=udp src-address=80.69.193.112 src-port=\
    7081 to-addresses=10.0.0.111 to-ports=7081
add action=accept chain=dstnat comment=\
    "WAN -> LAN | SIP-Anbieter Netcom zu FritzBox fr Telefonie" \  
    in-interface-list=WAN protocol=udp src-address=80.69.193.112 src-port=\
    7082 to-addresses=10.0.0.111 to-ports=7082
add action=accept chain=dstnat comment=\
    "WAN -> LAN | SIP-Anbieter Netcom zu FritzBox fr Telefonie" \  
    in-interface-list=WAN protocol=udp src-address=80.69.193.112 src-port=\
    7083 to-addresses=10.0.0.111 to-ports=7083
add action=accept chain=dstnat comment=\
    "WAN -> LAN | SIP-Anbieter Netcom zu FritzBox fr Telefonie" \  
    in-interface-list=WAN protocol=udp src-address=80.69.193.112 src-port=\
    7084 to-addresses=10.0.0.111 to-ports=7084
add action=accept chain=dstnat comment=\
    "WAN -> LAN | SIP-Anbieter Netcom zu FritzBox fr Telefonie" \  
    in-interface-list=WAN protocol=udp src-address=80.69.193.112 src-port=\
    7085 to-addresses=10.0.0.111 to-ports=7085
add action=accept chain=dstnat comment=\
    "WAN -> LAN | SIP-Anbieter Netcom zu FritzBox fr Telefonie" \  
    in-interface-list=WAN protocol=udp src-address=80.69.193.112 src-port=\
    7086 to-addresses=10.0.0.111 to-ports=7086
add action=accept chain=dstnat comment=\
    "WAN -> LAN | SIP-Anbieter Netcom zu FritzBox fr Telefonie" \  
    in-interface-list=WAN protocol=udp src-address=80.69.193.112 src-port=\
    7087 to-addresses=10.0.0.111 to-ports=7087
add action=accept chain=dstnat comment=\
    "WAN -> LAN | SIP-Anbieter Netcom zu FritzBox fr Telefonie" \  
    in-interface-list=WAN protocol=udp src-address=80.69.193.112 src-port=\
    7088 to-addresses=10.0.0.111 to-ports=7088
add action=accept chain=dstnat comment=\
    "WAN -> LAN | SIP-Anbieter Netcom zu FritzBox fr Telefonie" \  
    in-interface-list=WAN protocol=udp src-address=80.69.193.112 src-port=\
    7089 to-addresses=10.0.0.111 to-ports=7089

Content-Key: 83703940348

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

Printed on: April 27, 2024 at 17:04 o'clock

Mitglied: 8030021182
8030021182 Dec 02, 2023 updated at 21:38:38 (UTC)
Goto Top
Insbesondere ist die Regel in Zeile 36 notwendig um aus dem 100er Netz ins Internet zu kommen. Diese Regel wurde aber als "scheunentor" bezeichnet.
Vergleiche
add action=accept chain=input comment=\
    "ALLG | Erlauben: established,related,untracked" connection-state=\    
    established,related,untracked
mit
add action=accept chain=forward comment=\
    "ALLG. | Aufgebaute Verbindungen erlauben"  
Und dir sollte auch schon am Kommentar auffallen was bei der Regel für die Forward-Chain fehlt um eine Statefull-Firewall komplett zu machen, die States fehlen!
add action=accept chain=forward connection-state=established,related
Und diese Regeln gehören i.d.R. immer ganz nach oben geschoben da sie die Last der Firewall erheblich reduzieren, da dann für bestehende Verbindungen weniger Regeln evaluiert werden müssen.

Und vor allem wollen wir damit ja nur bereits in der Connection Tracking Tabelle gelistete und von intern aufgebaute Verbindungen auf dem Rückweg wieder zulassen, nicht beliebige wie sie bspw. aus dem WAN initiiert werden könnten.
Mit den States "established und related" sagst du der Firewall genau das, vereinfacht geschrieben: "lasse eine Verbindung zu sofern es in der Connection Tracking Datenbank bereits einen Eintrag für Quelladresse und Quell-Port und Zieladresse und Ziel-Port existiert oder nach Analyse zur Verbindung (related) gehört."

Ohne eine Statefull Firewall müsstest du nämlich immer Regeln für beide Richtungen anlegen und nicht nur für die Ausgehende.

Deswegen lautet für als nächstes deine Hausaufgabe : Lies dich in das Thema Statefull Firewall ein und verstehe das Konzept was dahinter steckt .
https://www.computerweekly.com/de/antwort/Wie-unterscheiden-sich-Statefu ...
Denn auch das ist essentiell für das Verständnis eines Firewall-Regelwerks.

Stay strong💪
Gruß Katrin
Member: sat-fan
sat-fan Dec 02, 2023 updated at 22:33:19 (UTC)
Goto Top
Danke ! Das Hilft zum Verständniss.

leider mache ich mich damit aber zu sehr geschlossen.
Die Amazon API kann dann keine verbindung mehr zu Alexa aufbauen und meine Lichter schalten.
Wenn ich die alte Regel unten einfüge, sehe ich im log das dort wohl der Eintrag durch kommt.

Denke das ist der richtige Part aus dem log

192.168.20.20 ist eine Lampe

Wie kann ich dazu ne Regel machen. Verstehe den log Eintrag nicht wirklich:
forward: in:pppoe-out1 out:vlan-20-IoT, connection-state:established,snat src-mac a4:7b:2c:9f:ee:01, proto TCP (ACK,PSH), 34.158.0.131:80->192.168.20.20:43592, NAT 34.158.0.131:80->(<my_external_ip>:43592->192.168.20.20:43592), len 63
forward: in:pppoe-out1 out:bridge, connection-state:new,dnat proto TCP (SYN), 3.250.228.22:46796-><Home_Assistant_IP>:443, NAT 3.250.228.22:46796->(<my_external_ip:443-><Home_Assistant_IP>:443), len 60


muß ich einen generellen forward von dem Amazon-server zulassen. Tippe mal das ist der mit 3.250.228.22 Oder gibt es eine elegantere Lösung
Member: LordGurke
LordGurke Dec 02, 2023 at 22:40:04 (UTC)
Goto Top
Du droppst ICMP komplett. ICMP ist aber nicht nur Ping, das ist viel mehr und bereitet dir irgendwann Kopfschmerzen weil PMTU Discovery kaputtgeht. Und allerspätestens wenn du da IPv6 hinzufügst geht alles kaputt.
Ob das sinnvoll ist oder nicht steht auf einem anderen Blatt, es gibt zumindest keine Evidenz dafür, dass es irgendeinen Sicherheitsvorteil hat Ping zu verschlucken. Es macht im Zweifel nur das Debugging schwieriger.
Mitglied: 8030021182
8030021182 Dec 02, 2023 updated at 22:59:09 (UTC)
Goto Top
Zitat von @sat-fan:

Danke ! Das Hilft zum Verständniss.

leider mache ich mich damit aber zu sehr geschlossen.
Die Amazon API kann dann keine verbindung mehr zu Alexa aufbauen und meine Lichter schalten.
Amazon baut selbst keine Verbindung auf das macht das Endgerät in deinem Netz, sonst müsste ja jeder Hinz der sich so ein Gerät kauft eine Portweiterleitung am Router machen , da ist also Quatsch mit Soße 🤪.

Wenn ich die alte Regel unten einfüge, sehe ich im log das dort wohl der Eintrag durch kommt.

Denke das ist der richtige Part aus dem log

192.168.20.20 ist eine Lampe

Wie kann ich dazu ne Regel machen. Verstehe den log Eintrag nicht wirklich:

Ganz normaler Log für incoming Traffic einer established Verbindung die das Gerät von intern aufgebaut hat .
muß ich einen generellen forward von dem Amazon-server zulassen.
Nein! Die Verbindungen von dem IOT Gedöhns wird immer von innen aufgebauf und offen gehalten , von extern wird nur die bestehende Verbindung genutzt die das Gerät selbst aufbaut.
Bring das Regelwerk in die richtige Reihenfolge und lege für die Portweiterleitungen entsprechende Forward Chain Freigabe an dann läuft das.

Und nochmal der Hinweis, verwende die Basis-FW-Template wenn du noch am Anfang deiner Erfahrungssammlung mit der FW bist
https://help.mikrotik.com/docs/display/ROS/Building+Your+First+Firewall
Die ist wasserdicht läuft auf jeden Fall und du kannst darauf aufbauen. Wenn du bei Null mit deinem Wissenstand anfängst und dich nur mit Forum da durch kämpfst wird das nichts vernünftiges.

Zum Thema Logging, musst du den Drop der Forward Chain anschauen nicht das was durch geht.
Member: sat-fan
sat-fan Dec 02, 2023 at 22:42:33 (UTC)
Goto Top
Habe die Lösung glaube ich selbst gefunden. Ich brauchte noch eine Forward Regel für port 443 zu Homeassistant. Teste weiter bevor ich hier zu mache. Dank schon mal !
Mitglied: 8030021182
8030021182 Dec 02, 2023 updated at 22:55:14 (UTC)
Goto Top
Natürlich, für jedes DST-NAT brauchst du eine entsprechende Forward-Rule die den Traffic in der Forward-Chain durchlässt.
Aber sowas macht man meist mit einer einzigen Regel wie dieser hier
/ip firewall filter add chain=forward in-interface-list=WAN connection-nat-state=dstnat action=accept place-before=0
Dann reicht es zukünftig nur die DSTNAT Regel anzulegen, denn durch das connection-nat-state=dstnat weis die Forward-Chain das es von einer DSTNAT Regel kommt und kann es dann durchlassen.
Spart dir bei diversen Port-Forwards einiges an Regeln, und du weißt ja hoffentlich das jede Regel zusätzlich den Router potentiell langsamer macht. Deswegen sollte man hier so weit es geht sparsam agieren.
Mitglied: 8030021182
8030021182 Dec 02, 2023 updated at 23:05:25 (UTC)
Goto Top
Ach ja und die ganzen einzelnen Port-Forwards für die Telefonie lassen sich zu einer einzigen zusammenfassen wenn du stattdessen Port-Ranges für hintereinanderliegende Ranges verwendest ...
Member: sat-fan
sat-fan Dec 02, 2023, updated at Dec 03, 2023 at 12:13:52 (UTC)
Goto Top
wow !
Das kann man doch gar nicht alles wissen ... genial. Danke

NACHTRAG:

leider funktioiert dieser eintrag jetzt nicht mehr:

/ip dns static
add address=10.0.0.85 name=my.duckdns.org

d.h. ich kann die webseite https://my.duckdns:442 nicht mehr erreichen.
Member: commodity
commodity Dec 03, 2023 at 13:02:40 (UTC)
Goto Top
Es wäre sehr schön, wenn mir jemand konkret sagen könnte, was noch fehlt oder welcher Eintrag noch Fehler enthält.
Du kannst keine Firewall über ein Forum konfigurieren. Das muss Dir doch klar sein.
Klar gibt es hier (oft sehr gute und) gerne Tipps - die können aber immer nur die Richtung weisen.

Am 2.10. habe ich Dir (vor Anschaffung des Gerätes) geschrieben:
Bei Mikrotik aber immer beachten: Steile Lernkurve! Geht nur mit Lust und Zeit, um sich solide Grundkenntnisse anzueignen.
Überlesen? Vergessen? Ignoriert?

Du musst verstehen. Jede einzelne und individuelle Regel. Und ja, das ist mühsam. Nicht nur für Dich. Kollege @8030021182 geht das im Schlaf von der Hand, aber nicht jeder kann Oberliga. Und trotzdem lohnt sich Router OS auch für Dich (und mich). Wenn Du es ernst nimmst. Über mittlerweile wohl 20 Threads sehe ich diese Erkenntnis nicht.

Wenn Du die Prinzipien verstanden hast, wird es auch zunehmend leichter und interessanter. Und Du wirst sicherer. Nimm Dir ein paar Wochen oder auch Monate Zeit zum Lernen. Gibt gute Kurse, nicht mal teuer: https://mynetworktraining.com/p/mikrotik-bundle-update
Netzwerkgrundlagen sogar in bester Aufbereitung gratis: https://www.youtube.com/watch?v=X344jZ2gowA&list=PLCb8EhYsrW_vHZDA_8 ...

Es bringt Dich hingegen wenig weiter, hier alle 5 Minuten um Rat zu betteln und Dir zugleich nicht die Zeit zu nehmen, die Dinge zu lernen - bzw. statt dessen die diesbezüglichen Ratschläge (s.o.) hier in den Wind zu schreiben. Auf diese Weise wird Dein Netz immer unsicher sein.

Du hast schon ein gutes Grundverständnis, Du kannst das locker schaffen. Mit den Worten von @8030021182:
Stay strong💪
... und fang' endlich an.

Viele Grüße, commodity
Member: sat-fan
sat-fan Dec 03, 2023 at 13:13:20 (UTC)
Goto Top
ja, ich weis ... habe auch Geduld und werde das beherzigen. Aber war halt manchmal etwas im Panik Modus, da mir gesagt wurde wie löchrig ich bin.
Versuche durch intensive Forschung und Test heraus zu finden, warum jetzt plötzlich die static DNS nicht mehr geht und auch warum die SIP Einträge im NAT nicht genutzt werden und ich statt dessen einen forward auf die FB brauche.
Werde ich schon schaffen.

Sorry wenn ich euch Nerve.

Jetzt läuft alles wichtige und die Firewall scheint einigermaßen sicher zu sein. Bis dahin war ich unter Druck, da ich wohl zu früh meine FB als SIP-Sever und client umgestellt hatte und nicht als Firewall vor dem MT

DANKE !!!
Member: commodity
commodity Dec 03, 2023 at 13:30:43 (UTC)
Goto Top
Lernfaulheit zahlt sich nicht aus. Wissen wir doch seit der Grundschule. face-smile
Habe nie verstanden, was so erfüllend daran ist, ohne Verständnis hin und her zu klicken, bis es vielleicht irgendwie geht. Prinzip Hoffnung...

Viele Grüße, commodity
Member: sat-fan
sat-fan Dec 03, 2023 at 13:55:13 (UTC)
Goto Top
Aber die Lernkurve ist bei mir leider oft schon eher ne Wand als ne Steigung. War so stolz alles soweit verstanden zu haben und nun geht der static dns eintrag nicht mehr.

Muss wohl alle schlechte FW Backups wieder einspielen und schauen, warum es plötzlich nicht mehr geht. Frust ist da vorprogrammiert. Vielleicht hole ich doch wieder ne alte FB aus dem Keller und schalte sie dazwischen .
Member: commodity
commodity Dec 03, 2023 at 16:53:37 (UTC)
Goto Top
Dein Problem ist, dass Du als Laie versuchst, in zwei Wochen etwas umzusetzen, was schon zur Grundlagenbildung Monate brauchen würde. Wenn Du denn mal anfangen würdest, statt Dich mit immer neuen Fehlkonfigurationen vom Wesentlichen abzulenken.
Bestimmt kaufst Du Dir auch ne Wärmepumpe, ein paar Rohre und Lot, wenn Du eine neue Heizung brauchst. Gibt bestimmt ein Heizung-Wasser-Sch... Forum face-wink

Viele Grüße, commodity
Mitglied: 8030021182
8030021182 Dec 03, 2023 updated at 19:02:56 (UTC)
Goto Top
Zitat von @sat-fan:
War so stolz alles soweit verstanden zu haben und nun geht der static dns eintrag nicht mehr.

Muss wohl alle schlechte FW Backups wieder einspielen und schauen, warum es plötzlich nicht mehr geht.

Das ist nicht nötig. Logisch und strategisch denken und Debug-Log an der Forward-Block Rule einschalten reicht hier eigentlich völlig:

1. Client fragt seinen DNS-Server nach my.duckdns.org, hier sollte das also der Mikrotik sein wenn er diesen Eintrag finden soll.
2. Client erhält 10.0.0.85 als Antwort, damit schickt der Client sein Paket an sein Default-Gateway sofern die Adresse/Subnetz nicht in seiner eigenen Routing-Tabelle zu finden ist.
3. Der Router erhält das Paket in seiner Forward-Chain und sucht dort nach einem passenden Eintrag der den Traffic von bspw
SRC 192.168.20.20 => DST 10.0.0.85 zulässt. Findet er dort keine passende Regel wird die Verbindung geblockt, weil deine Forward-Chain ja am Ende eine generelle Block-Rule enthält, gibt es stattdessen eine Regel die auf die SRC und DST passt wird das Paket durchgelassen und das Paket erreicht sein Ziel.
Nun weißt du was bei dir fehlt. 🤞

d.h. ich kann die webseite https://my.duckdns:442 nicht mehr erreichen
Wenn du dir den Port nochmals genau anschaust dann weißt du auch warum das nicht geht 🤪🤣. Aber immer erst voreilig ins Forum schreiben statt vorher mal selbst etwas länger die grauen Zellen anzustrengen ...

Leider bist du auch so stur und nimmst nicht mal das Template aus der Mikrotik-Doku als Anfang, tja dann lernst du eben auf die harte Tour.

"Good Luck" muss man hier wohl im wahrsten Sinne des Wortes wünschen, Ich bin dann mal raus.
Thema erledigt.
Member: sat-fan
sat-fan Dec 04, 2023 at 21:35:03 (UTC)
Goto Top
danke habs gefunden... War tatsächlich der DNs Eintrag. der kam aber von Adaware auf dem proxmox und nicht vom Router. Hab außerdem festgestellt das die Wetterstation aktiv dem Homeassistent daten schickt uber diese Adresse. dazu musste ich einen Kanal dafür öffnen. Jetzt passt es.