Linux 防火牆IPTABLES規則配置文檔

1模板:

iptables的模板:

Iptables  -t  {filter,nat}  -{A,I,D}  {INPUT,FORWORD,OUTPUT}  {n}  -p  {tcp,udp,icmp}  {!} -s  {192.169.0.1, 192.168.0.0/24,不寫代表所有}  -d {不寫代表防火牆自身}  --sport m:n  --dport x:y  -j  {ACCEPT, DROP,  REJECT ,  POSTROUTING ,  PREROUTING,  LOG}

 

2 規則表

 

2.1定義

表的作用:容納各種規則鏈

表的劃分依據:防火牆規則的作用相似

 

默認包括4個規則表

raw表:確定是否對該數據包進行狀態跟蹤

mangle表:爲數據包設置標記

nat表:修改數據包中的源、目標IP地址或端口

filter表:確定是否放行該數據包(過濾)

常用的就是其中filter表nat表多用於實現ip的轉化功能,這裏的表功能個人感覺相當於鏈下面的表功能,每種鏈都存在這四種表

2.2優先級

raw>mangle>nat>filter

規則鏈之間的默認優先級

入站:PREROUTING>INPUT

出站:OUTPUT>POSTROUTING

轉發:PREROUTING>FORWARD>POSTROUTING

規則鏈內的匹配順序

按順序依次檢查,匹配即停止(LOG策略例外)

若找不到相匹配的規則,則按該鏈的默認策略處理,這跟路由轉發還是有點區別的

 

3 常用命令說明

命令

說明

試圖

iptables -L -n

查看本機iptables的設置情況(右邊圖是沒有啓動防火牆)

 

Iptables -F

清除預設表filter中的所有規則鏈的規則

 

Iptables -X

清除預設表 filter中的使用者自定鏈中的規則

 

/etc/rc.d/init.d/iptables save

保存(需要重啓才生效)

 

service iptables restart

重啓

 

iptables -D

 

將指定的鏈中刪除規則

 

iptables -P

 修改鏈的默認設置,如將iptables -P INPUT DROP (將INPUT鏈設置爲DROP)

 

iptables -t nat -L

列出所有NAT鏈中所有規則

 

4 參數說明

--dport

指定目標TCP/IP端口 如 –dport 80

--sport

指定源TCP/IP端口 如 –sport 80

-p tcp

指定協議爲tcp

-p icmp

指定協議爲ICMP

-p udp

指定協議爲UDP

-j DROP

拒絕

-j ACCEPT

允許

-j REJECT

拒絕並向發出消息的計算機發一個消息

-j LOG

在/var/log/messages中登記分組匹配的記錄

-m mac –mac

綁定MAC地址

-m limit –limit 1/s 1/m

設置時間策列

-s 10.10.0.0或10.10.0.0/16

指定源地址或地址段

-d 10.10.0.0或10.10.0.0/16

指定目標地址或地址段

-s ! 10.10.0.0

指定源地址以外的

 

 

5 設定預設規則

Iptables -P INPUT DROP

預設input規則,超出則放棄 控制流入數據(但是執行此命令會導致SSH遠程斷開,需要配置規則,無需執行此命令)

 

Iptables -P OUTPUT ACCEPT

預設output規則,全部接受

 

Iptables -P FORWARD DROP

同理 轉發 規則

 

 

6 添加FILter規則

首先添加input鏈,上述默認預設規則是drop,所以需要添加規則使SSH遠程可以登錄

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

遠程SSH連接端口 開啓22端口(具體端口依據實際情況)

 

iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

如果預設output規則設置drop 需要設置此規則(具體端口依據實際情況)

iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

如果web服務器,output設置drop,同樣需要添加一條鏈(具體端口依據實際情況)

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

同理需要web服務器,input設置drop,需要開啓端口 80鏈(具體端口依據實際情況)

iptables -A INPUT -p tcp --dport 110 -j ACCEPT

iptables -A INPUT -p tcp --dport 25 -j ACCEPT

開啓郵件服務器,開啓 25、110 端口鏈(具體端口依據實際情況)

iptables -A INPUT -p tcp --dport 21 -j ACCEPT

iptables -A INPUT -p tcp --dport 20 -j ACCEPT

 

開啓FTP服務器,(具體端口依據實際情況)

iptables -A INPUT -p tcp --dport 53 -j ACCEPT

 

開啓DNS服務器 ,(具體端口依據實際情況)

iptables -A OUTPUT -p icmp  -j ACCEPT

iptables -A INPUT -p icmp  -j ACCEPT

 

運行icmp包通過(ping)

iptables -A OUTPUT -o lo -p all  -j ACCEPT

iptables -A INPUT -i lo -p all-j ACCEPT

 

允許loopback  不然會導致DNS無法正常關閉

iptables -A OUTPUT -p tcp --sport 9990-j DROP

 

如果output鏈規則是accept,則需要關閉對於的端口號,防止有些病毒利用此端口

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

如果input鏈規則是accept,則需要關閉對於的端口號,防止有些病毒利用此端口

iptables -A INPUT -s 192.168.0.1 -p tcp --dport 22 -j ACCEPT

允許固定ip機器進行SSH連接(!191.168.0.1 表示除此IP外)

iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT

允許 192.168.0.1-255 端的所有ip(刪除/ect/sysconfig/iptables 裏的其中一行 -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT)

Iptables -A FORWORD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

Iptables -A FORWORD -i eth1 -o eth0 -j ACCEPT

在NAT時 FORWORD 規則是DROP我們需要開啓轉發功能

Iptables -A FORWORD -p TCP ! --syn -m state --state NEW -j DROP

丟棄壞的TCP包

Iptables -A FORWORD -f -m limit 100/s --limit-burst 100 -j ACCEPT

處理ip碎片數量,防止攻擊,允許每秒100個

Iptables -A FORWORD -p icmp -m limit 1/s --limit-burst 10 -j ACCEPT

設置icmp包過濾,允許每秒1個包,限制觸發條件10個包

iptables -A INPUT   -m state --state INVALID -j DROP

iptables -A OUTPUT  -m state --state INVALID -j DROP

iptables -A FORWARD -m state --state INVALID -j DROP

 

DROP非法連接

7 添加NAT規則(默認規則是ACCEPT,添加DROP鏈)

iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP

iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP

iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP

 

防止外網內網IP欺騙

 iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP

 

禁止與211.101.46.253的所有連接

 

 

 

 

 

附件:

測試題1:查看ip

測試題2:查看防火牆狀態

測試題3:查看規則列表

測試題4:阻止特定ip(192.168.0.1)進行SSH連接

測試題5:刪除filter表的output鏈第3條規則

測試題6:阻止客戶端訪問服務器8080端口號的訪問

測試題7:允許web服務只能被固定端的ip訪問

測試題8:只允許192.168.0.3的機器進行SSH連接

測試題9:阻止8080端口被ip(192.168.0.1)客戶端訪問

測試題10:匹配的規則記錄到日誌中去

 

 

答案:

CODE:JAVA

1、ifconfig

2、/etc/init.d/iptables status

3、iptables -L -n

4、iptables -t filter -A INPUT -p tcp -s 192.168.0.1 --dport 22 -j DROP

5、iptables -D OUTPUT 3

6、iptables -A INPUT -p tcp --dport 8080 -j DROP

7、

iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -s x.x.x.x -p tcp --dport 80 -j ACCEPT
8、iptables  -A INPUT -p tcp -s 192.168.0.3 --dport 22 -j ACCEPT

9、iptables  -A INPUT -p tcp -s 192.168.0.1 --dport 8080-j DROP

10、iptables -A INPUT -P tcp -m mac --mac=mac地址 --dport 22 -j LOG 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章