一.查看現有防火牆策略
# iptables有filter、nat、mangle、raw四張表 # filter表下默認有PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING五條鏈 # 默認查看filter表、所有鏈的策略 iptables -L -n
#--line-number參數會顯示策略編號,該編號在刪除策略時使用 iptables -L -n --line-number # 查看指定表的所有策略 iptables -t <table_name> -L -n # 查看指定鏈的策略 iptables -L <chain_name> -n
二.增加防火牆策略(以22端口為例)
iptables -A INPUT -s 192.168.220.0/24 -p TCP --dport 22 -j ACCEPT #增加網段 iptables -A INPUT -s 192.168.1.1 -p TCP --dport 22 -j ACCEPT #增加單個IP iptables -A INPUT -p TCP --dport 22 -j DROP
說明:
1. -A代理在末尾追加,如果要在開頭插入使用-I
2.多IP使用逗號(半角)相隔,多端口添加-m multiport然后端口使用逗號(半角)相隔
iptables -A INPUT -s 127.0.0.1,1192.168.1.1 -p tcp -m multiport --dport 22,23 -j ACCEPT iptables -A INPUT -p tcp -m multiport --dport 22,23 -m comment --comment "deny all 22,23" -j DROP
3.對於連續IP合用--src-range
iptables -I INPUT -m iprange --src-range 192.168.220.128-192.168.220.139 -p tcp -m multiport --dport 22,23 -m comment --comment "subnet:22,23" -j ACCEPT
注意這個語句的結果中source會變成0.0.0.0/0,但不用擔心他會對所有IP放行,后邊有source IP range的描述那是起作用的IP:
4. 如果原來沒有策略或者不沖突的情況下,-A和-I的結果是一樣的;但是在“遠程添加防火牆”和“限制22端口”兩個條件下,-I可能會讓你陷入致命的麻煩:
iptables -I INPUT -p TCP --dport 22 -j DROP iptables -I INPUT -s 192.168.1.1 -p TCP --dport 22 -j ACCEPT iptables -I INPUT -s 192.168.220.0/24 -p TCP --dport 22 -j ACCEPT
看起來這三句和-A那三句結果是一樣的,但防火牆策略是即時生效的也就是在“iptables -I INPUT -p TCP --dport 22 -j DROP”執行后,你的ssh就馬上會斷開了后邊兩句根本不會執行
5.-A等參數后接的是鏈名,比如前面我們都是INPUT鏈;類似的,如果我們要操作自定義的規則鏈,只要將INPUT改成自己的鏈名即可。規則鏈創建刪除命令如下:
# 創建新規則鏈 iptables -N <chain_name> # 刪除規則鏈 iptables -X <chain_name>
三.修改防火牆策略
iptables -R INPUT 2 -s 192.168.1.1 -p TCP --dport 22 -j DROP #2是--line-nember查到的,所有參數都要寫-R不是在原策略基礎上修改而就是直接取化,所以這里的-s雖然原來就是192.168.1.1但還是要寫,不然結果就是DROP掉所有ip對22端口的連接請求
四.刪除防火牆策略
iptables -D INPUT 2 #2是--line-number查到的,此句會刪除第2條策略 iptables -F #此句會清空所有防火牆規則,慎用
五.保存防火牆規則
上邊對防火牆的修改只是臨時的,並沒有存入配置文件(/etc/sysconfig/iptables),防火牆服務重啟之后策略會退回到之前保存的策略狀態;要防火牆配置永久生效要進行保存
service iptbales save