歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> iptables簡單教程

iptables簡單教程

日期:2017/3/1 16:30:08   编辑:關於Linux
iptables簡單教程 【概述】 netfilter/iptables是linux系統自帶的免費防火牆,能夠實現防火牆、NAT(網絡地址翻譯)和數據包分割功能 netfilter工作在內核層,iptables工作在用戶層,可以方便用戶定義規則集的表結構。 【iptables選項介紹】 netfilter的用戶控制命令是iptables,通過iptables建立適當的規則添加到內核中實現信息數據包的過濾。 iptables的一般語法如下: iptalbes [-t table] command [match] [target] 一條iptables規則包含4個基本元素, 1)表(table) [-t table] 選項允許使用標准表之外的任何表。有三種可以使用的表選項:filter、nat和mangle。 2)命令(command) command部分是iptables命令的最重要部分,它告訴iptables命令要做什麼,例如,插入規則、將規則添加到 鏈的末尾或刪除規則。主要有如表1所示的命令。 表1 iptables常用命令 -A或--append 該命令將一條規則附加到鏈的末尾 -D或--delete 通過用-D指定要匹配的規則或者指定規則在鏈中的位置編號,該命令從鏈中刪除該規則 -P或--policy 該命令設置鏈的默認目標,即策略。所有與鏈中任何規則都不匹配的信息包都將被強制使 用此鏈的策略 -N或--new-chain 用命令中所指定的名稱創建一個新鏈 -F或--flush 如果指定鏈名,該命令刪除鏈中的所有規則,如果未指定鏈名,該命令刪除所有鏈中的所 有規則。此參數用於快速清除 -L或--list 列出指定鏈中的所有規則 -R或--replace 替換指定鏈中一條匹配的規則 -X或--delete-chain 刪除指定用戶的的定義鏈,若沒有指定鏈,則刪除所有的用戶鏈 -C或--check 檢查數據包是否與指定鏈的規則相匹配 -Z或--zero 將指定鏈中所有規則的byte計數器清零 3)匹配(match) iptables命令的可選match部分指定信息包與規則匹配所應具有的特征(如源和目的地地址、協議等)。匹配分為 兩大類:通用匹配和特定於協議的匹配。這裡,將研究可用於采用任何協議的信息包的通用匹配。下面是一些重 要的且常用的通用匹配及其說明,如表2所示。 表2 通用匹配說明 通用匹配 說 明 -p或--protocol 該通用協議匹配用於檢查某些特定協議。協議示例有TCP、UDP、ICMP、用逗號分隔的任何這三 種協議的組合列表以及ALL(用於所有協議)ALL是默認匹配。可以使用!符號表示不與該項匹配 -s 或 --source 該源匹配用於根據信息包的源IP地址來與它們匹配。該匹配還允許對某一范圍內的IP地址進行匹 配,可以使用!符號,表示不與該項匹配。默認源匹配與所有IP地址匹配 -d 或 --destination 該目的地匹配用於根據信息包的目的地IP地址來與它們匹配。該匹配還允許對某一范圍內IP 地址進行匹配,可以使用!符號表示不與該項匹配 --sport 指定匹配規則的源端口或端口范圍 --dport 指定匹配規則的目的端口或端口范圍 -i 匹配單獨的網絡接口或某種類型的接口設置過濾規則 4)目標(target) 前面已經講過,目標是由規則指定的操作,對與那些規則匹配的信息包執行這些操作。除了允許用戶定義的目標之 外,還有許多可用的目標選項。下面是常用的一些目標及其示例和說明,如表3所示。 表3 目標項說明 目 標 項 說 明 ACCEPT 當信息包與具有ACCEPT目標的規則完全匹配時,會被接受(允許它前往目的地) DROP 當信息包與具有DROP目標的規則完全匹配時,會阻塞該信息包,並且不對它做進一步處理。該目標被 指定為-j DROP REJECT 該目標的工作方式與DROP目標相同,但它比DROP好。和DROP不同,REJECT不會在服務器和客戶機上 留下死套接字。另外,REJECT將錯誤消息發回給信息包的發送方。該目標被指定為-j REJECT RETURN 在規則中設置的RETURN目標讓與該規則匹配的信息包停止遍歷包含該規則的鏈。如果鏈是如INPUT之 類的主鏈,則使用該鏈的默認策略處理信息包。它被指定為-jump RETURN LOG 表示將包的有關信息記錄入日志 TOS 表示改寫數據包的TOS值 【iptables使用實例】 實際使用規則如下: 只允許某個ip訪問某個端口 #iptables -A INPUT -p tcp -s 61.145.251.36 --dport 16322 -j ACCEPT -A 在INPUT鏈中增加, -p 表示協議 -s 表示源地址 --dport 表示目的端口 -j 目標操作 其他的ip都拒絕 #iptables -A INPUT -p tcp --dport 16322 -j REJECT 刪除一條規則(刪除INPUT鏈中第一條規則,具體可以man iptables) #iptalbes -D INPUT 1 插入一條規則(插入到INPUT鏈中第二條規則) #iptables -I INPUT 2 -p tcp -s 61.145.251.63 --dport 16322 -j ACCEPT 限制某個網口的訪問(eth0 的端口訪問插入一條規則) #iptables -I INPUT 3 -p tcp -s 61.145.251.66 -i eth0 --dport 16322 -j ACCEPT #iptables -I INPUT 4 -p udp -s 61.145.251.66 -i eth0 --dport 16322 -j ACCEPT 限制某個網段的訪問 #iptables -I INPUT 5 -p tcp -s 192.168.0.0/16 -i eth1 --dport 3306 -j REJECT 對於iptables的一些其他選項可以查看使用手冊:man iptables 和iptables並行的還有iptables-save和iptables-restore命令,分別用來保存和恢復規則 保存規則到iptables-save.txt #iptables-save > iptables-save.txt 從保存文件中恢復 #iptables-restore < iptables-save.txt 對於已經含有規則的表格,可以先iptables-save,然後做修改,最後再iptables-restore。
Copyright © Linux教程網 All Rights Reserved