Linux之Iptables防火牆管理與配置~

基本語法格式:

iptables  [ –t 表名 ]  命令選項  [ 鏈名 ]  [ 條件匹配 ]  [ –j 目標動作或跳轉 ]

Tip:若不指定表名,默認使用filter表。

 

常用選項:

-A:在指定鏈的末尾添加( –append )一條新規則。

-D:刪除指定鏈中的某一條規則,按規則序號或內容確定要刪除的規則

-I:在指定鏈中插入一條新規則,若不指定插入位置,默然在鏈的開頭插入

-R:修改、替換指定鏈中的某一條規則,按規則序號或內容確定要替換的規則

-L:列出指定鏈中所有規則進行查看,若未指定鏈名,則列出表中所有規則內容

-F:清空指定鏈中所有規則,若未指定鏈名,則清空表中所有鏈的內容

-N:新建一條用戶自定義的規則鏈

-X:刪除指定表中用戶自定義的規則鏈

-P:設置指定鏈的默認策略

-n:使用數字形式顯示輸出結果,如顯示主機的IP而不是主機名

-v:查看規則列表時顯示詳細信息

-V:查看Iptables命令工具的版本

-h:查看命令幫助信息

--line-numbers:查看規則列表時,同時顯示規則在鏈中的序列號

 

數據包控制:

ACCEPT:允許數據包通過

DROP:直接丟棄數據包,不給任何迴應信息

REJECT:拒絕數據包通過,必要時會給數據發送端一個響應信息

LOG:在/var/log/messages文件中記錄日誌信息,然後將數據包傳遞給下一條規則。

 

簡單Iptables使用示例:

1. 在filter表的INPUT鏈末尾增加一條規則:

iptables -t filter -A INPUT -p tcp -j ACCEPT

2. 在filter表的INPUT鏈行首增加一條規則:

iptables –I INPUT –p udp –j ACCEPT   ( 此處省略了“-t filter”選項,默認以filter處理)

3. 在filter表的INPUT鏈中插入一條防火牆規則,做爲鏈的第二條規則:

iptables –I INPUT 2 –p icmp –j ACCEPT

4. 查看filter表INPUT鏈中的所有規則,同時顯示規則的序號

iptables –L INPUT –line-numbers

5. 刪除filter表INPUT鏈中第2條規則:

iptables –D INPUT 2

6. 清空filter、nat、mangle表各鏈中的所有規則:

iptables –F

iptables –t nat –F

iptables –t mangle –F

7. 設置filter表FORWARD規則鏈的默認策略爲DROP

iptables –P FORWARD DROP

 

條件匹配示例:

1. 協議匹配:如拒絕進入防火牆的所有icmp協議數據包
iptables –I INPUT –p icmp –j REJECT

允許轉發除icmp協議以外的所有數據(使用!可以將條件取反

iptables –A FORWARD ! –p icmp –j ACCEPT

2. 地址匹配:(”-s 源地址”/ “-d 目標地址”)

拒絕轉發來自192.168.1.1主機的數據

iptables –A FORWARD –s 192.168.1.1 –j REJECT

3. 網絡接口匹配:(“-i 網絡接口名”/ “-o 網絡接口名”分別對應接收數據包的網卡和發送數據包的網卡)

丟棄從外網接口eth1進入防火牆本機的源地址爲私網地址的數據包

iptables –A INPUT –i eth1 –s 192.168.0.0/16 –j DROP

iptables –A INPUT –i eth1 –s 172.16.0.0/12 –j DROP   (這裏運用了子網彙總)

iptables –A INPUT –i eth1 –s 10.0.0.0/8 –j DROP

4. 端口匹配:用於檢查數據包的TCP或UDP端口號,需要以“-p tcp”或“-p udp”匹配爲前提,使用“--sport 源端口”、“--dport 目標端口”的形式。端口可以表示爲單個端口號或者用冒號分割的端口範圍。

僅允許管理員從192.168.1.0/24網段使用SSH方式遠程登錄防火牆主機

iptables –A INPUT –p tcp –dport 22 –s 192.168.1.0/24 –j ACCEPT

iptables –A INPUT –p tcp –dport 22 –j DROP

5. TCP標記匹配:在Iptables命令中使用“--tcp-flags  檢查範圍  被設置的標記”的形式,兩個參數“檢查範圍”和“被設置的標記”均爲TCP標記的列表,各標記之間以逗號分割。“檢查範圍”告訴Iptables需要檢查數據包的哪幾個標記,“被設置 的標記”則明確匹配對應只爲1的標記。【SYN(同步)、ACK(應答)、FIN(結束)、RST(重設)、URG(緊急)、PSH(強迫推送)等均可使用於參數中,除此之外還可以使用關鍵詞 ALL 和 NONE 進行比對】

拒絕從外網接口eth1直接訪問防火牆本機的數據包,但是允許響應防火牆TCP請求的數據包進入;

iptables –P INPUT DROP

iptables –I INPUT –i eth1 –p tcp --tcp-flags SYN,RST,ACK  SYN –j REJECT

iptables -I INPUT  -i eth1 -p tcp  ! --syn -j ACCEPT

(注:--syn同等於:--tcp-flags SYN,RST,ACK,FIN SYN,詳情可以man iptables)

6. ICMP類型匹配:ICMP類型可以使用字符串或數字代碼,例如“Echo-Request”(數字代碼爲8),“Echo-Reply”(數字代碼爲0),“Destination-Unreachable”(數字代碼爲3),分別對應ICMP協議的請求、回顯、目標不可達數據。

禁止其它主機ping防火牆主機,但是允許防火牆ping其它主機(允許接收ICMP迴應數據)。

iptables -A INPUT -p icmp --icmp-type Echo-Request -j DROP

iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT

iptables -A INPUT -p icmp --icmp-type Destination-Unreachable -j ACCEPT

7. 顯示條件匹配:這種匹配功能需要額外的內核模塊提供,因此需要手工指定匹配方式,在Iptables命令中使用“-m 模塊關鍵字”的形式調用顯示匹配,當然還需要指定匹配內容。

a. MAC地址匹配:例如禁止轉發來自MAC地址爲00:01:12:AA:3F:DD的主機數據包

iptables –A FORWARD –m mac –mac-source  00:01:12:AA:3F:DD –j DROP

b. 多端口匹配:Iptables中使用“—dports 端口列表”,“—sports 端口列表”的形式對應源端口地址列表、目標端口地址列表。

允許防火牆本機開放TCP端口20、21、25、110及被動模式FTP端口1250~1280

iptables –A INPUT –p tcp –m multiport –dports 20,21,25,110,1250:1280 –j ACCEPT

c. 多IP地址匹配:Iptables中使用“--src-range IP地址範圍”“--dst-range IP地址範圍”的形式對應源IP地址範圍、目標IP地址範圍。

禁止轉發IP地址爲192.168.1.1~192.168.1.10的TCP數據包

iptables –A FORWARD –p tcp –m iprange –src-range 192.168.1.1-192.168.1.10 –j DROP

d. 狀態匹配:常見的數據包狀態包括NEW(與任何連接無關的)、ESTABLISHED(響應請求或已建立連接的)和RELATED(與已有連接相關的)

禁止轉發與正常TCP連接無關的非--syn請求數據包(如網絡中存在一些非法***數據包)

iptables –A FORWARD –m state –state NEW –p tcp ! –syn –j DROP

 

防火牆規則的導入、導出

直接執行iptables-save命令時,會把當前設置的防火牆規則信息輸出到終端。通常情況下,可以使用重定向將信息保存爲指定的配置文件,結合系統默認提供的Iptables服務腳本,可以自動加載位置於/etc/sysconfig/iptables文件中的規則配置。

使用iptables-restore命令,可以從已保存的配置文件中導入Iptables規則(該文件必須是使用Iptables-save命令導出的配置數據)。

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