命令(3)====ip tables

一、防火牆基礎linux

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

是基於內核編碼實現,具備很是穩定的性能和高效率安全

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

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

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

內核態防火牆體系ide

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

用戶態防火牆體系編碼

(3)iptables的錶鏈結構spa

 表

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)每條鏈內的規則(匹配即中止)若是第一條經過了後續的規則將失效

二、編寫防火牆規則

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 查看規則列表時,同時顯示規則在鏈中的序號

一、其它主機沒法ping通主機

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

二、在INPUT鏈末尾添加一條容許tcp協議經過的規則

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

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

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

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

四、查看規則列表

iptables -L  INPUT --line-numbers

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

五、刪除清空列表

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表

六、設置默認策略

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

iptables -t filter -P FORWARD DROP

iptables -P OUTPUT ACCEPT

七、通用匹配

協議匹配

若要丟棄經過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                               #當前兩條規則都沒匹配上執行默認規則丟棄數據包

相關文章
相關標籤/搜索