1.1 Einführung in die iptables-FirewallNetfilter/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 TerminologieContainer: 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
1.3 iptables-ArbeitsablaufIptables 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
1.4 iptables-Tabellen und -KettenIptables 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ührungDie 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-DiagrammTipp: 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 konfigurierenIptables 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 VerbotsregelnAnschlü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älle3.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 zusammen1. 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 verbietenBasierend 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
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 UnternehmensproduktionsumgebungZwei 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 speichernDie 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-AdressenIP 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 ProduktionsumgebungTipps: 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-TabelleneinstellungenInternet-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 Produktionsanwendungsszenarien1) 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-Firewall1) 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 zuordneniptables -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
Weitere Informationen zu Linux Anti-Wall iptables finden Sie unter den folgenden Links Das könnte Sie auch interessieren:
|
<<: Installationsschritte und Tutorial zur grundlegenden Verwendung von MySQL 8.0.12 unter Windows
>>: Best Practices zur Implementierung einfacher Jira-Projekte mit React+TS
Inhaltsverzeichnis Vorwort Verbindungsverwaltung ...
1. Einführung in Varnish Varnish ist ein leistung...
Es gibt zwei Hauptgründe, warum es schwierig ist,...
Inhaltsverzeichnis 1. Was ist ein Hook? 2. Warum ...
Vorwort: Manchmal ist der Hauptteil einer Route d...
Samba-Dienste: Dieser Inhalt dient als Referenz f...
Inhaltsverzeichnis Überblick 1. Verstehen Sie die...
Es besteht die Anforderung, den Schütteleffekt de...
Da für den Import benutzerdefinierter Ubuntu-Imag...
Passive Prüfung Mit passiven Integritätsprüfungen...
1. mpstat-Befehl 1.1 Befehlsformat mpstat [ -A ] ...
Die Semantik, der Schreibstil und die Best Practi...
Die Verbindungsmethode in der MySQL-Tabelle ist e...
Allgemeine Lade-/Schreibmethoden Optionen manuell...
Einführung Die Verwendung von „ist null“, „ist ni...