目錄
一,Iptables概述
二,iptables組成
1,表
2,鏈
3,鏈表對應關系
4,數據包過濾的匹配流程
5,規則匹配策略
三,iptables防火墻配置
1,iptables命令
2,常用控制類型
3,命令操作
四,規則的匹配
1,通用匹配
2,隱含匹配
3,顯氏匹配
一,Iptables概述
iptables作為內核級別的防火墻,具有高效,穩定,安全的特點
iptables的表,鏈,規則結構非常靈活,可使用各種不同的網絡環境和應用場景
iptables相對于其他防火墻工具而言比較容易學習和掌握,并且拓展性很強
二,iptables組成
iptables的核心是由表,鏈,規則三部分組成的
1,表
在iptables之內,表是一個規則的集合,每個表都包含一些鏈和對應的規則常用的有五種:
raw表:確定是否對該數據包進行數據跟蹤
mangle表:更改數據包,用來做流量整形的,給數據包設置標記。包含五個規則鏈,INPUT,OUTPUT,FORWAR,PREROUTING,POSTROUTING
nat表:負責網絡地址轉換,用來更改數據包之內的源,目標IP地址和端口,包括三個規則鏈,OUTPUT,PREROUTING,POSTROUTING
filter表:負責過濾數據包,是否放行該數據包,包含三個規則鏈,INPUT,FORWARD,OUTPUT
優先級:raw>mangle>nat>filter
2,鏈
在iptables之內,鏈是一個規則的集合,每個鏈都包含一些有關的規則????????
INPUT鏈:當接收到防火墻本機地址的數據包時,應用此鏈之內的規則
OUTPUT鏈:當防火墻本機向外發送數據包時,應用此鏈之內的規則
FORWARD鏈:當接收到需要通過防火墻發送給其他地址的數據包時,應用此鏈之內的規則
PREROUTING鏈:在對數據包做路由選擇之前,應用此鏈之內的規則,用來更改目的地址
POSTROUTING鏈:在對數據包做路由選擇之前,應用此鏈之內的規則,用來更改源地址
3,鏈表對應關系
nat表:PREROUTING鏈,POSTROUTING鏈
filter表:INPUT鏈,FORWARD鏈,OUTPUT鏈
4,數據包過濾的匹配流程
轉發:目的地不是本機,數據包先從A網絡過濾,經過PREROUTING鏈,看是否是自己的目的地址,如果是外網到內網需要用nat轉換成內網IP,找到內網用戶,經過FORWARD鏈進行過濾;允許放通的到達POSTROUTING鏈,再把內網地址轉換成公網,這樣數據包才能回去,內網發往外網就需要反過來
總結:當一個數據包進到網卡時,數據包首先進到PREROUTING鏈,內核根據數據包IP判斷是否需要轉送發出,要是數據包是進到本機的,數據包就會沿著圖向上移動,到達INPUT鏈。數據包到達INPUT鏈之后,所有進程都會收到,本機上運行的程序可以發到數據包,這些包經過OUTPUT鏈,再發送出,要是數據包時需要發送的,內核還允許轉發,數據包就會向右移動,經過FORWARD鏈,再到達到POSTROUTING鏈輸出
5,規則匹配策略
自上而下進行順序匹配,匹配到即停止不會再看下面的規則,再通過允許或丟掉或拒絕等規則進行數據包的處理
三,iptables防火墻配置
1,iptables命令
選項 | 意義 |
-t | 指定表明 |
-j | 指定控制類型 |
-A | 指定鏈的末尾追加一條規則 |
-I | 在指定鏈的開頭插一條規則;未指定序號時固定作為第一條規則 |
-D | 刪除指定鏈之內的一條規則,可指定規則序號或具體內容 |
-L | 列出指定鏈之內的所有規則;未指定鏈名則列出表之內的所有鏈 |
-F | 刪除指定鏈之內的所有規則;未指定鏈名則刪除表之內的所有鏈 |
-v | 輸出詳細信息,包括每條規則的匹配包數量和匹配字節數 |
--line-number | 查看規則時,輸出規則的行號 |
-p | 指定要匹配的數據包的協議類型 |
-s | 指定要匹配的數據包的源IP地址 |
-d | 指定要匹配的數據包的目的IP地址 |
-i | 指定數據包進到本機的網絡接口 |
--dport | 指定目的的端口號 |
2,常用控制類型
控制類型 | 作用 |
ACCEPT | 允許數據包通過 |
DROP | 直接丟掉數據包,不給出回應消息 |
REJECT | 拒絕數據包通過,會給數據發送一個相應信息 |
SNAT | 更改數據包的源地址 |
DNAT | 更改數據包的目的地址 |
3,命令操作
(1),
iptables -t filter -nL --line-numbers
#以數字形式顯示詳細信息并顯示規則序號
(2),
iptables -t filter -A INPUT -p icmp -j REJECT
#在filter表的INPUT鏈之內添加拒絕icmp的規則
(3),
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
#在filter表的INPUT鏈的TCP協議22號端口添加ACCEPT規則
??
(4),
iptables -D INPUT 3
#刪除INPUT鏈上的3號規則
iptables -D INPUT -p icmp --icmp-type 8 -j DROP
#刪除INPUT鏈上的icmp協議8號類型的DROP規則
(5),
iptables -F OUTPUT
#刪除OUTPUR鏈上的所有規則
四,規則的匹配
1,通用匹配
可以直接用,不依賴另外的條件和擴展包括網絡協議,IP協議,網絡接口條件等
(6),
iptables -I INPUT -i ens33 -s 192.168.40.0/24 -j REJECT
#拒絕從192.168.40.0/24網段的ens33網絡接口進
2,隱含匹配
某些條件。像端口,tcp標記,icmp類型,隱含需要以特定的協議匹配作為前提
(8),
iptables -I FORWARD -d 192.168.40.0/24 --dport 22:25 -j DROP
#丟掉FORWARD鏈192.168.40.0/24網段22至25端口的數據包
(9),
iptables -I OUTPUT -p tcp --dport 22 --tcp-flags SYN,RST,ACK SYN -j REJECT
#在OUTPUT鏈tcp協議22號端口上拒絕RST,ACK包,接收SYN包
(10),
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
#丟掉INPUT鏈icmp協議并關閉目標主機的echo request回復
3,顯氏匹配
需要以m的形式明確指出類型,包括多端口,mac地址,ip范圍,數據包狀態等條件
(11),
iptables -A INPUT -p tcp -m multiport --dport 22,80 -j ACCEPT
#允許放通INPUT鏈tcp協議的22和80端口
iptables -A INPUT -p tcp -m iprange --dstrange 192.168.40.10-192.168.40.20 -j DROP
#丟掉INPUT鏈tcp協議IP地址范圍是192.168.40.10至192.168.40.20之內的數據包
打賞鏈接:
???????????????????????????????????????????????????????????????????????????????????????????