Detaillierte Einführung in die Linux-Firewall iptables, Konfigurationsmethode und Fall

Detaillierte Einführung in die Linux-Firewall iptables, Konfigurationsmethode und Fall

1.1 Einführung in die iptables-Firewall

Netfilter/Iptables (im Folgenden Iptables genannt) ist ein hervorragendes, quelloffenes, sicheres und kostenloses **Paketfilter-basiertes Firewall-Tool**, das mit Unix/Linux geliefert wird. Es ist sehr leistungsstark und flexibel in der Anwendung und ermöglicht eine sehr genaue Kontrolle über die Datenpakete, die in den Server hinein- und aus ihm herausfließen. Insbesondere kann es sehr gut auf einer sehr niedrigen Hardwarekonfiguration laufen

Iptables ist ein integrierter Dienst in den Linux-Kerneln 2.4 und 2.6. Seine Funktionen und Sicherheit sind viel leistungsfähiger als **ipfwadm, ipchains**. Iptables arbeitet hauptsächlich auf der zweiten, dritten und vierten Schicht der sieben Schichten von OSI. Wenn der Kernel neu kompiliert wird, kann iptables auch die **7-Schichten-Steuerung** unterstützen (Squid-Proxy + iptables).

1.2 iptables-Begriffe und Terminologie

Container: Die Beziehung zwischen Enthalten und Enthaltensein

iptables ist ein Container für Tabellen

Iptables enthält Tabellen (4 Tabellen). Tabellen sind Container für Links. Jede Tabelle enthält mehrere Links.

Die Kette ist ein Container für Regeln, und die eigentlichen Filterregeln gehören zur Kette.

Level-Einführung

iptables Land

Tabelle Provinz

Kettenmarkt

Regeln des Landkreises

1.3 iptables-Arbeitsablauf

Iptables arbeitet mit einem Paketfiltermechanismus. Es analysiert die Header-Daten des angeforderten Datenpakets und gleicht sie anhand unserer voreingestellten Regeln ab, um zu sehen, ob sie in den Host gelangen können.

Zusammenfassung des iptables-Workflows

  • Die Firewall filtert Schicht für Schicht. Tatsächlich wird die Filterung in der Reihenfolge der Konfigurationsregeln von oben nach unten und von vorne nach hinten durchgeführt.
  • Wenn die Regel erfüllt ist, also klar ist, ob blockiert oder durchgelassen werden soll, wird das Datenpaket der neuen Regel abwärts nicht mehr entsprechen.
  • Wenn keine der Regeln eindeutig angibt, ob das Paket blockiert oder durchgelassen werden soll, das heißt, wenn keine neue Regel zutrifft, wird das Paket nach unten abgeglichen, bis die Standardregel zutrifft, um zu bestimmen, ob es blockiert oder durchgelassen wird.
  • Die Standardregel der Firewall besteht darin, dass sie erst ausgeführt wird, nachdem alle Regeln der entsprechenden Kette ausgeführt wurden.

1.4 iptables-Tabellen und -Ketten

Iptables besteht aus drei Tabellen entsprechend den Funktionen und Tabellendefinitionen: Filter, Nat und Mangle. Jede Tabelle enthält unterschiedliche Operationsketten.

Die Filtertabelle ist die eigentliche Firewall-Funktion

INPUT in den Server OUTPUT aus dem Server FORWARD durch den Server

Die NAT-Tabelle ist für das Umschreiben von Datenpaketen, die gemeinsame Nutzung von Gateways sowie die IP- und Portzuordnung verantwortlich

AUSGABE

VORBEREITUNG

Nach dem Routing

Routing-Tags in Mangle-Tabellen werden nicht oft verwendet

####Alle Ketten sind verfügbar

RAW-Tabellen werden ebenso wie Mangle selten verwendet.

Wir können es über man iptables bekommen

1.5 Tabelleneinführung

Die Kontrolle der Filtertabelle ist für uns ein wichtiges Mittel zur Implementierung der lokalen Firewall, insbesondere die Kontrolle der INPUT-Kette.

1.6 iptables-Tabellen- und Ketten-Workflow-Diagramm

Tipp: iptables hat zwei Hauptfunktionen, die erste ist Firewall, die zweite ist Routing.

NAT-Funktion:

Enterprise-Fall: 1) LAN Internet Sharing (Routing und Gateway) NAT POSTROUTING

2) Externe IP- und Portzuordnung zu interner IP und Port (DMZ-Funktion), NAT-PREROUTING

Filterfunktion:

Das heißt, FILTER INPUT FORWARD

Unternehmensfall: Wird hauptsächlich in Server-Firewalls verwendet

2.1 Iptables konfigurieren

Iptables ist standardmäßig installiert [root@web02 ~]# iptables -V
iptables v1.4.7
[root@web02 ~]# rpm -qa iptables
iptables-1.4.7-16.el6.x86_64
[root@web02 ~]# /etc/init.d/iptables status
iptables: Firewall läuft nicht.

Iptables-Regeln anzeigen

[root@web02 ~]# iptables -nL
Ketteneingabe (Richtlinie AKZEPTIEREN)

Gibt an, dass ACCEPT die Standardregel für die Eingabekette ist und standardmäßig ausgeführt wird

Ziel Schutz Opt Quelle Ziel
Die spezifischen Regeln unter der Eingabekette sind ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 status RELATED,ESTABLISHED
AKZEPTIEREN icmp -- 0.0.0.0/0 0.0.0.0/0
Alle akzeptieren -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 Status NEU tcp dpt:22
Alles ABLEHNEN -- 0.0.0.0/0 0.0.0.0/0 Ablehnung mit ICMP-Host verboten
Kette WEITER (Richtlinie AKZEPTIEREN)
Ziel Schutz Opt Quelle Ziel
Alles ABLEHNEN -- 0.0.0.0/0 0.0.0.0/0 Ablehnung mit ICMP-Host verboten
Kettenausgabe (Richtlinie AKZEPTIEREN)
Ziel Schutz Opt Quelle Ziel

Wenn keine Tabelle angegeben ist, wird standardmäßig die Filtertabelle verwendet.

Standardmäßig für iptables geladenes Kernelmodul [root@web02 ~]# lsmod |egrep "nat|filter|ipt"
ipt_REJECT 2351 2
iptable_filter 2793 1
ip_tables 17831 1 iptable_filter

Laden Sie die folgenden Module in den Linux-Kernel

Modprobe IP-Tabellen
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack Verbindungsverfolgung modprobe ip_conntrack_ftp Verbindungsverfolgung modprobe ip_nat_ftp
modprobe ipt_state

Filtern Sie erneut, um den Effekt zu sehen

[root@web02 ~]# lsmod |egrep "nat|filter|ipt"
nf_nat_ftp 3443 0
nf_conntrack_ftp 11953 1 nf_nat_ftp
iptable_nat 5923 0
nf_nat 22676 2 nf_nat_ftp,iptable_nat
ipt_REJECT 2351 2
nf_conntrack_ipv4 9154 5 iptable_nat,nf_nat
nf_conntrack 79206 6 nf_nat_ftp,nf_conntrack_ftp,iptable_nat,nf_nat,nf_conntrack_ipv4,xt_state
iptable_filter 2793 1
ip_tables 17831 2 iptable_nat,iptable_filter

Löschen Sie alle Regeln und belassen Sie nur die Standardregeln

[root@web02 ~]# iptables -F
[root@web02 ~]# iptables -X
[root@web02 ~]# iptables -Z

iptables -F löscht alle Regeln

iptables -X löscht benutzerdefinierte Regeln

iptables -Z Kettenzähler werden gelöscht

2.2 Verbotsregeln

Anschlüsse anzeigen

[root@web02 ~]# netstat -lntup|grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1329/sshd
tcp 0 0 :::22 :::* LISTEN 1329/sshd

Der Befehl lautet wie folgt:

iptables -t Filter -A INPUT -p tcp --dport 22 -j DROP

-A Regeln am Ende der angegebenen Kette hinzufügen, die letzte

-I Regeln am Anfang der angegebenen Kette hinzufügen, die erste

-t gibt die Tabelle an, oder nicht die Angabe des Standardfilters

-p gibt das Protokoll an (all.tcp,udp.icmp) standardmäßig alle

--dport gibt den Port an

-j Verarbeitungsverhalten

ACCPET: akzeptieren, DROP: verwerfen, REJECT: ablehnen

Es ist besser, ACCPET und DROP zu verwenden, da bei einer Ablehnung Informationen an den Benutzer zurückgegeben werden.

Um die Regeln zu löschen, verwenden Sie iptables -F

Sie können auch iptables -D INPUT 1 verwenden

-D gibt die zu löschende Kette an

--line-number Seriennummer anzeigen

iptables -nl --Zeilennummer

Tipp: Sie müssen die Kette und die Seriennummer aufschreiben

Tipps: Stellen Sie die gerade getrennte SSH-Verbindung wieder her

1) Gehen Sie in den Computerraum, um das System neu zu starten, oder melden Sie sich beim Server an, um die vorherige Verbotsregel zu löschen

2) Bitten Sie das Personal im Computerraum, den Server neu zu starten, oder bitten Sie das Personal im Computerraum, sich mit dem Benutzerkennwort anzumelden

3) Verwaltung über die Remote-Management-Karte des Servers (empfohlen)

4) Schreiben Sie zunächst eine geplante Aufgabe, um die Firewall alle 5 Minuten zu stoppen

5) Testen Sie die Testumgebung, schreiben Sie sie in Skripte und führen Sie sie in Stapeln aus

Unternehmensfälle

3.1: Der Unterschied zwischen dem Hinzufügen von -A und -I

[root@web02 ~]# iptables -A INPUT -p tcp --dport 80 -j DROP
[root@web02 ~]# iptables -I INPUT -p tcp --dport 80 -j AKZEPTIEREN

Gemäß den Übereinstimmungsregeln von iptables wird zuerst die erste Zeile und dann abwärts die weitere Zeile abgeglichen. Diese Ablehnungseinstellung ist nutzlos.

Wenn Sie in der Mitte einfügen möchten, können Sie die Einfügezeilennummer angeben

[root@web02 ~]# iptables -nL
Ketteneingabe (Richtlinie AKZEPTIEREN)
Ziel Schutz Opt Quelle Ziel
AKZEPTIEREN TCP -- 0.0.0.0/0 0.0.0.0/0 TCP dpt:80
DROP tcp --0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Kette WEITER (Richtlinie AKZEPTIEREN)
Ziel Schutz Opt Quelle Ziel
Kettenausgabe (Richtlinie AKZEPTIEREN)
Ziel Schutz Opt Quelle Ziel

Sie können iptables-Befehle auch nach Seriennummer einfügen

[root@web02 ~]# iptables -I INPUT 2 -p tcp --dport 80 -j AKZEPTIEREN
[root@web02 ~]# iptables -nL --Zeilennummer
Ketteneingabe (Richtlinie AKZEPTIEREN)
num Ziel Schutz opt Quelle Ziel
1 AKZEPTIEREN TCP -- 0.0.0.0/0 0.0.0.0/0 TCP dpt:80
2 AKZEPTIEREN TCP -- 0.0.0.0/0 0.0.0.0/0 TCP dpt:80
3 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Kette WEITER (Richtlinie AKZEPTIEREN)
num Ziel Schutz opt Quelle Ziel
Kettenausgabe (Richtlinie AKZEPTIEREN)
num Ziel Schutz opt Quelle Ziel

Zusammenfassung: Fassen Sie die Methode zum Löschen von Regeln zusammen

1. iptables -D INPUT -p tcp --dport 8080 -j DROP

2. iptables -F löscht alle Regeln

3. /etc/init.d/iptables restart (Befehle, die über die iptables-Kommandozeile konfiguriert werden, sind nur temporär wirksam)

4. iptables -D INPUT Regelnummer

3.2: Zugriff auf das Netzwerksegment 10.0.0.0 verbieten

Basierend auf der Kontrolle des Kundensegments

[root@web02 ~]# iptables -A INPUT -s 10.0.0.0/24 -j DROP

-s gibt die Quelladresse an

Sie können zum Ausführen des Vorgangs auch ein anderes Netzwerksegment als dieses verwenden.

[root@web02 ~]# iptables -A INPUT ! ​​​​-s 10.0.0.0/24 -j DROP

Beispiel: Kontrollieren Sie die Daten, die vom Port 22 der Netzwerkkarte eth0 eingehen

iptables -A INPUT -p tcp --dport 22 -i eth0 ! -s 10.0.0.0/24 -j DROP
iptables -A INPUT -p tcp --dport 22 -i eth0 ! -s 192.168.1.1 -j DROP

Port 3306 blockieren

iptables -A INPUT -p tcp --dport 3306 -j DROP

Entspricht dem angegebenen Protokoll

iptables -A INPUT -p tcp
iptables -A INPUT -p udp

Stimmt mit allen Protokollen überein, außer dem angegebenen Protokoll

iptables -A EINGABE ! ​​-p tcp

``Einem einzelnen Port entsprechen**

iptables -A INPUT -p tcp --sport 22 Quellport iptables -A INPUT -p udp --dport 22 Zielport

Portbereich anpassen:

iptables -A INPUT -p tcp --sport 22:80
iptables -A INPUT -p tcp --dport 21,22,23 -j DROP ----> Falsche Syntax iptables -I INPUT -p tcp -m multiport --dport 22,23,24,25 -j DROP
iptables -I INPUT -p tcp -m Multiport! --dport 22,23,24,25 -j DROP
iptables -I INPUT -p tcp --dport 3306:8809 -j AKZEPTIEREN
iptables -I INPUT -p tcp --dport 18:80 -j DROP <---- bester Ansatz

Übereinstimmung mit ICMP-Typ

iptables -A INPUT -p icmp-Typ 8

Es gibt viele Arten von ICMP, von denen 8 Ping darstellen

Beispiel:

iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp -m icmp --icmp-type any -j AKZEPTIEREN

Da es viele Arten von ICMP gibt, können Sie jede beliebige verwenden. Alle Arten von ICMP sind verboten

iptables -A INPUT -s 192.168.1.0/24 -p icmp -m icmp --icmp-type any -j AKZEPTIEREN

Ping-Verbot in Unternehmensszenarien

iptables -A INPUT -p icmp --icmp-type 8 -s 10.0.0.0/24 -j AKZEPTIEREN

Passender Netzwerkstatus

-m Status --state

NEU: Eine neue Verbindung wurde bzw. wird gestartet

ESTABLISHED: Verbindung hergestellt

VERWANDTE THEMEN: Neue Verbindung wird initiiert

INVALID: Ungültig oder nicht erkennbar

Der FTP-Dienst ist speziell und erfordert eine zustandsbehaftete Verbindung

Erlauben Sie die Durchleitung der zugehörigen Statuspakete (Webdienste sollten keine FTP-Dienste verwenden)

iptables -A INPUT -m Status --state ESTABLISHED, RELATED -j AKZEPTIEREN
iptables -A AUSGABE -m Status --state ESTABLISHED,RELATED -j AKZEPTIEREN

Begrenzen Sie die Anzahl der Pakete, die passieren dürfen, und die Anzahl gleichzeitiger Pakete innerhalb eines bestimmten Zeitraums.

-m limit --limit n/{Sekunde/Minute/Stunde}

Die Anforderungsrate innerhalb eines angegebenen Zeitraums wird durch „n“ dargestellt. Dabei handelt es sich um die Rate, gefolgt von der Zeit in Sekunden, Minuten und Stunden.

--limit-burst [n]

Die Anzahl der gleichzeitig zulässigen Anfragen beträgt „n“. Wenn nicht angegeben, ist der Standardwert 5.

iptables -I INPUT -s 10.0.1.0/24 -p icmp --icmp-type 8 -m limit --limit 5/min --limit-burst 2 -j AKZEPTIEREN

Manuelles Ausführen von iptables-Befehlen zum Konfigurieren der Firewall in der Unternehmensproduktionsumgebung

Zwei Modi zum Konfigurieren der Host-Firewall in der Produktionsumgebung

1. Alle Programme zulassen, um Betriebsschäden zu verhindern Anwendungsszenario: Unternehmenskonfiguration des Internet-Gateway-Routings

2. Alle Operationen ablehnen und bestimmte Operationen zulassen Anwendungsszenario: Server-Host-Firewall

Konfigurieren der Enterprise Host Firewall

[root@web02 ~]# iptables -F
[root@web02 ~]# iptables -X
[root@web02 ~]# iptables -Z

1. Stellen Sie den Port so ein, dass die SSH-Anmeldung möglich ist

[root@web02 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCETP
[root@web02 ~]# iptables -A INPUT -p tcp -s 10.0.0.1/24 -j AKZEPTIEREN

2. Regeln festlegen, um lokale Lo-Kommunikation zu ermöglichen

[root@web02 ~]# iptables -A INPUT -i lo -j AKZEPTIEREN
[root@web02 ~]# iptables -A AUSGABE -o lo -j AKZEPTIEREN

3. Standardregeln festlegen

[root@web02 ~]# iptables -P INPUT DROP
[root@web02 ~]# iptables -P AUSGABE AKZEPTIEREN
[root@web02 ~]# iptables -P FORWARD DROP

Überprüfen Sie die Regeln (der aktuelle Server ist der sicherste)

[root@web02 ~]# iptables -nL --Zeilennummer
Ketten-INPUT (Richtlinie DROP)
num Ziel Schutz opt Quelle Ziel
1 AKZEPTIEREN TCP -- 0.0.0.0/0 0.0.0.0/0 TCP dpt:22
2 ACCEPT tcp -- 10.0.0.0/24 0.0.0.0/0
3 Alles akzeptieren -- 0.0.0.0/0 0.0.0.0/0
Kette VORWÄRTS (Richtlinie DROP)
num Ziel Schutz opt Quelle Ziel
Kettenausgabe (Richtlinie AKZEPTIEREN)
num Ziel Schutz opt Quelle Ziel
1 ALLE AKZEPTIEREN -- 0.0.0.0/0 0.0.0.0/0

4. Aktivieren Sie das vertrauenswürdige IP-Segment

Ermöglichen Sie den Zugriff aus dem IDC-LAN/WAN und der IP-Adresse des Büronetzwerks sowie aus externen Kooperationsorganisationen.

iptables -A INPUT -s 124.23.62.96/27 -p all -j ACCEPT #Festes IP-Segment des Büros iptables -A INPUT -s 192.168.2.0/24 -p all -j ACCEPT #Intranet-Segment des IDC-Computerraums iptables -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT #Intranet-Segment anderer Computerräume iptables -A INPUT -s 203.82.24.0/24 -p all -j ACCEPT #Extranet-Segment des IDC-Computerraums iptables -A INPUT -s 203.82.23.0/24 -p all -j ACCEPT #Extranet-Segment anderer IDC-Computerräume

Jetzt ist es nur für uns zugänglich und nicht für die Außenwelt.

5. Erlauben Sie die Durchleitung von Protokollen des Typs ICMP

iptables -A INPUT -p icmp -m icmp-Typ beliebig -j AKZEPTIEREN

Tipp: Wenn Sie es nicht öffnen möchten, führen Sie diesen Befehl nicht aus.

iptables -A INPUT -p icmp -s 10.0.0.0/24 -m icmp --icmp-type any -j AKZEPTIEREN

6. Zugehörige Statuspakete passieren lassen (Webdienste nutzen keine FTP-Dienste)

iptables -A INPUT -m Status --state ESTABLISHED, RELATED -j AKZEPTIEREN
iptables -A AUSGABE -m Status --state ESTABLISHED,RELATED -j AKZEPTIEREN

Tipp: Die obige Konfiguration ist das, wofür ein qualifizierter Server konfiguriert werden sollte

speichern

Die Standard-IPtables werden nicht dauerhaft gespeichert und verlieren nach einem Neustart ihre Gültigkeit.

Erste Methode:

/etc/init.d/iptables speichern

Speichern in /etc/sysconfig/iptables

Zeigen Sie das folgende Format an

[root@web02 ~]# cat /etc/sysconfig/iptables
# Generiert von iptables-save v1.4.7 am Montag, 15. August 2016, 01:33:44 Uhr
*nat
:PRE-ROUTING AKZEPTIEREN [1413:153792]
:POSTROUTING AKZEPTIEREN [132:8834]
:AUSGABE AKZEPTIEREN [132:8834]
BEGEHEN
# Abgeschlossen am Montag, 15. August 2016, 01:33:44 Uhr
# Generiert von iptables-save v1.4.7 am Montag, 15. August 2016, 01:33:44 Uhr
*Filter
:EINGABE-DROP [1798:662465]
:VORWÄRTSABFALL [0:0]
:AUSGABE AKZEPTIEREN [288:21100]
-A EINGABE -p tcp -m tcp --dport 22 -j AKZEPTIEREN
-A EINGABE -s 10.0.0.0/24 -p tcp -j AKZEPTIEREN
-A EINGABE -i lo -j AKZEPTIEREN
-A AUSGABE -o lo -j AKZEPTIEREN
BEGEHEN
# Abgeschlossen am Montag, 15. August 2016, 01:33:44 Uhr

Zweite Methode:

[root@web02 ~]# iptables-save >/etc/sysconfig/iptables

Die erste Methode wird empfohlen

Test: Ich habe unsere konfigurierte Firewall über andere Server gescannt

Verwenden Sie zur Analyse das Tool nmap. Dieses Tool muss installiert sein

[root@web02 ~]# yum -y installiere nmap

Verwenden Sie es wie folgt: Weitere Informationen erhalten Sie mit nmap --help

[root@web02 ~]# nmap 10.0.0.8 -p 1-65535
Start von Nmap 5.51 ( http://nmap.org ) am 15.08.2016 04:28 CST
Nmap-Scanbericht für 10.0.0.8
Host ist aktiv (0,0000070 s Latenz).
Nicht dargestellt: 65532 geschlossene Ports
Hafenstaatsdienst
22/tcp öffne ssh
80/TCP öffnen http
3306/tcp MySQL öffnen
Nmap fertig: 1 IP-Adresse (1 Host aktiv) in 14,21 Sekunden gescannt

Produktionswartung

(1) Festgelegte Regeln;

Bearbeiten Sie /etc/sysconfig/iptables

Fügen Sie die gewünschten Regeln hinzu: zB.

-A EINGABE -p tcp -m tcp --dport 873 -j AKZEPTIEREN
/etc/init.d/iptables neu laden

Oder wenn der Befehl ausgeführt wird, während die Konfiguration geändert wird, wird er dauerhaft wirksam.

(2) Probieren Sie den Befehl aus und fügen Sie, wenn er funktioniert, die Konfigurationsdatei ein. Ein Neustart ist nicht erforderlich.

Blockierung bösartiger IP-Adressen

IP blockieren, blockieren Sie sie in der ersten Zeile. 10.0.0.1 Diese Maschine greift unseren Server an oder veröffentlicht Spam im BBS

IP manuell blockieren:

iptables -I INPUT -s 10.0.0.1 -j DROP #Grob, große Reichweite, externe Angreifer Iptables -I INPUT -s 10.0.0.1 -j DROP
iptables -I INPUT -p tcp -s 10.0.0.1 --dport 80 -j DROP #Gut, kleiner Bereich. intern

IP automatisch blockieren: Analysieren Sie Web- oder Anwendungsprotokolle oder den Netzwerkverbindungsstatus, um Junk-IPs zu blockieren

Skript:

#!/bin/bash
#dies ist eine Server-Firewall, erstellt von oldboy 17:03 2006-7-26
# E-Mail:[email protected]
# qqinfo:49000448
# Funktion: eine Server-Firewall
# Version:1.1
################################################
# Oldboytraining-Info.
# QQ 1986787350 70271111
# Website: http://www.etiantian.org
# Blog: http://oldboy.blog.51cto.com
# oldboytraining QQ-Gruppe: 208160987 45039636
################################################
#Variable PATH definieren
IPT=/sbin/iptables
#Entfernen Sie alle vorhandenen Regeln
$IPT -F
$IPT -X
$IPT -Z
#Standard-Firewall-Richtlinie festlegen
$IPT --policy AUSGABE AKZEPTIEREN
$IPT --Richtlinie FORWARD DROP
$IPT -P EINGABEDROP
#Einstellung für Loopback-Schnittstelle
$IPT -A INPUT -i lo -j AKZEPTIEREN
$IPT -A AUSGABE -o lo -j AKZEPTIEREN
#Zugriffsregeln festlegen
#eins,IP-Zugriffsregeln,erlaube alle IPs von
$IPT -A INPUT -s 10.0.10.0/24 -p alle -j AKZEPTIEREN
$IPT -A INPUT -s 10.0.0.0/24 -p alle -j AKZEPTIEREN
##Die folgenden Punkte werden wiederholt und als Wissenspunkte gespeichert. Konfiguration eines einzelnen Dienstes #zweitens, Port-Zugriffsregeln
#nagios
$IPT -A INPUT -s 10.0.10.0/24 -p tcp --dport 5666 -j AKZEPTIEREN
$IPT -A INPUT -s 10.0.0.0/24 -p tcp --dport 5666 -j AKZEPTIEREN
#db
$IPT -A INPUT -s 10.0.0.0/24 -p tcp --dport 3306 -j AKZEPTIEREN
$IPT -A INPUT -s 10.0.0.0/24 -p tcp --dport 3307 -j AKZEPTIEREN
$IPT -A INPUT -s 10.0.10.0/24 -p tcp --dport 3306 -j AKZEPTIEREN
$IPT -A INPUT -s 10.0.10.0/24 -p tcp --dport 3307 -j AKZEPTIEREN
#ssh Unterschied zu anderen Servern hier.>>
$IPT -A INPUT -s 10.0.0.0/24 -p tcp --dport 52113 -j AKZEPTIEREN
$IPT -A INPUT -s 10.0.10.0/24 -p tcp --dport 52113 -j AKZEPTIEREN
$IPT -A INPUT -p tcp --dport 22 -j AKZEPTIEREN
#http
$IPT -A INPUT -p tcp --dport 80 -j AKZEPTIEREN
#snmp
$IPT -A INPUT -s 10.0.0.0/24 -p UDP --dport 161 -j AKZEPTIEREN
$IPT -A INPUT -s 10.0.10.0/24 -p UDP --dport 161 -j AKZEPTIEREN
#rsync
$IPT -A INPUT -s 10.0.0.0/24 -p tcp -m tcp --dport 873 -j AKZEPTIEREN
$IPT -A INPUT -s 10.0.10.0/24 -p tcp -m tcp --dport 873 -j AKZEPTIEREN
#icmp
#$IPT -A INPUT -p icmp -m icmp --icmp-type any -j AKZEPTIEREN
#andere VERWANDTE
$IPT -A INPUT -m Status --Status HERGESTELLT, VERWANDT -j AKZEPTIEREN
$IPT -A AUSGABE -m Status --Status HERGESTELLT, VERWANDT -j AKZEPTIEREN

Unternehmensfall: Schreiben Sie ein Skript zur Lösung eines DOS-Angriffs im Produktionsfall

Tipp: Überwachen Sie anhand des Webprotokolls oder der Anzahl der Netzwerkverbindungen, wann die Anzahl der gleichzeitigen Verbindungen einer bestimmten IP oder PV in einem kurzen Zeitraum 100 erreicht. Rufen Sie den Firewall-Befehl auf, um die entsprechende IP zu blockieren. Die Überwachungsfrequenz beträgt alle 3 Minuten. Der Firewall-Befehl lautet: iptables -I INPUT -s 10.0.1.10 -j DROP

Dieses Skript wird unter Verwendung der Testdatei geschrieben

[root@db02-Skripte]# cat test_6.sh
#!/bin/sh
#
[ -f /etc/init.d/funktionen ] && . /etc/init.d/funktionen
IP_file="/server/scripts/ddos.txt"
IP_filter_command="iptables -I INPUT -j DROP -s"
IP_recover_command="iptables -D INPUT -j DROP -s"
Funktion IP_check(){
grep "EST" ${IP_file}|awk -F "[ |:]+" '{print $6}'|sort |uniq -c|sort -rn -k1 > /server/scripts/ip.txt
}
Funktion IP_filter(){
exec < /server/scripts/ip.txt
während Zeile gelesen wird
Tun
IP_Anzahl=`echo $line|awk '{print $1}'`
IP=`echo $line|awk '{print $2}'`
IP_fil=`iptables -L -n|grep "\b${IP}\b"|wc -l`
wenn [ ${IP_count} -gt 25 -a ${IP_fil} -eq 0 ];dann
${IP_filter_command} ${IP}
echo "${IP}" >> /server/scripts/ip_filtered.txt
Aktion "Filter ${IP}" /bin/true
fi
Erledigt
}
Funktion IP_recover(){
exec < /server/scripts/ip.txt
während Zeile gelesen wird
Tun
IP_Anzahl=`echo $line|awk '{print $1}'`
IP=`echo $line|awk '{print $2}'`
IP_fil=`iptables -L -n|grep "\b${IP}\b"|wc -l`
wenn [ ${IP_count} -le 25 -a ${IP_fil} -eq 1 ];dann
${IP_recover_command} ${IP}
echo "${IP}" >> /server/scripts/ip_filtered.txt
Aktion "${IP} wiederherstellen" /bin/true
fi
Erledigt
}
Funktion main(){
Fall "$1" in
Filter)
IP_Prüfung
echo "$(date +%F-%H:%M:%S) gefiltert nach $(whoami)" >> /server/scripts/ip_filtered.txt
IP_filter
;;
genesen
IP_Prüfung
echo "$(date +%F-%H:%M:%S) wiederhergestellt von $(whoami)" >> /server/scripts/ip_filtered.txt
IP_wiederherstellen
;;
*)
echo "USAGE:$0 {filter|wiederherstellen}"
Ausfahrt 1
esac
}
Haupt $*

Erklärung des iptables-Skripts in der Produktionsumgebung

Tipps: Bei Servern mit externen IP-Adressen, die keine Dienste für die Außenwelt bereitstellen, empfiehlt es sich, die Quelladresse einzuschränken. Die nach außen erbrachten Dienste können nicht durch die Quelladresse eingeschränkt werden, zum Beispiel: Port 80

Frage: Sollten eine Enterprise-Hardware-Firewall und eine IPTABLES-Firewall gleichzeitig verwendet werden?

Lösung: Sie können gleichzeitig die Hardware-Firewall des Unternehmens verwenden. Sie wird normalerweise am Gateway platziert, was der Sicherheit des Gebäudes entspricht. Allerdings muss in jedem Raum des Gebäudes immer noch jemand die Tür abschließen iptables

Frage: Im Computerraum des IDC ist eine Hardware-Firewall installiert. Kann unser Server ohne die Firewall betrieben werden?

Antwort: Auf keinen Fall. Wenn das Gebäude über Sicherheitspersonal verfügt, bedeutet das, dass Ihre Bürotür nicht verschlossen ist?

NAT-Tabelleneinstellungen

Internet-Freigabeeinstellungen

Linux-Gateway B:

Zwei Befehlsmethoden für die LAN-Freigabe:

Methode 1: Geeignet für Benutzer mit festen externen Netzwerkadressen:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.7

(1)-s192.168.1.0/24: Büro- oder IDC-Intranet-Segment.

(2)-oeth0 ist die externe Netzwerkkartenschnittstelle des Gateways.

(3)-jSNAT --to-source 10.0.0.7 ist die IP-Adresse der externen Netzwerkkarte des Gateways.

Methode 2: Geeignet zum Ändern der externen Netzwerkadresse (ADSL):

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE #Masquerade.

Die Konfiguration ist wie folgt

Schritt 1: Externe Serverkonfiguration

[root@lb01 ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.5

[root@lb01 ~]# iptables -t nat -L -n

Kernel-Weiterleitung aktivieren

net.ipv4.ip_forward = 1
vim /etc/sysctl.conf
sysctl -p #wirksam werden

Sie müssen einen Internet-Server einrichten

Routen hinzufügen

route add default gw 172.16.1.5#Schreiben Sie hier die IP-Adresse des externen Netzwerks vim /etc/resolv.conf

Nameserver 223.5.5.5 hinzufügen

Route -n prüfen

Fall 2: Umleitung von Anfragen an 10.0.0.5:80 bis 172.16.1.8:80

[root@web02 ~]# iptables -t nat -A PREROUTING -d 10.0.0.5 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.8:80
[root@web02 ~]# iptables -P FORWARD DROP

Typische Unternehmensfälle von iptables:

1. Linux-Host-Firewall (Tabelle: FILTER-Kontrollkette: INPUT)

2. LAN-Maschinen teilen sich den Internet-Zugriff (Tabelle: NAT-Kontrollkette: POSTROUTING)

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.7

3. Externe Adresse und Port, zugeordnet zu interner Adresse und Port (Tabelle: NAT-gesteuerte Kette: PREROUTING)

iptables -t nat -A PREROUTING -d 10.0.0.7 -p tcp --dport 80 -j DNAT --zum-Ziel 192.168.1.8:9000

Unternehmensfall: Implementieren Sie eine Eins-zu-eins-Zuordnung der externen IP 124.42.34.112 zum internen Server 10.0.0.8

Gateway-IP: eth0:124.42.60.109 eth1:10.0.0.254

Binden Sie zunächst VIP 124.42.34.112 an das Routing-Gateway. Dies kann ein Alias ​​oder eine Hilfs-IP sein.

-A POSTROUTING -s 10.0.0.0/255.255.240.0 -d 124.42.34.112 -j SNAT --to-source 10.0.0.254
-A PREROUTING -d 124.42.34.112 -j DNAT --zum-Ziel 10.0.0.8
-A POSTROUTING -s 10.0.0.8 -o eth0 -j SNAT --to-source 124.42.34.112

iptables Produktionsanwendungsszenarien

1) Gemeinsamer LAN-Internetzugang (geeignet für unternehmensinternes LAN-Internet-Gateway und IDC-Raum-Intranet-Internet-Gateway [nat POSTROUTING])

2) Server-Firewall-Funktion (geeignet für Server mit externer IP im IDC-Computerraum) (hauptsächlich Filter-Eingabesteuerung)

3) Ordnen Sie die externe IP und den Port dem LAN zu (eine 1:1-IP-Zuordnung oder eine Zuordnung zu einem bestimmten Port ist möglich). Es ist auch möglich, dass der IDC die externe VIP und den Website-Port der Website dem Load Balancer (Hardware-Firewall) zuordnet. (nat VORROUTING)

4) Office-Router + Gateway-Funktion (Zebra-Routing + iptables-Filterung und NAT + Squid Forward Transparent Proxy) 80 + ntop/iftop/iptraf Verkehrsanzeige + tc/cbq Verkehrskontrollgeschwindigkeitsbegrenzung

5) Mail-Gateway

Anwendung der iptables-Firewall

1) Host-Firewall

2) Gateway-Anwendung (IP-Mapping, Port-Mapping)

3) Informationen filtern, Datenverkehr und Internetverhalten der Mitarbeiter überwachen und begrenzen (Squid (Forward-Proxy-Cache plus Filterung) + Ntop (grafische Datenverkehrsüberwachung) + Usual (Datenverkehrsbeschränkung) + IPTRAF/IFTOP (Datenverkehrsanzeige))

Wenn der IPTABLES-Server seinen Kernel aktualisiert, kann er ähnliche Filterfunktionen wie Squid implementieren.

4) Installieren Sie eine Antivirensoftware auf dem Gateway, um Port 9999 zu überwachen (Gateway-Antivirensoftware).

iptables -A PREROUTING -i eth0 -d 211.167.253.109 -p tcp -m tcp --dport 25 -j DNAT --zum-Ziel 192.168.10.6:9025

5) Kombinieren Sie Zebra, um Router auf Unternehmensebene zu konfigurieren

Mehrere externe IP-Adressen dem Internet zuordnen

iptables -t nat -A POSTROUTING -s 10.0.0.1/255.255.255.0 -o eth0 -j SNAT --to-source 124.42.60.11-124.42.60.16

iptables -t nat -A POSTROUTING -s 172.16.1.0/255.255.255.0 -o eth0 -j SNAT --to-source 124.42.60.103-124.42.60.106

#iptables -t nat -A postrouting -S 192.168.1.0/22 ​​​​-o eth0 -j SNAT --to-source 10.0.0.241-10.0.0.249

Frage:

1. 2.000 Menschen wurden blockiert

2. Die verfügbaren Ressourcen für Port 65535 sind begrenzt

Enterprise-Fall: ip_conntrack: Tabelle voll, Paket wird gelöscht. Fehlermeldung

Nachfolgend sehen Sie die Konfiguration eines Servers in meiner Produktionsumgebung:

net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
#5. dmesg zeigt die Fehlermeldung ip_conntrack: Tabelle voll, Paket wird gelöscht. Wie kann ich das Problem lösen? 
#Die folgenden Parameter sind Optimierungen für die iptables-Firewall. Wenn die Firewall Sie nicht dazu auffordert, können Sie sie ignorieren. 
c58:
 
net.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120
################################################################
C64:
 
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

Nachdem Sie die Kernel-Parameter /etc/sysctl.conf angepasst haben, müssen Sie /sbin/sysctl -p ausführen, damit die Änderungen wirksam werden.

Schwerpunkt: Wenn die Parallelität groß oder der tägliche PV hoch ist, seien Sie beim Öffnen der Firewall vorsichtig, da dies den Websitezugriff verlangsamen kann.

Kaufen Sie bei großem Parallelbetrieb (10.000 gleichzeitige Benutzer, 30 Millionen PV pro Tag) entweder eine Hardware-Firewall oder verwenden Sie die iptables-Firewall nicht.

Einführung in iptables-Parameter

-n Zahl

-L Liste

-F löscht alle Regeln und verarbeitet keine Standardregeln

-X Benutzerdefinierte Ketten löschen

-Z Kettenzähler gelöscht

-A Regeln am Ende der angegebenen Kette hinzufügen, die letzte

-I Regeln am Anfang der angegebenen Kette hinzufügen, die erste

-t gibt die Tabelle an, oder sie kann nicht angegeben werden, die Standardeinstellung ist Filter

-p gibt das Protokoll an (all.tcp,udp.icmp) standardmäßig alle

-P Standardregeln festlegen

-s gibt die Quelladresse an

-d Zieladresse

--dport gibt den Port an

-j Verarbeitungsverhalten ACCPET Empfangen, DROP Verwerfen, REJECT Ablehnen

-iinput entspricht der eingehenden Netzwerkschnittstelle

-ooutput entspricht der ausgehenden Netzwerkkartenschnittstelle

-m state --state Netzwerkstatus abgleichen

Weitere Informationen zu Linux Anti-Wall iptables finden Sie unter den folgenden Links

Das könnte Sie auch interessieren:
  • So verwenden Sie die Firewall-Iptables-Strategie zum Weiterleiten von Ports auf Linux-Servern
  • Detaillierte Erläuterung der allgemeinen Firewall-Regeln für Linux iptables
  • Grundlegendes Nutzungs-Tutorial zur IPTABLES-Firewall unter LINUX
  • Linux verwendet iptables, um den Zugriff mehrerer IPs auf Ihren Server zu beschränken
  • Detaillierte Erklärung des Linux-Befehls iptables
  • Zusammenfassung zum Anzeigen, Hinzufügen, Löschen und Ändern von iptables-Regeln der Linux-Firewall
  • Detaillierte Erklärung der gängigen Befehle zum Sperren und Entsperren von IPs in der Linux-Firewall iptables
  • Beispiele für das Blockieren und Öffnen von Ports durch iptables in Linux
  • Detaillierte Erläuterung von Docker unter Verwendung von Linux iptables und Schnittstellen zur Verwaltung von Containernetzwerken
  • Allgemeine Iptables-Dienststrategie für Linux-VPS-Server
  • So konfigurieren Sie Linux mithilfe von iptables so, dass alle Port-Anmeldungen verboten und bestimmte Ports geöffnet werden
  • Lösung für das Fehlen von iptables-Dateien im Verzeichnis /etc/sysconfig des neu installierten Linux-Systems
  • So verwenden Sie iptables zum Festlegen von Sicherheitsrichtlinien auf Alibaba Cloud Linux-Servern
  • Linux schützt sich vor DDOS-Angriffen, indem es TCP-Verbindungen und Frequenzen durch iptables begrenzt
  • Konfigurationsmethode zum Widerstand gegen Brute-Force-Cracking durch iptables+Denyhost auf einem Linux-Server
  • Einführungstutorial zur Linux-Firewall iptables
  • Beispiel für das Hinzufügen von iptables-Firewallregeln in Linux

<<:  Installationsschritte und Tutorial zur grundlegenden Verwendung von MySQL 8.0.12 unter Windows

>>:  Best Practices zur Implementierung einfacher Jira-Projekte mit React+TS

Artikel empfehlen

CentOS 7.5 stellt Varnish-Cache-Serverfunktion bereit

1. Einführung in Varnish Varnish ist ein leistung...

Reiner CSS-Header, korrigierter Implementierungscode

Es gibt zwei Hauptgründe, warum es schwierig ist,...

Häufige Verwendung von Hooks in React

Inhaltsverzeichnis 1. Was ist ein Hook? 2. Warum ...

vue.js Router verschachtelte Routen

Vorwort: Manchmal ist der Hauptteil einer Route d...

Tutorial zum Erstellen des File-Sharing-Dienstes Samba unter CentOS6.5

Samba-Dienste: Dieser Inhalt dient als Referenz f...

Eine kurze Diskussion darüber, wie man JS Schritt für Schritt lernt

Inhaltsverzeichnis Überblick 1. Verstehen Sie die...

CSS3 realisiert den roten Umschlag-Shaking-Effekt

Es besteht die Anforderung, den Schütteleffekt de...

Alibaba Cloud Server Ubuntu Konfigurations-Tutorial

Da für den Import benutzerdefinierter Ubuntu-Imag...

Analyse des Konfigurationsprozesses der Nginx-HTTP-Integritätsprüfung

Passive Prüfung Mit passiven Integritätsprüfungen...

Detaillierte Erklärung zur Verwendung des Linux-Befehls mpstat

1. mpstat-Befehl 1.1 Befehlsformat mpstat [ -A ] ...

Semantik, Schreiben und bewährte Methoden für Link A

Die Semantik, der Schreibstil und die Best Practi...

Mehrere Möglichkeiten zum Verbinden von Tabellen in MySQL

Die Verbindungsmethode in der MySQL-Tabelle ist e...

Detaillierte Erläuterung der 4 gängigen Datenquellen in Spark SQL

Allgemeine Lade-/Schreibmethoden Optionen manuell...

mysql IS NULL mit Indexfallerklärung

Einführung Die Verwendung von „ist null“, „ist ni...