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