Einführung in die Layer 3 Firewall MikroTik

Firewall (oder Paketfilter) ist sowohl theoretisch als auch praktisch ein großes und komplexes Thema. Ein Paketfilter in verschiedenen Betriebssystemen kann im Vergleich zu anderen Implementierungen Vor- und Nachteile haben. In diesem Artikel werde ich ausschließlich die Firewall in RouterOS mit Blick auf die Vorläufer-Iptables betrachten.


Vorwort


Für wen ist dieser Artikel?


Wenn Sie wissen, wie man mit iptables arbeitet, und dann eine Firewall einrichten, gibt es in diesem Artikel nichts Neues für Sie (außer, dass Ketten mit anderen Namen in der NAT-Tabelle verwendet werden). Wenn Sie zum ersten Mal eine Firewall in RouterOS sehen und ein vorgefertigtes Skript zur Konfiguration erhalten möchten, finden Sie es hier nicht. Das Material richtet sich an diejenigen, die eine grundlegende Vorstellung davon erhalten möchten, wie die Firewall funktioniert und was mit dem IP-Paket in verschiedenen Phasen seiner Verarbeitung geschieht. Ein tieferes Verständnis wird mit Erfahrung und der Lösung alltäglicher und ungewöhnlicher Probleme mithilfe eines Paketfilters einhergehen.


Theoretischer Teil


Was ist die Layer3-Firewall?



Angenommen, Sie haben einen Router mit Internetzugang und zwei Bridge-Schnittstellen: Bridge-LAN (Ether2-Ether5) und Bridge-DMZ (Ether6-Ether10).


Innerhalb der Bridge-Schnittstelle finden Geräte unabhängig Nachbarn aus ihrem Subnetz und tauschen Pakete aus. Der Router fungiert als Switch und überwacht diesen Datenverkehr nicht auf Netzwerkebene (natürlich können Sie dies erzwingen, aber wir werden ein anderes Mal über die Layer2-Firewall sprechen).


Wenden Sie sich bei Bedarf an das Gerät, das an eine andere Bridge-Schnittstelle angeschlossen ist oder sich im globalen Netzwerk befindet. Die Geräte senden Pakete an den Router, der die Route bestimmt und diese auf Netzwerkebene (Schicht 3) verarbeitet.


Paketflussdiagramm


Der vollständige Verkehrspfad ist im Paketflussdiagramm beschrieben. Es gibt mehrere offizielle (v5, v6 ) Versionen. Sie müssen bekannt sein und in der täglichen Arbeit verwendet werden. Um die Funktionsweise des Paketfilters zu verstehen, sind sie jedoch überlastet. Daher werde ich dies in einer leichtgewichtigen Version erläutern.



Die Eingabe- / Ausgabeschnittstelle ist eine beliebige (physische oder virtuelle) Layer 3-Router-Schnittstelle. Ein Paket, das vom lokalen Netzwerk ins Internet gelangt, gelangt zur Eingabeschnittstelle und verlässt die Ausgabeschnittstelle. Ein Paket vom Internet zum lokalen Netzwerk gelangt ebenfalls zur Eingabeschnittstelle und verlässt die Ausgabeschnittstelle. Der Paketfluss wird immer in einer Richtung gelesen - Eingabe -> Ausgabe.


Terminologiefunktionen


Wenn Sie den Paketfluss für iptables untersuchen, finden Sie Beschreibungen über "Ketten in Tabellen" oder "Tabellen in Ketten". Das Diagramm zeigt die Tabellen in Ketten. Wenn Sie der Firewall Regeln hinzufügen, ist alles umgekehrt.


Tatsächlich bewegt sich das Paket jedoch zwischen den Blöcken [chain + tables]. Wenn Sie beispielsweise im Block [prerouting + mangle] akzeptieren, wird das Transitpaket weiterhin in [forward + mangle] verarbeitet. Dies ist bei komplexen Konfigurationen mit pbr und Warteschlangen wichtig.


Die iptables-Dokumentation enthält genauere Definitionen, jedoch in einfachen Worten:
Ketten sind dafür verantwortlich, wo das Paket verarbeitet wird und wie die Regeln ablaufen.
Tabellen bestimmen die Aktionen, die für ein Paket ausgeführt werden können.


Basispaket nach Optionen



Transit



  1. Ein Paket aus dem Netzwerk kommt zu einer der Router-Schnittstellen
  2. In der PREROUTING-Kette kann der Administrator die Paketroute beeinflussen: Ermitteln Sie die Ausgabeschnittstelle (Policy Base Routing) oder leiten Sie sie an eine andere Adresse weiter (dst-nat).
  3. In Übereinstimmung mit der Routing-Tabelle für das Paket wird die ausgehende Schnittstelle bestimmt.
  4. Die FORWARD-Kette ist der Hauptfilterort für den vorbeifahrenden Verkehr.
  5. Das letzte Element vor dem Betreten des Netzwerks ist die POSTROUTING-Kette, in der Sie die Absenderadresse (src-nat) ändern können.
  6. Das Paket ging online.

Eingehend



  1. Ein Paket aus dem Netzwerk kam zu einer der Router-Schnittstellen
  2. Schlagen Sie die PREROUTING-Kette.
  3. Gemäß der Routing-Tabelle wurde das Paket zur Verarbeitung an den lokalen Prozess gesendet.
  4. Die INPUT-Kette filtert den eingehenden Datenverkehr durch den Administrator.
  5. Das Paket wurde vom lokalen Prozess verarbeitet.

Ausgehend



  1. Einer der Router-Prozesse hat ein IP-Paket generiert (neu oder Antwort - das spielt keine Rolle).
  2. In Übereinstimmung mit der Routing-Tabelle wird eine Ausgabeschnittstelle für das Paket definiert.
  3. Der Administrator kann ausgehenden Verkehr filtern oder die Route in der OUTPUT-Kette ändern.
  4. Für das Paket wird die endgültige Entscheidung über die Ausgabeschnittstelle getroffen.
  5. Das Paket fällt in POSTROUTING, ebenso wie der vorbeifahrende Verkehr.
  6. Das Paket ging online.

Verbindungs-Tracker


Zuerst müssen Sie verstehen, was statusbehaftete und zustandslose Paketfilter sind.



Ein Beispiel. Computer 192.168.100.10 öffnet eine TCP-Verbindung zum Server 192.0.2.10. Auf der Clientseite wird der dynamische Port 49149 auf der Serverseite 80 verwendet. Bevor der Inhalt empfangen wird, müssen der Client und der Server Pakete austauschen, um eine TCP-Sitzung einzurichten.


In zustandslos müssen Sie den Datenverkehr vom lokalen Netzwerk zum Internet und vom Internet zum lokalen Netzwerk öffnen (zumindest für den Bereich der dynamischen Ports). Was insgesamt ein Loch ist.


In einem Stateful- Router analysiert er die Pakete und betrachtet dies als den Beginn einer neuen Verbindung, nachdem er von 192.168.100.10:49149 für 192.0.2.10:80 TCP-Syn erhalten hat. Alle weiteren Pakete (in eine beliebige Richtung) zwischen 192.168.100.10:49149 und 192.0.2.10:80 werden als Teil der hergestellten Verbindung betrachtet, bis die TCP-Sitzung geschlossen wird oder die Zeitgeber ablaufen.


Bei UDP / ICMP und anderen Verkehrstypen, bei denen Anfang und Ende der Verbindung nicht klar unterschieden werden können, ist das erste Paket das erste, der Rest wird als Teil der hergestellten Verbindung betrachtet und aktualisiert die Timer. Der Router vergisst solche Verbindungen nach Ablauf der Timer.


Der Verbindungs-Tracker unterteilt Pakete in verschiedene Typen:



new - Ein Paket, das eine Verbindung öffnet, z. B. syn für tcp oder das erste Paket in einem udp-Stream.
hergestellt - ein Paket, das sich auf eine bekannte Verbindung bezieht.
related - Paket, das sich auf die zusätzliche Verbindung im Multiprotokoll bezieht (sip, pptp, ftp, ...).
ungültig - Paket von einer unbekannten Verbindung.
nicht verfolgt - Paket nicht verfolgt Verbindungs-Tracker.


Konfiguration des Verbindungs-Trackers
aktiviert = ja - aktiviert.
aktiviert = nein - deaktiviert.
enabed = automatisch deaktiviert, bis eine Regel in der Firewall angezeigt wird, die die Funktionen von conntrack verwendet. Es wird standardmäßig verwendet.



Die übrigen Parameter sind unterschiedliche Timer und erfordern normalerweise keine Abstimmung.


Der Administrator kann Verbindungen anzeigen und löschen. Die Verbindung zu NAT sieht beispielsweise folgendermaßen aus:



Die Verwendung von conntrack wirkt sich auf die Leistung und den Ressourcenverbrauch aus (insbesondere bei einer großen Anzahl von Verbindungen), funktioniert jedoch in den meisten Konfigurationen nicht, da Sie haben eine zustandslose Firewall ohne NAT.


Liste der vom Verbindungs-Tracker abhängigen Funktionen


TTL


Time To Live - Ein Feld im IP-Paket-Header, das die Anzahl der Router definiert, die ein Paket durchlaufen kann, bevor es zerstört wird, schützt vor endloser Paketweiterleitung während Routing-Schleifen.



Bei der Weiterleitung verringert der Router den TTL-Wert um 1, wenn TTL = 0 ist. In diesem Fall gelangt ein Paket mit TTL = 1 zum lokalen Prozess des Routers.


Einige Netzbetreiber verwenden TTL-Tricks, um die Verwendung von Routern zu verhindern. Alle diese Einschränkungen sind die Erhöhung des ttl-Werts in der Mangeltabelle wert.


NAT


Network Address Translation - Technologie zum Ändern von Adressen im IP-Paket-Header. NAT ist wie Linux Teil des Paketfilters. NAT funktioniert basierend auf dem Verbindungs-Tracker.


Ursprünglich wurde NAT als schnelle Lösung für das Problem der Erschöpfung von IPv4-Adressen entwickelt. Für lokale Netzwerke wurde vorgeschlagen, ein Subnetz aus den folgenden Bereichen zu verwenden: 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16 und übersetzen Sie sie in eine (oder mehrere) routingfähige Adressen. Tatsächlich gibt es einige weitere Service-Subnetze, die in privaten Netzwerken verwendet werden können, und der Router entspricht im Prinzip dem NAT, es wird jedoch empfohlen, die Standards einzuhalten.


Nur NAT-Prozesse: TCP, UDP, ICMP und einige Multiprotokolle von [IP] -> [Firewall] -> [Service Port]. Es wird nur das erste (Verbindungsstatus = neu) Paket in der Verbindung verarbeitet, die verbleibenden Pakete werden automatisch ohne Beteiligung der NAT-Tabelle verarbeitet. Dies kann durch die Änderung der Zähler in den Regeln verfolgt werden.


Der Paket-Header enthält die Quell- bzw. Zieladresse, und NAT ist in Quell- und Ziel-NAT unterteilt.


Quell-NAT - Spoofing von Absenderadressen, das auf der überwiegenden Mehrheit der Heim- und Unternehmensrouter der Welt vorhanden ist.



Viele Geräte mit "grauen" Adressen im lokalen Netzwerk können über eine (oder mehrere) echte Adressen mit dem Internet kommunizieren.



Zurück zum Paketfluss sehen wir, dass sich SRC-NAT im Postrouting befindet, nachdem wir entschieden haben, ob das Paket weitergeleitet werden soll.


Das Antwortpaket durchläuft ein implizites DST-NAT, in dem die Empfängeradresse in lokal geändert wird.


Ziel-NAT - Ersetzen der Empfängeradresse.



Es wird bei Bedarf verwendet, um das Paket an eine andere Adresse weiterzuleiten. Es wird normalerweise verwendet, um Ports vom externen Netzwerk an das lokale Netzwerk weiterzuleiten.



Gemäß Packet Flow erfolgt die DST-NAT-Operation, bevor die Entscheidung über das Routing in Prerouting getroffen wird. Für den Antwortverkehr ist implizites SRC-NAT vorhanden.


NAT ist ein ziemlich leistungsfähiges Verkehrsmanagement-Tool, sollte jedoch zuletzt verwendet werden (wenn andere Tools nicht helfen können).


Ketten (Ketten) Basis und Benutzer


Ketten bestehen aus Regeln und erzwingen die Logik der Paketverarbeitung.
Es gibt mehrere grundlegende Ketten, die dem Paketfluss zugeordnet sind:
Prerouting (dstnat) - Paketverarbeitung vor der Entscheidung für das Routing
Eingabe - Verarbeitungspakete für lokale Prozesse des Routers
Ausgabe - Verarbeitung von Paketpaketen, die von den lokalen Prozessen des Routers generiert werden
Weiterleiten - Weiterleiten des Datenverkehrs
Postrouting (srcnat) - Verarbeitung des Datenverkehrs, der zur Übertragung an die Schnittstelle bereit ist


Alles ist wie in iptables, aber Ketten in nat werden umbenannt. Womit dies verbunden ist (höchstwahrscheinlich mit dem Hotspot oder dem Entladen von nat durch Hardware), ist mir unbekannt, aber es ändert überhaupt nichts.


Das Paket übergibt die Regeln in der Kette nacheinander. Wenn es für alle Bedingungen geeignet ist, wird die Aktion auf das Paket angewendet. Wenn die Aktion beendet wird und das Paket nicht verworfen wird, wird es an den nächsten Paketflussblock übergeben.


Alle Basisketten haben eine Standardaktion (wenn das Paket nicht unter eine der Regeln passt) - akzeptieren .


Benutzerdefinierte Ketten sind erforderlich, um die Anzahl der Regeln zu reduzieren, die jedes Paket durchläuft, und um komplexe Regeln für die Verarbeitung des Datenverkehrs zu erstellen. Alle Benutzerketten haben eine Standardaktion - return .



Innerhalb der Tabelle können Sie die Regeln von mehreren verschiedenen Basis- (und Benutzer-) Ketten an die Benutzerkette weiterleiten, aber das Paket kehrt zu der Kette zurück, von der es stammt.



Allgemeine Geschäftsbedingungen


Ketten bestehen aus Regeln, jede Regel besteht aus Bedingungen und Aktionen. Es gibt viele Bedingungen, aber nicht alle von Ihnen werden sie in realen Konfigurationen verwenden. Den meisten Bedingungen kann "nicht" (Zeichen "!") Vorangestellt werden. Um mit der Regel übereinzustimmen, muss das Paket für alle diese Bedingungen geeignet sein.



Einige der Bedingungen
ZustandBeschreibung
src-adresseQuelladresse
dst-AdresseEmpfängeradresse
src-AdresslisteDie Quelladresse wird aufgelistet.
dst-AdresslisteDie Empfängeradresse wird aufgelistet
ProtokollTransportschichtprotokoll
src-portQuellport
dst-portEmpfängerport
HafenQuell- oder Zielport
In-InterfaceDie Schnittstelle, auf die das Paket kam
Out-InterfaceDie Schnittstelle, von der das Paket an das Netzwerk gesendet wird
In-Interface-ListeDie Schnittstelle, zu der das Paket kam, wird aufgelistet
Out-Interface-ListeDie Schnittstelle, von der das Paket an das Netzwerk gesendet wird, wird aufgelistet
Layer7-ProtokollAnalyse des Inhalts der ersten 10 Pakete in einer Verbindung
InhaltSuchen Sie nach einer bestimmten Zeichenfolge in einem Stapel
tls-hostSuche Host in tls Header
IPSec-RichtlinieÜberprüfen Sie, ob das Paket der IPSec-Richtlinie entspricht oder nicht
PaketgrößePaketgröße in Bytes
src-mac-adresseQuelladresse des Mac-Pakets
VerbindungsmarkeVerbindungsetikett
PaketmarkeVerpackungsetikett
Routing-MarkePaketwegpunkt
VerbindungsstatusStatus des Verbindungspakets
TCP-FlagsFlags TCP-Paket
icmp-OptionenIcmp-Paketoptionen
zufälligDie Regel wird mit einer bestimmten Wahrscheinlichkeit ausgelöst (wenn andere Bedingungen übereinstimmen)
ZeitSie können die Arbeitszeiten der Regel leider ohne Datumskonvertierung angeben
ttlTtl Feldwert im Paket
dscpDSCP (ToS) -Feldwert im Paket
- // -- // -
Platz vorMit der Konsolenoption (keine Bedingung) können Sie eine Regel vor der angegebenen hinzufügen
deaktiviertMit der Konsolenoption (nicht Bedingung) können Sie die Regel deaktivieren

Anmerkungen
Als src. (Dst.) Adresse können Sie Folgendes angeben: eine einzelne IP, einen Adressbereich über einen Bindestrich oder ein Subnetz.
Adresslisten werden benötigt, um mehrere nicht verbundene IP-Adressen unter demselben Namen zu kombinieren. Im Gegensatz zu ipset in netfilter können Einträge in MikroTik-Listen nach einem bestimmten Zeitraum gelöscht werden. Sie können die Listen anzeigen und Änderungen unter [IP] -> [Firewall] -> [Adresslisten] vornehmen.
Als Portnummer (port, src-port, dst-port) können Sie einen einzelnen Port, mehrere durch Kommas getrennte Ports oder einen Bereich von Ports durch einen Bindestrich angeben.


Bei der letzten MUM in MSC gab es eine gute Präsentation über die Auswirkungen verschiedener Bedingungen auf die Verarbeitungsgeschwindigkeit von Paketen (dort erfahren Sie, wie Sie die Rohtabelle verwenden, um die Belastung des Routers zu verringern), die an folgenden Themen interessiert sind: Aufzeichnung und Präsentation .


Tabellen Aktionen


Die Anzahl der verfügbaren Aktionen für das Paket hängt von der Tabelle ab, in der es verarbeitet wird.

Filter - Verkehrsfiltertabelle, eine von zwei Stellen, an denen Sie das Paket ablegen können.


NAT - Tabelle zum Ändern von IP-Adressen und Ports (tpc, udp) im IP-Paket-Header.


Mangle - eine Tabelle zum Ändern anderer Felder des IP-Pakets und zum Festlegen verschiedener Bezeichnungen.



Es gibt drei Arten von internen Paketbezeichnungen: Verbindung, Paket, Route. Beschriftungen sind nur im Router vorhanden und werden nicht an das Netzwerk gesendet. Ein Paket kann ein Etikett jedes Typs haben, während mehrere Markierungsregeln nacheinander übergeben werden. Die Etiketten werden überschrieben.
Routenbezeichnungen können nur in der Vorroutierungs- und Ausgabekette festgelegt werden, der Rest in beliebigen Ketten.


Es wird empfohlen, zuerst die Verbindung zu markieren, dann das Paket (Paket) oder die Route (Route). Das Suchen nach Etiketten ist schneller als bei Paketfeldern. In der Praxis ist dies bei komplexen Warteschlangen nicht immer der Fall, oder eine zusätzliche Kennzeichnung der Verbindung ist nicht sinnvoll.


RAW - eine Tabelle, mit der Pakete den Verbindungs-Tracker umgehen können. Es wird verwendet, um DoS entgegenzuwirken und die CPU-Belastung zu verringern (z. B. Umgehen des Multicast-Verkehrs). Hiermit können Sie das Paket verwerfen.


Durch das Beenden von Aktionen wird die Verarbeitung eines Pakets in der Kette abgeschlossen und an den nächsten Block im Paketfluss übergeben oder verworfen.


Aktionen
TabelleAktionBeschreibungBeenden?
AlleakzeptierenBeenden Sie die Verarbeitung des Pakets und übertragen Sie es zum nächsten Pakcet-FlussblockJa
AllelogProtokollpaketinformationen: In modernen Versionen können Sie jeder anderen Aktion ein Protokoll hinzufügen.Nein
AllePasstroughZählen Sie die Anzahl der Pakete. Wird zum Debuggen verwendetNein
Allefüge src zur Adressliste hinzu und füge dst zur Adressliste hinzuFügen Sie der angegebenen Liste die Quelladresse (Zieladresse) aus dem Paket hinzuNein
AllespringenGehen Sie zur BenutzerketteJa
AllezurückKehren Sie zur übergeordneten Kette zurück. In Basisketten funktioniert es wie akzeptierenJa
Filter und Rawfallen lassenStoppen Sie den Paketfluss beim Paketfluss und verwerfen Sie ihnJa
Filter und PreroutingFasttrackFlag-Paket für schnellen PaketflussJa
FilterablehnenWie drop, aber ein Paketsender erhält eine Benachrichtigung (tcp oder icmp) über das verworfene PaketJa
FilterTrapitEmulieren Sie das Vorhandensein eines offenen Ports. Wird zum Schutz vor DoS, zur Irreführung und (manchmal) zum Debuggen verwendetJa
NATsrc-natErsetzen der Absenderadresse durch die angegebeneJa
NATMaskeradeEin spezieller Fall von src-nat, der die Absenderadresse durch eine der Adressen von der Schnittstelle ersetzt, wird für dynamische (dhcp, vpn) Schnittstellen verwendet. Es wird nicht empfohlen, diese zu verwenden, wenn sich mehrere IP-Adressen auf der Schnittstelle befindenJa
NATdas gleicheEin Sonderfall von src-nat. Ersetzt die Absenderadresse durch eine Adresse aus dem angegebenen BereichJa
NATdst-natErsetzt die Empfängeradresse durch die angegebeneJa
NATumleitenEin Sonderfall von dst-nat ersetzt die Empfängeradresse durch die Adresse der Router-Schnittstelle, an die das Paket gesendet wurdeJa
NATNetmapKein Ersatz für dst-nat. Wird für die Übersetzung von Netzwerk zu Netzwerk verwendet (siehe Beispiele)Ja
MangleVerbindung markierenVerbindungsetikettNein
ManglePaket markierenPaketbezeichnung in Warteschlangen angewendetNein
MangleRouting markierenRoutenbezeichnung, die im Richtlinienbasis-Routing angewendet wirdNein
Manglettl ändernBearbeiten Sie ttlNein
Mangleändere dcsp (tos)Ändern Sie die dcsp-DezimalstelleNein
Manglemss ändernÄndern Sie mss in tcp synNein
Mangleklar dfKlar nicht fragmet FlaggeNein
MangleIPv4-Optionen entfernenDeaktivieren Sie die erweiterten IPv4-OptionenNein
ManglePriorität setzenLegen Sie die Priorität für CoS festNein
MangleRouteLegen Sie das Gateway für das Paket fest. Einfache Version von PBRNein
Mangleschnüffeln tzspKapsele Pakete in udp und sende sie an die angegebene IPNein
Mangleschnüffeln pcEin Analogon von tzsp, jedoch mit einer anderen Art der Einkapselung. Im Wiki bei Anwendungsfällen mit CaleaNein
ManglePasstroughStandardmäßig verhindern die meisten Regeln in Mangle nicht, dass das Paket weitergeleitet wird. Sie können dieses Verhalten ändern, indem Sie Passtrough = Nein festlegenNein
RohnotrackVerfolgen Sie das Paket nicht im Verbindungs-TrackerJa

Wenn es diejenigen gibt, die dies wünschen, kann ich mehr über FastTrack und FastPath schreiben, aber Sie sollten von diesen Technologien keine Wunder erwarten.


Ein paar Worte zu DPI


Es gibt verschiedene Möglichkeiten, das Paket etwas tiefer als den Transportschicht-Header zu betrachten:
content - Sucht nach einer bestimmten Zeichenfolge in einem Paket.
Layer7-Protokoll - Puffert die ersten 10 Pakete (oder 2 KB) von der Verbindung und sucht nach regulärem Ausdruck in gepufferten Daten. Eine große Anzahl von Layer7-Regeln wirkt sich erheblich auf die Leistung aus.
tls-host ist die Hostnamenadresse im TLS / SNI-Header einer HTTPS-Verbindung.


Beispiele


Kopieren Sie die Beispiele nicht gedankenlos. Es ist besser, das Gerät zu nehmen und zu versuchen, die Konfiguration selbst zu schreiben (oder die Beispiele neu zu schreiben, aber zu verstehen, was die einzelnen Regeln bewirken). Wenn Sie nicht wissen, wie Sie Regeln hinzufügen sollen: In der Standard- und der minimalen Home-Konfiguration gibt es keinen Zugriff auf den Router über die WAN-Schnittstelle. Fügen Sie ihn durch Filtern nach der Adressliste hinzu.


Standard Firewall RouterOS


Eine ziemlich sichere Konfiguration, aber an einigen Stellen sehr verwirrt:


/ip firewall filter #     (established, related)   (untracked)  add action=accept chain=input connection-state=established,related,untracked #    (invalid)  add action=drop chain=input connection-state=invalid #  icmp  add action=accept chain=input protocol=icmp #          add action=drop chain=input in-interface-list=!LAN #   ipsec    add action=accept chain=forward ipsec-policy=in,ipsec add action=accept chain=forward ipsec-policy=out,ipsec #          add action=fasttrack-connection chain=forward connection-state=established,related #       add action=accept chain=forward connection-state=established,related,untracked #    add action=drop chain=forward connection-state=invalid #     wan ,     dstnat (,      src-nat   dst-nat) add action=drop chain=forward connection-nat-state=!dstnat connection-state=new in-interface-list=WAN /ip firewall nat #Source NAT      ipsec,      WAN add action=masquerade chain=srcnat ipsec-policy=out,none out-interface-list=WAN 

Ich habe nie die Standardkonfiguration verwendet, aber vorher war die Standardfirewall viel schlechter.


Minimale Home-Firewall


Am einfachsten zu finden. Ja, nicht verfolgter Datenverkehr ist darin nicht zulässig (aber in der Phase der grundlegenden Untersuchung der Firewall benötigen Sie ihn immer noch nicht), und es treten Probleme mit Tunnel-IPSec auf (wenn Sie IPSec konfigurieren können, wissen Sie selbst, was zu tun ist).


 /ip firewall filter #     (established, related)  add chain=input connection-state=established,related action=accept #  icmp  add chain=input connection-state=new protocol=icmp action=accept #      add chain=input connection-state=new in-interface-list=LAN action=accept #     add chain=input action=drop #       add chain=forward connection-state=established,related action=accept #         add chain=forward connection-state=new in-interface-list=LAN action=accept #     add chain=forward action=drop /ip firewall nat #Source NAT        WAN add chain=srcnat out-interface-list=WAN action=masquerade 

DMZ Beispiel


Auf "Heim" -Routern ruft das Akronym DMZ gerne einen Computer im lokalen Subnetz auf, für den alle Ports aus dem externen Netzwerk weitergeleitet werden.


Tatsächlich ist dies nicht der Fall, und eine der DMZ-Optionen besteht darin, die Ressource zu trennen, auf die Sie Zugriff vom Internet gewähren müssen, und ein erfolgreicher Angriff kann ausgeführt werden (ein Webserver mit cms, in dem ständig Löcher gefunden werden, ist ein gutes Ziel für einen Angreifer). Im Falle eines Hackings kann ein Angreifer die Teilnehmer im lokalen Netzwerk nicht beeinflussen.



 #  /ip firewall nat add chain=dstnat dst-port=80,443 action=dst-nat to-address=192.168.200.2 /ip firewall filter #   icmp   add chain=input connection-state=established,related action=accept add chain=input protocol=icmp connection-state=new action=accept #      add chain=input in-interface=ether2-lan action=accept #    add chain=input action=drop #    add chain=forward connection-state=established,related action=accept #        add chain=forward in-interface=ether2-lan connection-state=new action=accept #    web  add chain=forward out-interface=ether3-dmz dst-address=192.168.200.2 dst-port=80,443 connection-state=new action=accept #   add chain=forward action=drop 

Haarnadel NAT



 /ip firewall nat add chain=dstnat dst-port=80 action=dst-nat to-address=192.168.100.2 

Eine typische Situation ist, wenn Sie einen Port an einen Server in einem lokalen Netzwerk weiterleiten und alles von außen funktioniert, aber innerhalb des lokalen Netzwerks ist der Server unter einer externen Adresse nicht zugänglich.


Mal sehen, was passiert:


  1. Computer 192.168.100.10 sendet eine Anfrage an 192.0.2.100
  2. Es führt DST-NAT auf dem Router aus und das Paket wird an 192.168.100.2 weitergeleitet
  3. Der Server sieht, dass ein Paket von 192.168.100.10 unter der Adresse 192.168.100.2 eingetroffen ist und von der lokalen Adresse aus antwortet
  4. Der Computer empfängt ein unerwartetes Paket von 192.168.100.2 und verwirft es.

Die Lösung besteht darin, eine zusätzliche Regel hinzuzufügen, die die Quelladresse in die Adresse des Routers ändert, sodass der Server das Paket an den Router zurücksendet, der es an den Initialisierungscomputer sendet.


 /ip firewall nat #  add chain=dstnat dst-port=80 action=dst-nat to-address=192.168.100.2 # ,      add chain=srcnat src-address=192.168.100.0/24 dst-address=192.168.100.2 action=masquerade 

In der Praxis wird dieses Schema nicht oft verwendet, aber als Beispiel für das Debuggen einer Firewall gefällt es mir sehr gut.


Richtige Verwendung der Netmap



Netmap ist eine Technologie zum Übersetzen von Adressen von einem Subnetz in die Adressen eines anderen Subnetzes.
Die IP-Adresse (im Maskeneintrag) besteht aus zwei Teilen: dem Netzwerk (die Anzahl der in der Subnetzmaske angegebenen Bits) und dem Host (die verbleibenden Bits). Netmap ändert den Netzwerkteil der Adresse, berührt jedoch nicht den Hostteil.



Es gibt zwei Router, die über einen VPN-Kanal verbunden sind. Router bedienen Subnetze mit derselben Adressierung. Es ist notwendig, auf Subnetze zuzugreifen.


Sie können nicht auf zusätzliche Adressierung verzichten.


Benutzer aus dem linken Subnetz klopfen durch das Subnetz 192.168.102.0/24 nach rechts
Benutzer aus dem rechten Subnetz klopfen durch das Subnetz 192.168.101.0/24 nach links


Konfiguration auf MikroTik 1.


 #     /ip route add distance=1 dst-address=192.168.102.0/24 gateway /ip firewall nat #       add action=netmap chain=srcnat dst-address=192.168.102.0/24 out-interface=ipip src-address=192.168.100.0/24 to-address=192.168.101.0/24 #       add action=netmap chain=dstnat dst-address=192.168.101.0/24 in-interface=ipip src-address=192.168.102.0/24 to-address=192.168.100.0/24 

Die Konfiguration von MikroTik2 ist nahezu identisch:


 /ip route add distance=1 dst-address=192.168.101.0/24 gateway=10.10.10.1 /ip firewall nat add action=netmap chain=srcnat dst-address=192.168.101.0/24 out-interface=ipip src-address=192.168.100.0/24 to-address=192.168.102.0/24 add action=netmap chain=dstnat dst-address=192.168.102.0/24 in-interface=ipip src-address=192.168.101.0/24 to-address=192.168.100.0/24 

Es gibt komplexere Konfigurationen mit Netmap, wenn Sie beispielsweise viele Verbindungen zu Remote-Punkten mit sich überschneidenden Subnetzen haben und die Einstellungen auf Remote-Geräten nicht geändert werden können. Dies ist jedoch bereits ein erweitertes Routing.


Wenn Sie nichts verstehen (über Netmap), benötigen Sie es nicht und verwenden diese Aktion nur nicht, wenn Sie Ports weiterleiten.

Source: https://habr.com/ru/post/de435070/


All Articles