命令(3)====ip tables

1、防火牆基礎

linux防火牆主要工作在網絡層,針對TCP/IP數據包實施過濾和限制(包過濾防火牆或網絡層防火牆),linux防火牆

是基於內核編碼實現,具有非常穩定的性能和高效率

(1)netfilter:包過濾防火牆:包過濾防火牆是用一個軟件查看所流經的數據包的包頭(header),由此決定整個包的命運。

它可能會決定丟棄(DROP)這個包,可能會接受(ACCEPT)這個包(讓這個包通過),也可能執行其它更復雜的動作。

工作於網絡層,能對IP數據報進行首部檢查。例如:IP源地址,目的地址,源端口和目的端口等。

內核態防火牆體系

(2) iptables:指的是用於管理linux防火牆的命令程序

用戶態防火牆體系

(3)iptables的錶鏈結構

 表

1)filter表:用來對數據包進行過濾,根據規則確定如何處理一個數據包

filter表對應的內核模塊是iptable_filter,表內包含3個鏈

INPUT FORWARD OUTPUT

2)    net表:nat(Network Address Translation)網絡地址轉換

主要用來修改IP地址、端口號等信息

net表對應的內核模塊是iptable_nat

PREROUTING POSTROUTING OUTPUT

3) mangle表:mangle表用來修改數據包的TOS服務類型、TTL生存週期、或者爲數據包設置Mark標記

以實現流量整形、策略路由等高級應用

mangle表對應的內核模塊爲iptable_mangle,表內含5個鏈

PREROUTING POSTROUTING INPUT OUTPUT FORWARD

4)   raw表:主要用來決定是否對數據包進行狀態跟蹤

raw表對應的內核模塊爲iptable_raw,表內包含兩個鏈

OUTPUT PREROUTING

 鏈

1) INPUT鏈:  當收到訪問防火牆本機地址的數據包(入站)時,應用此鏈中規則

2)OUTPUT鏈:  當防火牆本機向外發送數據包(出站)時,應用此鏈中規則

3)FORWARD鏈: 當接收到需要通過防火牆中轉發給其他地址的數據包(轉發)時,應用此鏈中規則

4)PREROUTING鏈:在對數據包做路由選擇之前,應用此鏈中規則

5)POSTROUTING鏈:在對數據包做路由器選擇之後,應用此鏈中規則

       4表5鏈

INPUT OUTPUT 主要用在“主機型防火牆”主要針對服務器本身進行保護

FORWARD PREROUTING POSTROUTING 多用在“網絡型防火牆”中,可以做linux防火牆的網管服務器

在公司內網與互聯網之間進行安全控制

規則之間的順序

raw mangle nat filter 

1)入站數據流向:來自外界的數據包到達防火牆後,首先被PREROUTING鏈處理然後進行路由選擇

(判斷該數據包應該發往何處),如果數據包的目標地址是防火牆本機,那麼

內核將其傳遞給INPUT鏈處理

2)轉發數據流向:如果數據包的目標地址是其它外部地址,則內核將其傳遞給FORWARD鏈進行處理

(允許轉發或攔截、丟棄),最後交給POSTROUTING(是否修改數據包地址等)進行處理

3)出站數據流向:首先OUTPUT鏈處理,然後進行路由選擇,再交給POSTROUTING鏈

(是否修改數據包的地址等),進行處理

    4)每條鏈內的規則(匹配即停止)如果第一條通過了後續的規則將失效

2、編寫防火牆規則

iptables -t 表名 管理選項 鏈名 匹配條件 -j 控制類型

ACCEPT 允許數據包通過

DROP   丟棄數據包

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

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

  因爲LOG只是一種輔助動作,所以“匹配即停止”,對LOG是個特例,還會繼續匹配

iptables 命令的常用的幾個管理選項

-A 在指定鏈的末尾添加一條新的規則

-D 刪除指定鏈中的規則,可指定序號或具體內容

-I 在指定鏈中插入一條新的規則,未指定序號默認作爲第一條規則

-R 修改、替換

-L 列出規則  list

-F 清空規則

-P 設置指定鏈的默認規則

-n 使用數字形式顯示輸出結果

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

-h 查看命令幫助信息

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

1、其它主機無法ping通主機

iptables -t filter -I INPUT -p icmp -j REJECT

2、在INPUT鏈末尾添加一條允許tcp協議通過的規則

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

3、在filter表INPUT鏈添加位於表中排序第一的規則和排序第二的規則

iptables -t filter -I INPUT   -p udp  -j ACCEPT

iptables -t filter -I INPUT 2 -p icmp -j ACCEPT

4、查看規則列表

iptables -L  INPUT --line-numbers

iptables -n -L  INPUT     (數據多用這個減少解析時間)

5、刪除清空列表

iptables -D INPUT 3    #刪除filter表INPUT鏈的第3條信息

iptables -F INPUT      #清空file表INPUT鏈中的所有信息

iptables -F            #清空filter表

iptables -t nat -F     #清空nat表

iptables -t mangle -F  #清空mangle表

6、設置默認策略

filter表FORWARD默認策略爲丟棄,OUTPUT鏈默認策略爲允許 

iptables -t filter -P FORWARD DROP

iptables -P OUTPUT ACCEPT

7、通用匹配

協議匹配

若要丟棄通過icmp協議訪問防火牆本機的數據包,允許轉發經過防火牆出icmp以外的的數據包

iptables -I INPUT -p icmp -j DROP

iptables -A FORWARD ! -P icmp -j ACCEPT

地址匹配

若要拒絕轉發源地址爲192.168.1.11的數據,允許轉發源地址位於192.168.7.0/24網段的數據

iptables -A FORWARD -s 192.168.1.11 -j REJECT

iptables -A FORWARD -s 192.168.7.0/24 -j ACCEPT

若檢測到來自某個網段(10.20.30.0/24)的頻繁掃描添加防火牆進行封鎖

iptables -I INPUT -s 10.20.30.0/24 -j DROP

iptables -I FORWARD -s 10.20.30.0/24 -j DROP

網絡接口匹配

若要丟棄外網接口(eth1)訪問防火牆本機且源地址爲私有地址的數據包

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

iptables -A INPUT -i eth1 -s 172.16.0.0/12  -j DROP

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

端口匹配

若要允許爲網段192.168.4.0/24轉發DNS查詢數據包

iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT

iptables -A FORWARD -d 192.168.4.0/24 -p udp --dport 53 -j ACCEPT

構建vsftpd服務器時,若要開放20.21端口,以及用於被動模式的端口範圍24500~24600

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

iptables -A INPUT -p tcp --dport 24500:24600 -j ACCEPT

ICMP類型匹配                                      #icmp-type檢查icmp協議

iptables -A INPUT -p icmp --icmp-type 8 -j DROP   #拒絕其他請求但是自己可以ping其它機器

iptables -A INPUT -p icmp --icmp-type 0 -j DROP   #我ping其它的主機返回來的信息我接收

iptables -A INPUT -p icmp --icmp-type 3 -j DROP   #對方不存在返回值我接收

iptables -A INPUT -p icmp -j DROP                 #禁止所有機器ping

顯示匹配

若要允許本機開放25.80.110.143端口 

iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT

IP範圍匹配

若要禁止轉發源IP地址位於192.168.4.21與192.168.4.28之間的tcp數據包

iptables -A FORWARD -p tcp -m iprange -src-range 192.168.4.21-192.168.4.28 -j REJECT

MAC地址匹配 -m 模塊

若要根據MAC地址封鎖主機,禁止其訪問本機的任何應用 

iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -DROP

狀態匹配

若要禁止轉發與正常TCP連接無關的非--syn請求的數據包

iptables -A FORWARD -m state --state NEW -p tcp !--syn -j DROP #無正常連接的狀態是NEW

#NEW狀態模塊的非syn選項

若只開放本機的web服務(80端口)

iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT  #插入行首一條將有關聯的包放行

iptables -A INPUT -p tcp --dport 80 -j ACCEPT                    #緊隨其後添加一條允許80端口開放

iptables -P INPUT DROP                               #當前兩條規則都沒匹配上執行默認規則丟棄數據包


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