天天看點

iptables簡單應用

可以修改/etc/rc.d/boot.local讓規則重新開機後也能生效,如:

/sbin/iptables -F

/sbin/iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT

/sbin/iptables -A INPUT -i eth0 -p tcp -j DROP

/sbin/iptables -A INPUT -i eth0 -p udp -j DROP

iptables是一個鍊的方式從前往後判斷,如果前面的規則成立就不會往後繼續,是以要注意順序,一般每行對應一條規則。

-A是Append意思,也就是追加

-I是Insert意思,也就是插入

-F表示清除(即删除)掉已有規則,也就是清空。

檢視已有的規則,執行指令:iptables -L -n

如(參數-L為list意思,-n表示以數字方式顯示IP和端口,不指定-n則顯示為名稱,如:http即80端口):

# iptables -L -n

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp spt:443

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp spt:80

DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           

DROP       udp  --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT)

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination 

從可以看到:iptables有三種規則鍊(Chain),即INPUT、OUTPUT和FORWARD。

INPUT 用于指定輸入規則,比如外部是可以通路本機的80端口

OUTPUT 用于指定輸出規則,比如本機是否可以通路外部的80端口

FORWARD 用于指定端口轉發規則,比如将8080端口的資料轉到到80端口

-I和-A需要指定鍊(Chain)名,其中-I的鍊名後還需要指定第幾條(行)規則。

可通過-D參數删除規則,有兩種删除方式,一是比對模式,二是指定第幾條(行)。

也可以通過-R參數修改已有規則,另外-L參數後也可以跟鍊(Chain)名,表示隻列出指定鍊的所有規則。

-j參數後跟的是動作,即滿足規則時執行的操作,可以為ACCEPT、DROP、REJECT和REDIRECT等。

在iptables的INPUT鍊的第一行插入一條規則(可通路其它機器的80端口):

iptables -I INPUT 1 -p tcp --sport 80 -j ACCEPT

在iptables的INPUT鍊尾追加一條規則(可通路其它機器的80端口):

iptables -A INPUT -p tcp --sport 80 -j ACCEPT

如果要讓其它機器可以通路本機的80端口,則為:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

插入前:

DROP       udp  --  0.0.0.0/0            0.0.0.0/0  

插入:

# iptables -I INPUT 1 -p tcp --sport 80 -j ACCEPT

插入後:

追加前:

DROP       udp  --  0.0.0.0/0            0.0.0.0/0 

追加:

追加後(ACCEPT将不能生效):

繼續閱讀