iptables 初步入門
iptables
防火墻簡述
新的防火墻子系統/包過濾引擎 Nftables 將在 Linux 3.13 中替代有十多年歷史的iptables。iptables/netfilter在2001年加入到2.4內核中。誕生于2008年的 NFTables 設計替代 iptables, 它提供了一個更簡單的kernel ABI,減少重復代碼,改進錯誤報告,更有效的支持過濾規則。除了iptables,NFTables還將替代ip6tables、arptables和 ebtables。Linux內核的第一代包過濾機制是ipfwadm(1.2.1內核,1995年),之后是ipchains(1999 年),Netfilter,Nftables是第四代。
iptables基礎
Netfilter/IPTables是繼2.0.x的IPfwadm、2.2.x的IPchains之后,新一代的Linux防火墻機制。 Netfilter采用模塊化設計,具有良好的可擴充性。其重要工具模塊IPTables連接到Netfilter的架構中,并允許使用者對數據報進行過濾、地址轉換、處理等操作。
Netfilter提供了一個框架,將對網絡代碼的直接干涉降到最低,并允許用規定的接口將其他包處理代碼以模塊的形式添加到內核中,具有極強的靈活性。
Netfilter/IPTables的體系結構可以分為三個大部分:
- Netfilter的HOOK機制
Netfilter的通用框架不依賴于具體的協議,而是為每種網絡協議定義一套HOOK函數。這些HOOK函數在數據報經過協議棧的幾個關鍵點時被調用,在這幾個點中,協議棧將數據報及HOOK函數標號作為參數,傳遞給Netfilter框架。
對于它在網絡堆棧中增加的這些HOOK,內核的任何模塊可以對每種協議的一個或多個HOOK進行注冊,實現掛接。這樣當某個數據報被傳遞給 Netfilter框架時,內核能檢測到是否有任何模塊對該協議和HOOK函數進行了注冊。若注冊了,則調用該模塊的注冊時使用的回調函數,這樣這些模塊就有機會檢查、修改、丟棄該數據報及指示Netfilter將該數據報傳入用戶空間的隊列。
這樣,HOOK提供了一種方便的機制:在數據報通過Linux內核的不同位置上截獲和操作處理數據報。 - IPTables基礎模塊
IPTables基礎模塊實現了三個表來篩選各種數據報,具體地講,Linux2.4內核提供的這三種數據報的處理功能是相互間獨立的模塊,都基于Netfilter的HOOK函數和各種表、鏈實現。這三個表包括:filter表,nat表以及mangle表。 - 具體功能模塊
數據報過濾模塊
連接跟蹤模塊(Conntrack)
網絡地址轉換模塊(NAT)
數據報修改模塊(mangle)
** 其它高級功能模塊
</ul>
iptables 的啟動停止
ubuntu中啟動及關閉iptables,在ubuntu中由于不存在 /etc/init.d/iptales文件,所以無法使用service等命令來啟動iptables,需要用modprobe命令。
啟動iptables
modprobe ip_tables iptable-restore < /etc/iptables.rule
關閉iptables
iptables -F iptables -X iptables -Z iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT modprobe -r ip_tables
命令基本格式
iptables 語法分成三部分:
命令本身 條件準則 處置方式 iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- 列出當前iptables的策略和規則
iptables -L # --list 列出當前所有table的配置規則 iptables -L -n # -n: 用數字形式顯示 iptables -L -v # -v: 打印詳細的信息 iptables -F # 清除規則 iptables -X #
實例:限定指定IP段訪問服務器的80端口
- 命令操作:
iptables -A INPUT -s 118.144.38.90/32 -p tcp -m multiport --dports 80 -j ACCEPT iptables -A INPUT -s -p tcp -m multiport --dports 80 -j DROP
- 查看狀態 iptables -L
Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 118.144.38.90 anywhere multiport dports http DROP tcp -- anywhere anywhere multiport dports http Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
- 查看狀態 iptables-save
# Generated by iptables-save v1.4.12 on Tue Apr 22 14:55:51 2014 *filter :INPUT ACCEPT [1689:106559] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [1608:154769] -A INPUT -s 118.144.38.90/32 -p tcp -m multiport --dports 80 -j ACCEPT -A INPUT -p tcp -m multiport --dports 80 -j DROP COMMIT # Completed on Tue Apr 22 14:55:51 2014 # Generated by iptables-save v1.4.12 on Tue Apr 22 14:55:51 2014 *raw :PREROUTING ACCEPT [2498:166654] :OUTPUT ACCEPT [2298:219551] COMMIT # Completed on Tue Apr 22 14:55:51 2014
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!