Iptables的基本語法規(guī)則
iptables的基本語法規(guī)則參考:
1、查看現(xiàn)有的iptables規(guī)則:
- sudo iptables -L
2、允許已建立的連接接收數(shù)據(jù):
- sudo ptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
3、開放常見端口22
- sudo iptables -A INPUT -p tcp -i eth0 --dport ssh(22) -j ACCEPT
- sudo iptables -A INPUT -p tcp -i eth0 --dport telnet(23) -j ACCEPT
- sudo iptables -A INPUT -p tcp -i eth0 --dport www(80) -j ACCEPT
4、對每一個報文,iptables依次測試每一條規(guī)則,看報文于規(guī)則是否相匹配。一旦找到一條匹配的規(guī)則, 就根據(jù)此規(guī)則中指定的行動,對報文進(jìn)行處置,而對后面的規(guī)則不再進(jìn)行測試。因此,如果我們在規(guī)則表的 末尾添加一條規(guī)則,讓iptables丟棄所有報
- sudo iptables -A INPUT -j DROP
5、仍有一個問題,就是環(huán)回接口也被阻斷了。剛才添加DROP規(guī)則的時候其實(shí)就可以使用-i eth0來解決這一
問題。然而我們也可以為環(huán)回接口添加一條新規(guī)則來解決這個問題。但是不能將新規(guī)則追加到末尾,因為前
一條規(guī)則已經(jīng)把所有報文都丟棄了,而應(yīng)該把它插到DROP規(guī)則前面,即規(guī)則表中第五行的位置(即DROP之前)
- iptables -I INPUT 5 -i lo -j ACCEPT
6、sudo iptables -L -v查看詳細(xì)詳細(xì)
7、iptables-save > /etc/iptables.up.rules(保存當(dāng)前iptables的設(shè)置)
可以vi編輯 /etc/iptables.up.rules
編輯后 iptables-restore < /etc/iptables.up.rules
8、這樣設(shè)置的iptables每次開機(jī)后就失效了,開機(jī)自動配置
- a. iptables-save > /etc/iptables.up.rules
- b. vi /etc/network/interfaces(最后-s 手動選擇截圖區(qū)域或者窗口兩行為我們自己所加的)
- auto eth0
- iface eth0 inet dhcp
- pre-up iptables-restore < /etc/iptables.up.rules
- post-down iptables-restore < /etc/iptables.down.rules
9、清楚iptables規(guī)則
- sudo iptables -F
10、丟棄所有來自127.0.0.1的ICMP包(eg:ping)
- sudo iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
11、有時一個包太大,不可能適合所有線路。這樣的話,包會被分成片,然后當(dāng)作多個包發(fā)送。最終重組這些分片來重建整個包
- sudo iptables -A OUTPUT -f -d 192.168.1.1 -j DROP(丟棄任何發(fā)往192.168.1.1的分片)
12、有時只允許單向的TCP連接會很有用。例如,你可能會允許連接到外部WWW服務(wù)器,但不會允許來自那個服務(wù)器的連接。 最簡單的舉動可能是阻止來自那個服務(wù)器的包,可惜,TCP連接需要包雙向傳送(才能正常工作)。
解決辦法是,只阻擋那些用來請求連接的包。這些包稱為SYN包(OK,從技術(shù)上說,它們的SYN標(biāo)志被設(shè)置,而沒有設(shè)置RST和ACK標(biāo)志,不過我們簡單的稱為SYN包)。通過只阻止這種包,我們就可以阻止來自那些地方的連接企圖。'--syn'標(biāo)志是這樣用的:只對指定了TCP協(xié)議的規(guī)則有效。例如,指定來自192.168.1.1的連接請求。
- sudo iptables -A INPUT -p TCP -s 192.168.1.1 --syn
【編輯推薦】