Iptables
感覺防火墻可能不能完美的保護主機,比如ping措施,這時,就需要使用iptables來進行配置。
使用Iptables的內置firewall機制,是通過kernel中的netfilter 模塊實現(xiàn)的,Linux kernel使用netfilter對進出數(shù)據(jù)包進行過濾,netfilter由三個規(guī)則表組成,每個表又有許多內建的鏈組成。使用iptables命令可以對這些表鏈進行操作,如添加、刪除、列出規(guī)則等。
Netfilter 規(guī)則表 --- filter nat managle
filter用于路由網(wǎng)絡數(shù)據(jù)包。是默認的,也就是說如果沒有指定-t參數(shù),當創(chuàng)建一條新規(guī)則時,他默認存放到該表內。
INPUT 網(wǎng)絡數(shù)據(jù)包流向服務器
OUTPUT 網(wǎng)絡數(shù)據(jù)包從服務器流出
FORWARD 網(wǎng)絡數(shù)據(jù)包經(jīng)服務器路由
nat 用于NAT表 Net Address Translation 是一種IP地址轉換方法
PREROUTING 網(wǎng)絡數(shù)據(jù)包到達服務器時可以被修改
POSTROUTING 網(wǎng)絡數(shù)據(jù)包在即將從服務器發(fā)出時可以被修改
managle 用于修改網(wǎng)絡數(shù)據(jù)包的表
配置iptables
當數(shù)據(jù)包進入服務器時,Linux kernel會查找對應的鏈,直到找到一條規(guī)則與數(shù)據(jù)包匹配。如果該規(guī)則的target是ACCEPT,就會跳過剩下的規(guī)則,數(shù)據(jù)包會繼續(xù)被傳送。如果該規(guī)則target是DROP,該數(shù)據(jù)包會被攔截掉,kernel不會在參考其他規(guī)則。
Note:如果從始至終都沒有一條規(guī)則與數(shù)據(jù)包匹配,而且表末尾有沒有drop all規(guī)則,那么該數(shù)據(jù)包會被accept。Cisco則相反,在表末尾會因含deny all的規(guī)則。
1) iptables命令選項
iptables [-t iptables ] command option parameter target
-A 在鏈尾添加一條規(guī)則
-C 將規(guī)則添加到用戶定義鏈之前對其進行檢查
-D 從鏈中刪除一條規(guī)則
-E重命名用戶定義的鏈,不改變鏈本身
-F 清空鏈,刪除鏈上的所有規(guī)則
-I在鏈中插入一條規(guī)則
-L 列出某個鏈上的規(guī)則,如:iptables –L INPUT 列出INPUT鏈上的規(guī)則
-N 創(chuàng)建一個新鏈
-P 定義某個鏈的默認策略
-R替換鏈上的某條規(guī)則
-X 刪除某個用戶相關的鏈
-Z 將所有表的所有鏈的字節(jié)和數(shù)據(jù)包統(tǒng)計數(shù)器清零
2) Iptables的命令參數(shù)
-p protocol
應用于數(shù)據(jù)包的協(xié)議類型,可以是TCP UDP ICMP 或 ALL ! 也可以
當使用-p tcp時,還可使用其他可選項,一邊允許進一步定義規(guī)則,選項如下:
-sport 允許指定匹配數(shù)據(jù)包源端口 port1:port2表示port1和port2之間的所有端口
-dport目的端口,和sport雷同
當使用-p !udp 時,也有特殊的選項供使用
-sport和-dport與-p tcp相同,只不過用于UDP包
使用-p icmp參數(shù)時,只有一個選項可用
-icmp-type 允許在過濾規(guī)則中指定icmp類型
-s source 指定數(shù)據(jù)包包的源地址,該參數(shù)后跟一個IP地址,一個帶有sub-net mask的網(wǎng)絡地址,或者一個主機名(不建議使用主機名)
-d destination 數(shù)據(jù)包的目的地址 同-s
-j jump 用于指定一個target,告訴規(guī)則將該匹配的數(shù)據(jù)包發(fā)送到該target。Target可以是ACCEPT,DROP,QUEIE,PETURN。如果沒有-j,那么不會對數(shù)據(jù)包進行任何操作,只是將計數(shù)器加1
-I in-interface 對于INPUT FOREARD PREROUTING鏈,指定數(shù)據(jù)包到達服務器時所使用的端口
-o out-interface 對于OUTPUT FORWARD POSTROUTING鏈,該參數(shù)指定數(shù)據(jù)包離開服務器時使用的端口
3)Iptables的命令target
創(chuàng)建規(guī)則最后一步是指定iptables對數(shù)據(jù)包的操作。只要某一規(guī)則匹配該數(shù)據(jù)包,就不會再有別的規(guī)則的操作。內建的target有:ACCEPT 允許數(shù)據(jù)包通過 ,到達目的地
DROP 拒絕數(shù)據(jù)包通過,丟棄該包
QUEUE 將數(shù)據(jù)包發(fā)送回到用戶應用程序處理
RETURN 不再根據(jù)當前鏈的其他規(guī)則來檢查數(shù)據(jù)包,而是直接返回,繼續(xù)被發(fā)送到其目的地址,或下一個鏈。
2、示例:
允許www
Iptables –A INPUT –p tcp –dport 80 –j ACCEPT
該規(guī)則被調價到filter表的INPUT鏈,允許目的端口為80的數(shù)據(jù)包通過
在內部接口上允許DHCP
Iptables –A INPUT –I eth0 –p tcp - - sport - - dport 67 ACCEPT
Iptables –A INPUT –I eth0 –p udp - - sport - - dport 67 ACCEPT
同時允許tcp和udp協(xié)議
3、保存和修改iptables
使用iptables-save 可將現(xiàn)行的iptables規(guī)則保存
恢復iptables
使用iptables-restore可從配置文檔恢復iptables表到現(xiàn)行iptables表。
posted on 2011-06-30 18:59
David1228 閱讀(392)
評論(0) 編輯 收藏 所屬分類:
Linux