iptables命令

iptables是與最新的 3.5 版本 Linux 內核集成的 IP 信息包過濾系統。如果 Linux 系統連接到因特網或 LAN、服務器或連接 LAN 和因特網的代理服務器, 則該系統有利於在 Linux 系統上更好地控制 IP 信息包過濾和防火牆配置。

防火牆在做信息包過濾決定時,有一套遵循和組成的規則,這些規則存儲在專用的信息包過濾表中,而這些表集成在Linux內核中。在信息包過濾表中,規則被分組放在我們所謂的鏈(chain)中。而iptables信息包過濾系統是一款功能強大的工具,可用於添加、編輯和移除規則。

規則:就是網絡管理員預定義的條件,規則一般定義爲“如果數據包頭符合這樣的條件,就這樣處理這個數據包”。規則存儲在內核空間的信息包過濾表中,這些規則分別定義了源地址、目的地址、傳輸協議(如TCP,UDP,ICMP)和服務類型(HTTP,FTP,SMTP)等,當數據包與規則匹配時,iptables就根據規則所定義的方法來處理這些數據包,如放行(accept),拒絕(reject),和丟棄(drop)等。配置防火牆主要工作就是添加,修改和刪除這些規則。

鏈:鏈(CHAINS)是數據包傳播的途徑,每一條鏈其實就是衆多規則中的一個檢查清單,每一條鏈可以有一條或數條規則。當一個數據包到達一條鏈時,iptables就從鏈中第一條規則開始檢查,看該數據包是否滿足規則定義的條件。如果滿足,系統就會根據這條規則所定義的方法處理該數據包;否則iptables將繼續檢查下一條規則,如果該數據包不符合鏈中任一條規則,iptables將會按照默認策略來處理數據包。

表:表(tables)提供了特定的功能,iptables內建了3個表,即filter表、nat表、和mangle表。分別用於實現包過濾,網絡地址轉換和包重構的功能


iptables常用命令格式:iptables [-t –命令 匹配 動作

    1. 表選項: filter(預設)、natmangle

    2. 命令選項:用於指定執行方式,包括插入規則、刪除規則、添加規則等。常用命令,見表1

常用命令

-P

定義默認策略

-L

查看iptables規則列表

-A

在規則列表最後面添加1條規則

-I

在指定位置插入1條規則

-D

從規則列表中刪除1條規則

-F

刪除表中所有規則

    3、匹配選項:匹配指定數據包與規則匹配所具有的特徵,包括源地址、目的地址、傳輸協議和端口號。常用匹配選項見表2

常用匹配選項

-p

指定數據包匹配的協議tcp,udp,icmp

-s

指定數據包匹配的源地址

--sport

指定數據包匹配的源端口號

 -d

指定數據包匹配的目的地址

--dport

指定數據包匹配的目標端口號

-j

後面接動作

-i

入站網卡

-o

出站網卡

    4、動作選項:指定當數據包與規則匹配時,應該做什麼操作,如接收,丟棄等 

常用匹配選項

ACCEPT

接受數據包

DROP 

丟棄數據包


實際應用:    

iptables針對TCP/IP數據包實施過濾和限制。使用預設的表filter,使用輸入INPUT及輸出OUTPUT鏈限制包的流進及流出。以下介紹一些iptables常用調試方法及示例:


1、設置默認策略:當所有規則不匹配時,使用的就是默認策略:

iptables -P INPUT ACCEPT

輸入允許

iptables -P OUTPUT ACCEPT

輸出允許

2、黑名單:除了設置的黑名單地址不允許過,其他所有的包通過。

iptables -F                            #清除所有規則

iptables -A INPUT -s 192.0.0.128 j DROP  #增加第1條規則:丟棄源地址 192.0.0.128 數據包

iptables -A INPUT -s 192.0.0.65 -j DROP     #增加第2條規則:丟棄源地址 192.0.0.65 數據包

例:

1.         192.0.0.65訪問設備,匹配第1條規則,不匹配,接着匹配第2條規則,匹配上,動作丟棄,設備不響應

2.         192.0.0.129訪問設備,那麼所有規則均不匹配,那麼使用默認策略,IPPUT輸入默認允許,那麼允許數據包通過,訪問設備成功

通過示例可以清楚的看到,黑名單中地址被過濾掉,其他地址允許通過,實現黑名單效果

3、白名單:除了設置的白名單地址,禁止其他所有包。

iptables -F #清除所有規則

iptables  -A INPUT -s 172.8.4.205 –j ACCEPT   #增加第1條規則:允許源地址192.0.0.128通過

iptables  -A INPUT -s 172.8.4.199 –j ACCEPT  #增加第2條規則:允許源地址192.168.1.100通過

………………

iptables  -A INPUT -j DROP #增加最後一條規則,丟棄

4ftp 服務設置

u  禁用設備ftp服務

iptables -A INPUT -p TCP --dport 21 -j DROP  #禁止訪問IPC21端口,即ftp服務器

u  禁用指定主機訪問設備ftp

iptables -A INPUT -s 192.0.0.65 -p TCP --dport 21 -j DROP  #禁止192.0.0.65通過TCP協議訪問設備的21端口

5telnet服務設置

u  iptables -A INPUT -p TCP --dport 23 -j DROP #禁止訪問IPC23端口,即telnet服務

6、調試

我們常常調試設備時,很多多餘的網絡信息干擾,此時我們可以通過iptables簡單設置幾條規則,就可屏蔽其他的多餘網絡包的干擾。比如要使我們自己一臺主機訪問設備,只需設置允許自己主機通過,禁用其他所有包,就如白名單設置;再如我們PC主機是192.0.0.65IPC地址時192.0.0.64,我們調試某一WEB接口(80端口)功能,去除其他的一些干擾網絡信息,可做如下地址過濾:

#清除所有規則

iptables -F   

#允許192.0.0.65訪問設備TCP80端口

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

#允許本機訪問本機,這條規則要加上,要不然設備內部套接字通信的功能都將失效,比如串口命令等

iptables -A INPUT -s 127.0.0.1 -j ACCEPT

#不允許其他包通過

iptables -A INPUT -j DROP

發佈了37 篇原創文章 · 獲贊 13 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章