Zusammenfassung der iptables-Firewall

Erstens, iptables Übersicht

Linux-Systemfirewall: IP-Informationspaket-Filtersystem, das aus zwei Komponenten besteht: netfilter und iptables. Arbeiten Sie hauptsächlich auf Netzwerkebene und zielen Sie auf IP-Datenpakete ab. Dies spiegelt sich in der Verarbeitung von Informationen wie der IP-Adresse und dem Port im Paket wider.

Zwei, Netfilter / Iptables-Beziehung

  • netfilter: Ein Firewall-Funktionssystem, das zum "Kernel Space" (Kernel Space, auch als Kernel Space bekannt) gehört.
    Es ist Teil des Kernels und besteht aus einigen Paketfiltertabellen. Diese Tabellen enthalten eine Reihe von Regeln, die vom Kernel zur Steuerung der Verarbeitung der Paketfilterung verwendet werden.

  • iptables: Ein Firewall-Verwaltungssystem, das zu "User Space" (User Space, auch als User Space bezeichnet) gehört.
    Es ist ein Befehlsprogramm zum Verwalten der Linux-Firewall. Es erleichtert das Einfügen, Ändern und Löschen der Regeln in die Paketfiltertabelle. Es befindet sich normalerweise im Verzeichnis / sbin / iptables.

  • Netfilter / iptables wird kurz später iptables genannt. Iptables ist eine kernelbasierte Firewall mit vier integrierten Regeltabellen: raw, mangle, nat und filter. Nachdem alle Regeln in der Tabelle konfiguriert wurden, werden sie sofort wirksam, ohne den Dienst neu zu starten.

Drei, vier Uhren und fünf Ketten

  • Die Rolle der Regeltabelle: Anpassung an verschiedene Regelketten
  • Die Rolle der Regelkette: Anpassung an verschiedene Firewall-Regeln
  • Zusammenfassung: Die Tabelle enthält Ketten und Regeln in der Kette

(1) Vier Tabellen

  • Rohtabelle: Bestimmen Sie, ob der Status des Pakets verfolgt werden soll. Enthält zwei Regelketten, OUTPUT und PREROUTING.
  • Mangle-Tabelle: Ändern Sie den Inhalt des Datenpakets, das für die Verkehrsformung verwendet wird, und setzen Sie eine Markierung für das Datenpaket. Enthält fünf Regelketten: INPUT, OUTPUT, FORWARD, PREROUTING und POSTROUTING.
  • nat-Tabelle: Verantwortlich für die Netzwerkadressübersetzung, die zum Ändern der Quell- und Ziel-IP-Adressen oder -Ports in Datenpaketen verwendet wird. Enthält drei Regelketten: OUTPUT, PREROUTING und POSTROUTING.
  • Filtertabelle: Verantwortlich für das Filtern von Datenpaketen und das Bestimmen, ob die Datenpakete übergeben werden sollen (Filtern). Enthält drei Regelketten: INPUT, FORWARD, OUTPUT.

Hinweis: Unter den vier Regeltabellen von iptables haben die Mangle-Tabelle und die Raw-Tabelle relativ wenige Anwendungen.

(2) Fünf Ketten

  • EINGABE: Verarbeiten Sie eingehende Datenpakete und ordnen Sie die Ziel-IP den Datenpaketen dieses Computers zu.
  • AUSGABE: Verarbeiten Sie ausgehende Datenpakete, konfigurieren Sie diese im Allgemeinen nicht in dieser Kette.
  • FORWARD: Datenpakete verarbeiten und weiterleiten, wobei Datenpakete abgeglichen werden, die durch die Maschine fließen.
  • PREROUTING-Kette: Verarbeitet Datenpakete vor dem Routing, wird zum Ändern der Zieladresse verwendet und für DNAT verwendet. Dies entspricht der Zuordnung von IP und Port des internen Netzwerkservers zur externen IP und zum Port des Routers.
  • POSTROUTING-Kette: Nach dem Routing wird das Datenpaket verarbeitet und zum Ändern der für SNAT verwendeten Quelladresse verwendet, die dem internen Netzwerk über die NAT-Konvertierungsfunktion des Routers entspricht, um den internen Netzwerkhost für den Zugriff auf das Internet über eine öffentliche IP-Adresse zu realisieren.

Wenn Pakete an der Firewall ankommen, die Prioritätsreihenfolge zwischen den Regeltabellen: raw> mangle> nat> filter
Fügen Sie hier eine Bildbeschreibung ein

(3) Übereinstimmende Reihenfolge zwischen Regelketten

1. Hosttyp-Firewall:

  • Eingehende Daten (Datenpakete von außerhalb und die Zieladresse ist der lokale Firewall-Computer): PREROUTING -> INPUT -> native Anwendung
  • Ausgehende Daten (Datenpakete, die von der Firewall an die externe Adresse gesendet werden): die Anwendung des Computers -> AUSGABE -> POSTROUTING

2. Firewall vom Netzwerktyp:

  • Weiterleiten von Daten (Pakete, die über eine Firewall weitergeleitet werden müssen): PREROUTING -> FORWARD -> POSTROUTING

3. Die übereinstimmende Reihenfolge in der Regelkette:

  • Überprüfen Sie die Reihenfolge von oben nach unten und stoppen Sie, wenn eine übereinstimmende Regel gefunden wird (mit Ausnahme der LOG-Richtlinie, die das Aufzeichnen verwandter Protokolle bedeutet). Wenn in der Kette keine übereinstimmende Regel gefunden wird, wird sie gemäß der Standardrichtlinie der Kette verarbeitet (nicht Unter der geänderten Bedingung ist die Standardrichtlinie zulässig.
    Fügen Sie hier eine Bildbeschreibung ein

Viertens die Installation von iptables

Centos 7 verwendet standardmäßig die Firewall-Firewall. Iptables ist nicht installiert, wenn Sie die iptables-Firewall verwenden möchten. Die Firewall muss vor der Installation von iptables ausgeschaltet sein.

systemctl stop firewalld.service
systemctl disable firewalld.service
yum -y install iptables  iptables-services
systemctl start iptables.service

(1) Die Konfigurationsmethode der iptables-Firewall:

1. Verwenden Sie die Befehlszeile von iptables.
2. Verwenden Sie die System-Config-Firewall

(Zwei), iptables-Befehlszeilenkonfigurationsmethode:

Befehlsformat:

iptables  [-t 表名]  管理选项  [链名]   [匹配条件]   [-j 控制类型]

Vorsichtsmaßnahmen:

  • Wenn der Tabellenname nicht angegeben wird, bezieht er sich standardmäßig auf die Filtertabelle
  • Wenn der Kettenname nicht angegeben wird, bezieht er sich standardmäßig auf alle Ketten in der Tabelle
  • Sofern die Standardrichtlinie der Kette nicht festgelegt ist, müssen Übereinstimmungsbedingungen angegeben werden
  • Optionen, Kettennamen und Steuerelementtypen verwenden Großbuchstaben, der Rest ist Kleinbuchstaben

(3) Häufig verwendete Kontrolltypen:

  • AKZEPTIEREN: Datenpakete passieren lassen.
  • DROP: Löschen Sie alle Datenpakete direkt, ohne Antwortinformationen zu geben.
  • REJECT: Das Weiterleiten des Datenpakets wird abgelehnt, und eine Antwortnachricht wird an den Datenabsender gesendet.
  • SNAT: Ändern Sie die Quelladresse des Datenpakets.
  • DNAT: Ändern Sie die Zieladresse des Datenpakets.
  • MASQUERADE: Als nicht feste öffentliche IP-Adresse getarnt.
  • LOG: Zeichnen Sie die Protokollinformationen in der Datei / var / log / messages auf und übergeben Sie das Datenpaket an die nächste Regel. LOG ist nur eine Hilfsaktion und verarbeitet keine Datenpakete.

(4) Gemeinsame Verwaltungsoptionen

-A:在指定链的末尾追加(--append)一条新的规则
-I:在指定链的开头插入(--insert)一条新的规则,未指定序号时默认作为第一条规则
-R:修改、替换(--replace)指定链中的某一条规则,可指定规则序号或具体内容
-P:设置指定链的默认策略(--policy)
-D:删除(--delete)指定链中的某一条规则,可指定规则序号或具体内容
-F:清空(--flush)指定链中的所有规则,若未指定链名,则清空表中的所有链
-L:列出(-1ist)指定链中所有的规则,若未指定链名,则列出表中的所有链
-n:使用数字形式(--numeric)显示输出结果,如显示IP地址而不是主机名
-v:显示详细信息,包括每条规则的匹配包数量和匹配字节数
--line-numbers:查看规则时,显示规则的序号

(5) Fügen Sie neue Regeln hinzu

iptables -t filter -A INPUT -p icmp -j REJECT   #拒绝Ping通,其中-t指定表名,-p指定协议,-j指定控制类型
iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT  #不加-t默认指定filter,2为指定序号为2,--dport指定目的端口号

(6) Zeigen Sie die Liste der Regeln an

iptables [-t 表名]-n -L [链名] [--line-numbers]
或
iptables  -[vn]L   #注意:不可以合写为-Ln
iptables  -n -L --line-numbers

(7) Legen Sie die Standardstrategie fest

iptables [-t 表名] -P <链名> <控制类型>

iptables -A INPUT -p TCP --dport 22 -j ACCEPT #允许所有数据包通过
iptables -P INPUT DROP      #拒绝所有数据包,注意设置该策略之前一定要先设置通过策略,否则将与服务器断开连接 
iptables -P FORWARD DROP
#一般在生产环境中设置网络型防火墙、主机型防火墙时都要设置默认规则为DROP,并设置白名单

(8) Regeln löschen

iptables -D INPUT 2                        #按规则序号删除
iptables -t filter -D INPUT -p icmp -j REJECT     #按规则名删除

Hinweis:
1. Wenn die Regelliste mehrere identische Regeln enthält, wird nur die Regel mit der kleinsten Sequenznummer gemäß der Inhaltsübereinstimmung gelöscht.
2. Stellen Sie beim Löschen gemäß der Nummernübereinstimmung sicher, dass die Regelnummer kleiner oder gleich der Anzahl der vorhandenen Regeln ist. Andernfalls wird ein Fehler gemeldet.
3. Je nach Inhalt Stellen Sie beim Abgleichen und Löschen der Nummer sicher, dass die Regel vorhanden ist. Andernfalls wird ein Fehler gemeldet

(9) Klare Regeln

iptables [-t 表名] -F [链名]

iptables -F INPUT
iptables -F

Hinweis:
.. 1. -F löscht nur die Regeln in der Kette, und wirkt sich nicht auf die Standardregeln festgelegt durch -P Die Standardregeln manuell werden müssen geändert
2. Nach DROP auf -P gesetzt ist, seien Sie vorsichtig , wenn -F verwenden!
Prevent Remote erlaubt Nachdem die zugehörigen Regeln der Verbindung gelöscht wurden, kann der Host nicht remote verbunden werden. Wenn die Regeln nicht gespeichert werden, kann der Host neu gestartet werden, um das Problem zu lösen.
3. Wenn der Tabellenname und der Kettenname nicht geschrieben werden, werden standardmäßig alle Regeln in allen Ketten in der Filtertabelle gelöscht

(10) Übereinstimmung der Regeln

1. Der universelle Abgleich kann direkt verwendet werden und hängt nicht von anderen Bedingungen oder Erweiterungen ab, einschließlich Bedingungen wie Netzwerkprotokollen, IP-Adressen und Netzwerkschnittstellen.

  • Protokollübereinstimmung: -p Protokollname
  • Adressübereinstimmung: -s Quelladresse, -d Zieladresse (IP, Netzwerksegment, Domänenname, leer (beliebige Adresse))
  • Schnittstellenübereinstimmung: -i eingehende Netzwerkkarte, -o ausgehende Netzwerkkarte
iptables -A FORWARD ! -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.80.11 -j DROE
iptables -I INPUT -i ens33 -s 192.168.80.0/24 -j DROE

2. Impliziter Abgleich

Voraussetzung ist eine bestimmte Protokollübereinstimmung, einschließlich Bedingungen wie Port, TCP-Tag und ICMP-Typ.

Port-Matching: –Sport-Quellport, –Dport-Zielport

#可以是个别端口、端口范围
--sport 1000       匹配源端口是1000的数据包
--sport 1000:3000  匹配源端口是1000-3000的数据包
--sport:3000       匹配源端口是3000及以下的数据包
--sport 1000:      匹配源端口是1000及以上的数据包

Hinweis: --sport und --dport müssen mit -p <Protokolltyp> verwendet werden

iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
iptables -I FORWARD -d 192.168.80.0/24 -p tcp --dport 24500:24600 -j DROP

TCP-Flag-Matching: --tcp-Flags TCP-Flag

iptables -I INPUT -i ens33 -p tcp --tcp-flags SYN, RST, ACK SYN -j ACCEPT
#丢弃SYN请求包,放行其他包

ICMP-Typübereinstimmung: ICMP-Typ vom Typ --icmp

#可以是字符串、数字代码、  目标不可达
"Echo-Request" (代码为8)表示 请求
"Echo-Reply" (代码为0)表示 回显
"Destination-Unreachable" (代码为3)表示 目标不可达
关于其它可用的ICMP协议类型,可以执行"iptables -p icmp -h"命令,查看帮助信息
iptables -A INPUT -p icmp --icmp-type 8 -j DROP    #禁止其它主机ping本机
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT  #允许本机ping其它主机
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT #当本机ping不通其它主机时提示目标不可达
#此时其它主机需要配置关于 icmp 协议的公职类型为REJECT
iptables -A INPUT -p icmp -j REJECT

3. Explizites Matching

Es ist erforderlich, den Typ in Form eines "-m-Erweiterungsmoduls" klar anzugeben, einschließlich Bedingungen wie Multi-Port, MAC-Adresse, IP-Bereich und Paketstatus. Multi-Port-Matching:

-m multiport --sports 源端口列表
-m multiport --dports 目的端口列表
iptables -A INPUT -p tcp -m multiport --dport 80, 22, 21, 20, 53 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT

IP-Bereichsanpassung :-m iprange --src-range IP范围

iptables -A FORWARD -p udp -m iprange --src-range 192.168.80.100-192.168.80.200 -j DROP
#禁止转发源地址位于192.168.80.100-192.168.80.200的udp数据包

MAC-Adressübereinstimmung :-m mac--mac-source MAC地址

iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
#禁止来自某MAC地址的数据包通过本机转发

Statusübereinstimmung :-m state --state 连接状态

Allgemeiner Verbindungsstatus:
NEU: Für jede Verbindung irrelevant, die Verbindung wurde noch nicht gestartet.
EINGESTELLT: Antwort auf die Anfrage oder die Verbindung wurde hergestellt . Verbindungsstatus VERBINDUNG: Bezogen
auf die vorhandene Verbindung (z. B. FTP-Datenverbindung im aktiven und passiven Modus). Abgeleiteter Status, der im Allgemeinen in Verbindung mit ESTABLISHED
INVALID verwendet wird: Es kann nicht identifiziert werden, zu welcher Verbindung ein Status gehört oder keinen Status hat

iptables -A FORWARD -m state --state NEW-p tcp ! --syn -i DROP
#禁止转发与正常TCP连接无关的非--syn请求数据包(如伪造的网络攻击数据包)

Erforderliche Befehle zum Einrichten einer hostbasierten Firewall:

iptables -I INPUT -p tcp -m multiport --dport 80, 22, 21, 20, 53 -j ACCEPT
iptables -A INPUT -p udp -m multiport --dport 53 -j ACCEPT
iptables -I INPUT -p tcp -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -P INPUT DROP

Fünftens SNAT-Prinzip und Anwendung

SNAT-Anwendungsumgebung: LAN-Hosts verwenden eine einzige öffentliche IP-Adresse, um auf das Internet zuzugreifen (privates 1P kann im Internet nicht normal geroutet werden). SNAT-Prinzip: Ändern Sie die Quelladresse des Datenpakets. Voraussetzungen für die SNAT-Übersetzung:

1. Jeder Host im LAN hat die IP-Adresse, die Subnetzmaske und die Standard-Gateway-Adresse korrekt eingestellt.
2. Das Linux-Gateway ermöglicht das IP-Routing und die IP-Weiterleitung

Vorübergehend geöffnet:

echo 1> /proc/sys/net/ipv4/ip_forward
或
sysctl -w net.ipv4.ip_forward=1

Dauerhaft geöffnet:

vim /etc/sysctl.conf
net.ipv4.ip_forward =1      #将此行写入配置文件

sysctl -p                   #读取修改后的配置

SNAT-Übersetzung 1: Feste öffentliche IP-Adresse:

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to 12.0.0.1
或
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10
                                    内网IP       出站 外网网卡                      外网IP或地址池

SNAT-Übersetzung 2: Nicht feste P-Adresse des öffentlichen Netzwerkwächters (gemeinsame Nutzung der dynamischen IP-Adresse):

iptables-t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j MASQUERADE

Sechstens DNAT-Prinzip: Ändern Sie die Zieladresse des Datenpakets

Voraussetzungen für die DNAT-Konvertierung:
1. Der Server im lokalen Netzwerk kann auf das Internet zugreifen.
2. Die externe Netzwerkadresse des Gateways hat den richtigen DNS-Auflösungsdatensatz.
3. Linux ist deaktiviert und die IP-Routing-Weiterleitung ist aktiviert

vim /etc/sysctl.conf
net.ipv4.ip_forward =1

sysctl –p

DNAT-Konvertierung 1: Veröffentlichen Sie Intranet-Webdienste

#把从ens33进来的要访问web服务的数据包目的地址转换为192.168.80.11
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.80.11
或
iptables -t nat -A PREROUTING -i ens33-d 12.0.0.1 -p tcp --dport 80 -j DNAT--to-destination 192.168.80.11
	                         入站 外网网卡  外网IP                                              内网服务器IP

iptables -t nat -A PREROUTING -i ens33 -p tcp--dport 80 -j DNAT --to 192.168.80.11-192.168.80.20	                         

DNAT-Konvertierung 2: Ändern Sie den Zielport beim Veröffentlichen

#发布局域网内部的OpenssH服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.80.11:22

#在外网环境中使用SSH测试
ssh -p 250 [email protected]

#在外网环境中使用SSH测试
ssh -p 250 [email protected]
yum -y install net-tools        #若没有ifconfig命令可提前使用yum进行安装
ifconfig ens33

注意:使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回

Kleine Wissenserweiterung:
Hostbasierte Firewalls verwenden hauptsächlich INPUT- und OUTPUT-Ketten. Beim Festlegen von Regeln müssen diese im Allgemeinen detailliert angegeben werden.
Netzwerkbasierte Firewalls verwenden hauptsächlich FORWARD-Ketten. Beim Festlegen von Regeln geben sie selten Ports an, geben jedoch im Allgemeinen IP-Adressen oder das Internet an. Sektion

7. Sichern und Wiederherstellen von Firewall-Regeln:

Export- (Sicherungs-) Regeln für alle Tabellen

iptables-save > /opt/ipt.txt

Regeln importieren (wiederherstellen)

iptables-restore < /opt/ipt.txt

Speichern Sie die iptables-Regeldatei in / etc / sysconfig / iptables. Die Regeln werden automatisch wiederhergestellt, wenn der iptables-Dienst gestartet wird

iptables-save > /etc/sysconfig/iptables
systemctl stop iptables   #停止iptables服务会清空掉所有表的规则
systemctl start iptables  #启动iptables服务会自动还原/etc/sysconfig/iptables中的规则

Ich denke du magst

Origin blog.csdn.net/Gengchenchen/article/details/111862250
Empfohlen
Rangfolge