1、添加一條禁用連接埠命令,iptables -A INPUT -p tcp --dport 8702 -j DROP ;
2、刪除所有已經添加的規則:iptables -F
3、網卡重啟。service network restart;
4、service iptables save,儲存對iptables的設定為永久有效,即使已經 service network restart.
5、刪除一條iptables規則,iptables -D INPUT -p tcp --dport 8702 -j DROP。
附:
什麼是Iptables?
iptables 是建立在 netfilter
架構基礎上的一個包過濾管理工具,最主要的作用是用來做防火牆或透明代理。Iptables 從 ipchains
發展而來,它的功能更為強大。Iptables 提供以下三種功能:包過濾、NAT(網路位址轉譯)和通用的 pre-route packet
mangling。包過濾:用來過濾包,但是不修改包的內容。Iptables 在包過濾方面相對於 ipchians
的主要優點是速度更快,使用更方便。NAT:NAT 可以分為源地址 NAT 和目的地址 NAT。
Iptables
可以追加、插入或刪除包過濾規則。實際上真正執行這些過慮規則的是 netfilter 及其相關模組(如 iptables 模組和 nat
模組)。Netfilter 是 Linux 核心中一個通用架構,它提供了一系列的 “表”(tables),每個表由若干
“鏈”(chains)組成,而每條鏈中可以有一條或數條 “規則”(rule)組成。
系統預設的表為
“filter”,該表中包含了 INPUT、FORWARD 和 OUTPUT 3 個鏈。
每一條鏈中可以有一條或數條規則,每一條
規則都是這樣定義的:如果資料包頭符合這樣的條件,就這樣處理這個資料包。當一個資料包到達一個鏈時,系統就會從第一條規則開始檢查,看是否符合該規則所
定義的條件:
如果滿足,系統將根據該條規則所定義的方法處理該資料包;如果不滿足則繼續檢查下一條規則。最後,如果該資料包不符合該鏈中任一條規則的話,系統就會根據
該鏈預先定義的策略來處理該資料包。
? table,chain,rule
iptables 可以操縱3
個表:filter 表,nat 表,mangle 表。
NAT 和一般的 mangle 用 -t
參數指定要操作哪個表。filter 是預設的表,如果沒有 -t 參數,就預設對 filter 表操作。
Rule
規則:過濾規則,連接埠轉寄規則等,例如:禁止任何機器 ping 我們的伺服器,可以在伺服器上設定一條規則:
iptables -A
INPUT -s ! 127.0.0.1 -p icmp -j DROP
從 –s 開始即是一條規則,-j
前面是規則的條件,-j 開始是規則的行為(目的)。整條命令解釋為,在filter 表中的 INPUT 規則鏈中插入一條規則,所有源地址不為
127.0.0.1 的 icmp 包都被拋棄。
Chain 規則鏈:由一系列規則群組成,每個包順序經過 chain
中的每一條規則。chain 又分為系統 chain和使用者建立的 chain。下面先敘述系統 chain。
filter 表的系統
chain: INPUT,FORWAD,OUTPUT
nat 表的系統 chain:
PREROUTING,POSTROUTING,OUTPUT
mangle 表的系統 chain:
PREROUTING,OUTPUT
每條系統 chain
在確定的位置被檢查。比如在包過濾中,所有的目的地址為本地的包,則會進入INPUT 規則鏈,而從本地出去的包會進入 OUTPUT 規則鏈。
所
有的 table 和 chain 開機時都為空白,設定 iptables 的方法就是在合適的 table 和系統 chain 中添相應的規則。
--------------------------------------------------------------
IPTABLES 文法:
表: iptables從其使用的三個表(filter、nat、mangle)而得名,
對包過濾只使用 filter 表, filter還是預設表,無需顯示說明.
操作命令: 即添加、刪除、更新等。
鏈:
對於包過濾可以針對filter表中的INPUT、OUTPUT、FORWARD鏈,也可以操作使用者自訂的鏈。
規則匹配器:可以指定
各種規則匹配,如IP地址、連接埠、包類型等。
目標動作:當規則匹配一個包時,真正要執行的任務,常用的有:
ACCEPT
允許包通過
DROP 丟棄包
一些擴充的目標還有:
REJECT
拒絕包,丟棄包同時給寄件者發送沒有接受的通知
LOG 包有關資訊記錄到日誌
TOS 改寫包的TOS值
為
使FORWARD規則能夠生效,可使用下面2種方法的某種:
[root@rhlinux root]# vi
/proc/sys/net/ipv4/ip_forward
[root@rhlinux root]# echo "1" >
/proc/sys/net/ipv4/ip_forward
[root@rhlinux root]# vi
/etc/sysconfig/network
[root@rhlinux root]# echo "FORWARD_IPV4=true"
> /etc/sysconfig/network
--------------------------------------------------------
iptables文法可以簡化為下面的形式:
iptables [-t table] CMD [chain]
[rule-matcher] [-j target]
--------------------------------------------------------
常用操作命令:
-A 或 -append 在所選鏈尾加入一條或多條規則
-D 或
-delete 在所選鏈尾部刪除一條或者多條規則
-R 或 -replace 在所選鏈中替換一條匹配規則
-I 或
-insert 以給出的規則號在所選鏈中插入一條或者多條規則. 如果規則號為1,即在鏈頭部.
-L 或 -list
列出指定鏈中的所有規則,如果沒有指定鏈,將列出鏈中的所有規則.
-F 或 -flush 清除指定鏈和表中的所由規則,
假如不指定鏈,那麼所有鏈都將被清空.
-N 或 -new-chain 以指定名建立一條新的使用者自訂鏈,不能與已有鏈名相同.
-X
或 -delete-chain 刪除指定的使用者定義簾,必需保證鏈中的規則都不在使用時才能刪除,若沒有指定鏈,則刪除所有使用者鏈.
-P
或 -policy
為永久簾指定預設規則(內建鏈策略),使用者定義簾沒有預設規則,預設規則也使規則鏈中的最後一條規則,用-L顯示時它在第一行顯示.
-C
或 -check 檢查給定的包是否與指定鏈的規則相匹配.
-Z 或 -zero
將指定簾中所由的規則包位元組(BYTE)計數器清零.
-h 顯示協助資訊.
-------------------------------------------------------------
常用匹配規則器:
-p , [!] protocol 指出要匹配的協議,可以是tcp, udp, icmp,
all, 首碼!為邏輯非,表示除該協議外的所有協議.
-s [!] address[/mask] 指定源地址或者位址範圍.
-sport
[!] port[:port] 指定源連接埠號碼或範圍,可以用連接埠號碼也可以用/ETC/SERVICES檔案中的名子.
-d [!]
address[/mask] 指定目的地址或者位址範圍.
-dport [!] port[:port]
指定目的連接埠號碼或範圍,可以用連接埠號碼也可以用/ETC/SERVICES檔案中的名子.
-icmp-type [!]
typename 指定匹配規則的ICMP資訊類型(可以使用 iptables -p icmp -h 查看有效ICMP類型名)
-i
[!] interface name[+]
匹配單獨或某種類型的介面,此參數忽略時,預設符合所有介面,介面可以使用"!"來匹配捕食指定介面來的包.參數interface是介面名,如
eth0, eht1,
ppp0等,指定一個目前不存在的介面是完全合法的,規則直到介面工作時才起作用,折中指定對於PPP等類似串連是非常有用的."+"表示匹配所有此類型
介面.該選項只針對於INPUT,FORWARD和PREROUTING鏈是合法的.
-o [!] interface
name[+] 匹配規則的對外網路介面,該選項只針對於OUTPUT,FORWARD,POSTROUTING鏈是合法的.
[!]
--syn 僅僅匹配設定了SYN位, 清除了ACK, FIN位的TCP包.
這些包表示請求初始化的TCP串連.阻止從介面來的這樣的包將會阻止外來的TCP串連請求.但輸出的TCP串連請求將不受影響.這個參數僅僅當協議類型設
置為了TCP才能使用. 此參數可以使用"!"標誌匹配已存在的返回包,一般用於限制網路流量,即只允許已有的,向外發送的串連所返回的包.
----------------------------------------------------------
如何制定永久規則集:
/etc/sysconfig/iptables 檔案是 iptables
守護進程調用的預設規則集檔案.
可以使用以下命令儲存執行過的IPTABLES命令:
/sbin/iptables-save
> /etc/sysconfig/iptables
要恢複原來的規則庫,可以使用:
/sbin/iptables-restore
< /etc/sysconfig/iptables
iptables命令和route等命令一樣,重啟之後就會恢複,所以:
[root@rhlinux root]# service iptables save
將當前規則儲存到
/etc/sysconfig/iptables: [ 確定 ]
令一種方法是 /etc/rc.d/init.d/iptables
是IPTABLES的啟動指令碼,所以:
[root@rhlinux root]#
/etc/rc.d/init.d/iptables save
將當前規則儲存到 /etc/sysconfig/iptables: [
確定 ]
以上幾種方法只使用某種即可.
若要自訂指令碼,可直接使用iptables命令編寫一個規
則指令碼,並在啟動時執行:
例如若規則使用指令檔名/etc/fw/rule,
則可以在/etc/rc.d/rc.local中加入以下代碼:
if [-x /etc/fw/rule]; then
/etc/fw/sule; fi;
這樣每次啟動都執行該規則指令碼,如果用這種方法,建議NTSYSV中停止IPTABLES.
----------------------------------------------------------
執行個體:
鏈基本操作:
[root@rh34 root]# iptables -L -n
(列
出表/鏈中的所有規則,包過濾防火牆預設使用的是filter表,因此使用此命令將列出filter表中所有內容,-n參數可加快顯示速度,也可不加-n
參數。)
[root@rh34 root]# iptables -F
(清除預設表filter中所有規則鏈中的規則)
[root@rh34
root]# iptables -X
(清除預設表filter中使用者自訂鏈中的規則)
[root@rh34
root]# iptables -Z
(將指定鏈規則中的所有包位元組計數器清零)
------------------------------------------------------------
設定鏈的預設策略,預設允許所有,或者丟棄所有:
[root@rh34 root]# iptables -P
INPUT ACCEPT
[root@rh34 root]# iptables -P OUTPUT ACCEPT
[root@rh34
root]# iptables -P FORWARD ACCEPT
(以上我們在不同方向設定預設允許策略,若丟棄則應是DROP,嚴格意
義上防火牆應該是DROP然後再允許特定)
---------------------------------------------------------------
向鏈中添加規則,下面的例子是開放指定網路介面(信任介面時比較實用):
[root@rh34 root]#
iptables -A INPUT -i eth1 -j ACCEPT
[root@rh34 root]# iptables -A
OUTPUT -o eth1 -j ACCEPT
[root@rh34 root]# iptables -A FORWARD -i
eth1 -j ACCEPT
[root@rh34 root]# iptables -A FORWARD -o eth1 -j
ACCEPT
--------------------------------------------------------------
使用使用者自訂鏈:
[root@rh34 root]# iptables -N brus
(建立一個用
戶自訂名叫brus的鏈)
[root@rh34 root]# iptables -A brus -s 0/0 -d 0/0
-p icmp -j DROP
(在此鏈中設定了一條規則)
[root@rh34 root]# iptables -A
INPUT -s 0/0 -d 0/0 -j brus
(向預設的INPUT鏈添加一條規則,使所有包都由brus自訂鏈處理)
----------------------------------------------------------------
基本匹配規則執行個體:
匹配協議:
iptables -A INPUT -p tcp
(指
定匹配協議為TCP)
iptables -A INPUT -p ! tcp
(指定匹配TCP以外的協議)
匹
配地址:
iptables -A INPUT -s 192.168.1.1
(匹配主機)