route, iptables und einige verwandte Kenntnisse (Kollatierung), Erklärung des Befehls iptables

Logischerweise. Firewalls können grob in Host-Firewalls und Netzwerk-Firewalls unterteilt werden.

Host-Firewall: Schützt vor einem einzelnen Host.

Netzwerk-Firewall: Oft am Netzwerkeingang oder am Rand schützt sie vor dem Netzwerkeingang und bedient das lokale LAN hinter der Firewall.

Es besteht kein Konflikt zwischen der Netzwerk-Firewall und der Host-Firewall. Es versteht sich, dass sich die Netzwerk-Firewall hauptsächlich außerhalb (kollektiv) und die Host-Firewall hauptsächlich innerhalb (individuell) befindet.

 

Physikalisch gesehen können Firewalls in Hardware-Firewalls und Software-Firewalls unterteilt werden.

Hardware-Firewall: Ein Teil der Firewall-Funktion wird auf Hardware-Ebene implementiert, der andere Teil basiert auf Software mit hoher Leistung und hohen Kosten.

Software-Firewall: Eine Firewall mit Verarbeitungslogik für Anwendungssoftware, die auf einer allgemeinen Hardwareplattform mit geringer Leistung und geringen Kosten ausgeführt wird.

Routing-Tabelle
- Es speichert die Netzwerkpfadinformationen des Geräts und bestimmt die Flussrichtung des Datenpakets
- Typische Anwendungen: Dual-line - Internet, eine Firmen - Intranet - Umgebung
Linux - Route - Befehl
- Wird verwendet, um die im Linux- Kernel gespeicherte Routing-Tabelle zu ändern
Linux iptables Befehl
- Zum Hinzufügen, Löschen und Ändern von Datenpaketen ( SNAT , DNAT ), die das Linux- System durchlaufen
- Wird für QoS ( Quality of Service) verwendet.
- Einfacher regelbasierte Firewall
Die beiden Befehle route und iptables sowie das von ihnen verwendete Linux- Kernelmodul bieten leistungsstarke Netzwerkkonfigurationsfunktionen für Linux
 
• SNAT
- SNAT ( Source Network Address Translation , Quelladressübersetzung) hat die Aufgabe, die Quelladresse des IP- Pakets in eine andere Adresse umzuwandeln , was das Arbeitsprinzip des Routers ist

         DNAT: Destination Network Address Translation (Zielnetzwerkadressübersetzung) dient zum Ändern der Ziel-IP-Adresse des Netzwerkpakets.

 

Der Zweck des Änderns der Quell-IP-Adresse besteht im Allgemeinen darin, dass dieses Paket zu sich selbst zurückkehren kann. In iptables befindet sich SNAT also am Ausgang, dh die POSTROUTINGKette spielt eine Rolle.

Der Grund für das Ändern der Ziel-IP-Adresse besteht im Allgemeinen darin, das Ziel des Pakets zu ändern und das Paket ausgehen zu lassen, anstatt zu bleiben. Daher PREROUTINGspielt DNAT in iptables eine Rolle im Eingang, dh in der Kette, so dass das Paket in die FORWARDTabelle eintritt .

 

iptables ist eigentlich keine echte Firewall, wir können es als Client-Proxy verstehen, der Benutzer über den iptables-Proxy, die Sicherheitseinstellungen des Benutzers werden in das entsprechende "Sicherheits-Framework" implementiert, dieses "Sicherheits-Framework" ist die echte Firewall , Der Name dieses Frameworks lautet netfilter

Netfilter ist das eigentliche Sicherheitsframework der Firewall. Netfilter befindet sich im Kernelbereich.

iptables ist eigentlich ein Befehlszeilentool, das sich im Benutzerbereich befindet. Wir verwenden dieses Tool, um das reale Framework zu bedienen.

Netfilter / iptables (im Folgenden als iptables bezeichnet) bilden unter der Linux-Plattform eine Paketfilter-Firewall. Wie die meisten Linux-Programme ist diese Paketfilter-Firewall kostenlos. Sie kann teure kommerzielle Firewall-Lösungen ersetzen, um die Paketfilterung und Paketfilterung abzuschließen. Funktionen wie Umleitung und Netzwerkadressübersetzung (NAT)

Netfilter ist ein Paketverarbeitungsmodul innerhalb der Kernschicht des Linux-Betriebssystems und hat die folgenden Funktionen:

Netzwerkadressübersetzung (Network Address Translate), Änderung des Paketinhalts, Paketfilter-Firewall-Funktion

Obwohl wir den Dienst iptables verwenden, um iptables "services" zu starten, hat iptables keinen Daemon-Prozess, ist also kein echter Dienst, sondern sollte eine vom Kernel bereitgestellte Funktion sein.

Wir wissen, dass iptables gemäß Regeln funktioniert. Lassen Sie uns über Regeln sprechen. Regeln sind tatsächlich vordefinierte Bedingungen von Netzwerkadministratoren. Regeln werden im Allgemeinen wie folgt definiert: "Wenn der Paket-Header solche Bedingungen erfüllt, verarbeiten Sie diese Daten Paket ". Regeln werden in der Paketfiltertabelle im Kernelbereich gespeichert. Diese Regeln geben die Quelladresse, Zieladresse, das Übertragungsprotokoll (wie TCP, UDP, ICMP) und den Diensttyp (wie HTTP, FTP und SMTP) an. Wenn die Datenpakete mit den Regeln übereinstimmen, verarbeitet iptables die Datenpakete gemäß der durch die Regeln definierten Methode, z. B. Akzeptieren, Ablehnen und Löschen. Die Hauptaufgabe beim Konfigurieren einer Firewall besteht darin, diese Regeln hinzuzufügen, zu ändern und zu löschen.

 Im Detail:

 

Nachricht an einen Prozess in diesem Computer: PREROUTING-> INPUT

Von diesem Computer weitergeleitete Nachricht: PREROUTING-> FORWARD-> POSTROUTING

Eine Nachricht (normalerweise eine Antwortnachricht) wird von einem Prozess auf dem Computer gesendet: OUTPUT-> POSTROUTING

Die Regeln von PREROUTING können existieren in: Raw-Tabelle, Mangle-Tabelle, Nat-Tabelle.

Die Regeln von INPUT können existieren in: mangle table, filter table (Es gibt auch eine nat-Tabelle in centos7, nicht in centos6).

FORWARD-Regeln können existieren in: Mangeltabelle, Filtertabelle.

OUTPUT-Regeln können existieren in: Raw-Tabelle Mangle-Tabelle, Nat-Tabelle, Filtertabelle.

POSTROUTING-Regeln können existieren in: mangle table, nat table.

Die Regeln in der Rohtabelle können verwendet werden, von welchen Ketten: PREROUTING, OUTPUT

Für welche Ketten können die Regeln in der Mangeltabelle verwendet werden: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING

Für welche Ketten können die Regeln in der Nat-Tabelle verwendet werden: PREROUTING, OUTPUT, POSTROUTING (Es gibt auch INPUT in Centos7, nicht in Centos6)

Die Regeln in der Filtertabelle können für die folgenden Ketten verwendet werden: INPUT, FORWARD, OUTPUT

ACCEPT:允许数据包通过。

DROP:直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。

REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。

SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题。

MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。

DNAT:目标地址转换。

REDIRECT:在本机做端口映射。

LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配。

Syntaxregeln des Befehls iptables

iptables [-t Tabelle] BEFEHL [Kette] CRETIRIA -j AKTION

  -t Tabelle, bezieht sich auf die Operationstabelle, Filter, Nat, Mangle oder Raw, Filter wird standardmäßig verwendet

  BEFEHL, Unterbefehle, definieren die Verwaltung von Regeln

  Kette, die das Glied anzeigt

  KRETIRIEN, Übereinstimmungsbedingungen oder Kriterien

  AKTION, Operationsaktion, siehe den Inhalt im obigen Codesegment

  Beispielsweise darf das Netzwerk 10.8.0.0/16 nicht auf Port 80 / tcp zugreifen.

iptables -A INPUT -s 10.8.0.0/16 -d 172.16.55.7 -p tcp --dport 80 -j DROP

  Liste der iptables anzeigen

iptables -nL

 

Kettenmanagement

  -N, --new-chain chain: Erstelle eine neue benutzerdefinierte Kette.

  -X, --delete-chain [chain]: löscht die benutzerdefinierte leere Kette mit einem Referenzzähler von 0;

  -F, --flush [chain]: Löscht die Regeln für die angegebene Regelkette.

  -E, --rename-chain old-chain new-chain: benenne die Kette um;

  -Z, - Null [Kette [Rulenum]]: Nullzähler;  

  -P, --policy chain target, legen Sie die Standardrichtlinie des Links fest

 

Regelverwaltung

  -A, - Kettenregelspezifikation anhängen: Neue Regeln an das Ende der angegebenen Kette anhängen;

  -I, - Regelspezifikation für Kette [rulenum] einfügen: Fügen Sie eine neue Regel an der angegebenen Position der angegebenen Kette ein. Der Standardwert ist der Header.

  -R, --kettenregelregelspezifikation ersetzen: Ersetzen Sie die angegebene Regel durch eine neue Regel;

  -D, --kettenregel löschen: lösche die Regel gemäß der Regelnummer;

 

Regeln anzeigen 

  -L, --list [chain]: Listenregeln;

  -v, --verbose: detaillierte Informationen;

    -vv, -vvv für detailliertere Informationen

  -n, --numerisch: Anzeige der Hostadresse und der Portnummer in digitalem Format;

  -x, --exact: Zeigt den genauen Wert des Zählers an.

  - Zeilennummern: Zeigen Sie beim Auflisten von Regeln die entsprechenden Nummern in der Kette an.

  -S, --list-rules [chain]: Zeigt alle Regeln der angegebenen Kette an.

  Zeigen Sie den allgemeinen Inhalt der Regel an:

  

Übereinstimmungsbedingung

Zu den Übereinstimmungsbedingungen gehören allgemeine Übereinstimmungsbedingungen und erweiterte Übereinstimmungsbedingungen.

Die allgemeine Übereinstimmungsbedingung bezieht sich auf die Übereinstimmung der Quelladresse und der Zieladresse, einschließlich einer einzelnen Quell-IP, eines einzelnen Quellports, einer einzelnen Ziel-IP, eines einzelnen Zielports, einer Netzwerkkarte und eines Protokolls, durch das das Datenpaket fließt.

Erweiterte Übereinstimmungsbedingungen beziehen sich auf andere Übereinstimmungsbedingungen als die allgemeine Übereinstimmung.

Allgemeine Übereinstimmungsbedingungen

[!] -s, --source address [/ mask] [, ...]: Überprüfen Sie, ob die Quell-IP-Adresse des Pakets dem hier angegebenen Bereich entspricht oder ob sie der hier angegebenen Adresse entspricht.

[!] -d, --Zieladresse [/ mask] [, ...]: Überprüfen Sie, ob die Ziel-IP-Adresse des Pakets dem hier angegebenen Bereich entspricht oder der hier angegebenen Adresse entspricht.

[!] -p, --protocol protocol: Entspricht dem Protokoll in der Nachricht. Die verfügbaren Werte sind tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp, mh oder "all". Das Protokoll kann auch im numerischen Format angegeben werden.
[ !] -i, --in-interface name: nur für Pakete, die in die Ketten INPUT, FORWARD und PREROUTING eingehen.

[!] -o, --out-interface name: Begrenzte Pakete können nur aus der angegebenen Schnittstelle herausfließen, für Pakete, die in die Ketten FORWARD, OUTPUT und POSTROUTING eingehen.

 

Erweiterte Übereinstimmungsbedingungen

  • Implizit erweiterte Übereinstimmungsbedingungen

-p tcp: Sie können die speziellen Optionen des
  TCP- Erweiterungsmoduls direkt verwenden. [!] --source-port, --sport port [: port] entspricht dem Quellport der Nachricht. Es können mehrere Ports angegeben werden, die jedoch nur fortlaufend sein können Bereich der Ports  ;

  [!] --destination-port, -dport port [: port] entspricht dem Zielport der Nachricht; es können mehrere Ports angegeben werden, jedoch nur ein kontinuierlicher Bereich von Ports.

  [!] --tcp-flags mask comp stimmt mit den tcp-Protokollflags im Paket überein; Flags sind: SYN ACK FIN RST URG PSH ALL NONE;
    mask: Zu überprüfende FLAGS-Liste, durch Kommas getrennt;
    comp: in der Maske Unter den vielen angegebenen FLAGGEN muss der Wert von FLAGGEN 1 und der verbleibende Wert 0 sein.

  [!] --syn: --tcp-flags SYN, ACK, FIN, RST SYN

-p udp: Sie können die speziellen Optionen des udp-Protokoll-Erweiterungsmoduls direkt verwenden:

  [!] --source-port, - sport port [: port]

  [!] --destination-port, - dport port [: port]

-p icmp
  [!] --icmp-type {type [/ code] | typename}

    0/0: Echo Antwort

    8/0: Echoanforderung

  • Erweitern Sie die Übereinstimmungsbedingungen explizit

  Sie müssen die Option -m verwenden , um den Typ des erweiterten Abgleichs anzugeben. Die folgenden sind häufig:

Multiport

Definieren Sie Multi-Port-Matching-Bedingungen diskret oder kontinuierlich, bis zu 15;

  [!] --Source-Ports, --sports Port [, Port |, Port: Port] ...: Geben Sie mehrere Source-Ports an.

  [!] --destination-ports, -dports port [, port |, port: port] ...: Geben Sie mehrere Zielports an.
 

iptables -I INPUT -d 172.16.0.7 -p tcp -m Multiport --dports 22,80,139,445,3306 -j ACCEPT

 



iprange

Geben Sie die Übereinstimmungsbedingungen mehrerer IP-Adressen in Form von fortlaufenden Adressblöcken an.

  [!] --src-Bereich von [-zu]

  [!] --dst-Bereich von [-to]
 

# iptables -I INPUT -d 172.16.0.7 -p tcp -m Multiport --dports 22,80,139,445,3306 -m iprange --src-range 172.16.0.61-172.16.0.70 -j REJECT

 



Zeit

Ankunftszeit des Match-Pakets

  --Zeitstart hh: mm [: ss]

  --timestop hh: mm [: ss]

  [!] - Wochentag Tag [, Tag ...]

  [!] - Monatstag [, Tag ...]

  --datestart JJJJ [-MM [-DD [Thh [: mm [: ss]]]]

  --datestop JJJJ [-MM [-DD [Thh [: mm [: ss]]]]]

  --kerneltz: Verwenden Sie die vom Kernel konfigurierte Zeitzone anstelle der Standard-UTC. Die

Zeichenfolge
stimmt mit den Zeichen im Paket

  überein. --algo {bm | kmp}

  [!] - Stringmuster

  [!] - Hex-String-Muster -

  vom Versatz

  --zu versetzen
 

~] # iptables -I OUTPUT -m string --algo bm --string "gay" -j REJECT


Mit connlimit wird
die Anzahl der Verbindungen begrenzt, die mit derselben IP

  hergestellt werden können - connlimit bis zu n

  --connlimit-über n
 

~] # iptables -I INPUT -d 172.16.0.7 -p tcp --syn --dport 22 -m connlimit --connlimit-über 2 -j REJECT


limit
begrenzt die Rate des Sendens und Empfangens von Datenpaketen - limit

   rate [/ Sekunde | / Minute | / Stunde | / Tag]

  - Limit-Burst-Nummer
 

~] # iptables -I OUTPUT -s 172.16.0.7 -p icmp --icmp-type 0 -j ACCEPT


state
begrenzt den Status des Sendens und Empfangens von Paketen

  [!] --state state

  UNGÜLTIG, FESTGELEGT, NEU, VERWANDT oder UNVERFOLGT.

  NEU: Neue Verbindungsanforderung;

  Etabliert: hergestellte Verbindung;

  UNGÜLTIG: Nicht erkannte Verbindung;

  VERBINDUNG: Die zugehörige Verbindung, die aktuelle Verbindung ist eine neue Anforderung, wird jedoch an eine vorhandene Verbindung angehängt.

  UNTRACKED: Untracked-Verbindung; Statuserweiterung

:

Laden des
  Kernelmoduls : nf_conntrack
  nf_conntrack_ipv4

Manuelles Laden:
  nf_conntrack_ftp

Verfolgte Verbindungen:
  / proc / net / nf_conntrack

Passen Sie die maximale Anzahl von Verbindungen an, die aufgezeichnet werden können:
  / proc / sys / net / nf_conntrack_max

Zeitüberschreitungsdauer:
  / proc / sys / net / netfilter / * Timeout *

Referenzlink:  Der Unterschied zwischen SNAT und DNAT   

Detaillierte Erläuterung von iptables (1): iptables-Konzept

Detaillierte Verwendung des Befehls iptables

Veröffentlicht 125 Originalartikel · Gefällt mir 31 · Besuche 60.000+

Ich denke du magst

Origin blog.csdn.net/Fiverya/article/details/102942218
Empfohlen
Rangfolge