Linux環境下iptables防火牆基本用法演示
當啟用防火牆後,iptables -vnL顯示出所有規則,但我們不使用預設規則,清空規則,自己定義
1、iptable -t filter -A INPUT -s 192.168.239.70 -j DROP(末尾新增),設定源地址是192.168.239.70發出的請求,全丟棄,即不迴應
之前是通的,但設定完防火牆規則後的DROP(丟棄)就卡在這裡,游標不停閃爍
2、iptables -I INPUT -s 192.168.239.70 -j REJECT,插入規則,源地址為192.168.239.70的主機發出的請求全部拒絕,這裡直接返回目標埠不可到達
iptables -I INPUT 2 -s 192.168.239.70 -j REJECT,插入第二條
3、iptables -D INPUT 2,刪除INPUT中的第二條規則
4、iptables -R INPUT 2 -s 192.168.1.1 -j REJECT,替換規則中第2條源地址ip由192.168.239.70更改為192.168.1.1
5、iptables -A INPUT -s 192.168.239.70,192.168.239.71 -j REJECT,一次加入兩條ip
6、iptables -A INPUT -s ! 192.168.239.70 -j REJECT,除了192.168.239.70的ip,全部拒絕
生產中為了避免自己設定規則時候不小心把自己踢出,應做防火牆備份,再用at執行計劃,設定5分鐘後執行,等規則設定完成後再取消計劃,避免產生不必要的麻煩
7、iptables -P INPUT DROP,更改策略中只要不匹配就DROP,預設為ACCEPT(只支援ACCEPT和DROP,不支援REJECT),最好不要進行更改
8、iptables -A OUTPUT -d 192.168.239.70 -j DROP,拒絕本機流出報文訪問目標地址192.168.239.70
此時192.168.239.70也不會ping通本機,因為報文的傳導是有去有回的
iptables -A INPUT -s 192.168.239.0/24 -j ACCEPT
這裡記錄了防火牆的規則,如果另一臺裝置也需要同樣的防火牆規則,可以將其生存檔案,並
while read line; do done iptables $line < iptables.log
iptables -A INPUT -s 192.168.239.70 -p icmp -j REJECT
由於禁止的是icmp協議,ssh基於的是tcp協議,但ssh還是可以
iptables -A INPUT -i eth0 -j ACCEPT,從eth0網絡卡流入的資料報文全部允許,適用於多種網絡卡情況
開啟我的雲伺服器,lastb發現有幾個ip嘗試登陸我的雲伺服器,將這些ip全部加入黑名單
iptables -A INPUT -s 103.207.37.253,118.123.244.228,119.6.103.44,5.188.10.156,103.207.37.253,103.207.38.226,14.226.255.211,78.198.69.64 -j REJECT
--tcp-flags SYN表示第一次握手,等於--syn
輸入指令iptables -A INPUT -p tcp --syn -j REJECT,檢視
之前已經連線到192.168.239.60的主機可以繼續使用,而其他主機連線被拒絕
iptables -A INPUT -p icmp --icmp-type 8 -j REJECT,拒絕進來請求報文,測試結果為
以SAMBA服務舉例,連線SAMBA服務需要開放139、445埠,未開放前
輸入指令iptables -A INPUT -p tcp --dport 139 -j ACCEPT和iptables -A INPUT -p tcp --dport 445 -j ACCEPT之後,已經可以連線
iptables -N WEBSRV FILESRV,自定義鏈改名由WEBSRV變為FILESRV
iptables -A FILESRV -p tcp --dport 139 -j ACCEPT,向FILESRV新增允許139埠通過的規則
iptables -A INPUT -s 192.168.239.71 -j FILESRV
自定義鏈類似於shell中的函式呼叫理念,提前預設好,等使用時候直接用即可
iptables -I INPUT -p tcp -m multiport --dports 80,443,3306 -j ACCEPT
如果命令是iptables -I INPUT -p tcp -m multiport --dports 80:88,443,3306 -j ACCEPT,新增的埠是80,81,82,83,84,85,86,87,88,443,3306
iptables -A INPUT -m iprange --src-range 192.168.239.60-192.168.239.69 -j ACCEPT
本機192.168.239.60無法ping通192.168.239.70,此時新增規則
iptables -A INPUT -s 192.168.1.1 [!] -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
iptable -A OUTPUT -m string --string "baidu" --algo bm -j REJECT
檢視iptables規則,此時可以ping通www.baidu.com
設定string擴充套件規則,之後再次ping www.baidu.com失敗
iptables -A OUTPUT -m time --timestart 1:00 --timestop 9:00 --weekdays 2,4,6 -j REJECT
設定UTC時間1:00-9:00(北京時間9:00-18:00),週二四六不能流出報文
控制單個ip最多可以發起多少個連線數,防止******(cc***,挑戰黑洞)
iptables -A INPUT -m connlimit --connlimit-above 100 -j REJECT
iptables -I INPUT 2 -m limit --limit 6/minute --limit-burst 10 -j ACCEPT
一分鐘前十次ping 本機不理會,超過十個後拒絕,後面ping中均勻分佈每分鐘ping通6次
NEW:新發出請求;連線追蹤資訊庫中不存在此連線的相關資訊條目,因此,將其識別為第一次發出的請求,即新連線,但不影響正在連線的
ESTABLISHED:NEW狀態之後,連線追蹤資訊庫中為其建立的條目失效之前期間內所進行的通訊狀態,即正在連線的
RELATED:新發起的但與已有連線相關聯的連線,如:ftp協議中的資料連線與命令連線之間的關係
iptables -A INPUT -s 192.168.239.60 -j LOG --log-prefix "iptables:" ,--log-prefix,字首的意思
和state相結合,可以iptables -I INPUT 3 -s 192.168.239.0/16 -m state --state NEW -j LOG --lgo-prefix "自定義字元",只要192.168.239.0網段的新主機訪問本主機,日誌都會記錄下來
CentOS6的儲存service ipatables save,系統會自動儲存到 /etc/sysconfig/iptables
CentOS7的儲存,iptables-save > /DIR/FILE,讀取時候iptables-restore < /DIR/FILE,
因此需要在/etc/rc.d/rc.local中寫入iptables-restore < /DIR/FILE(記得對rc.local加執行許可權)
iptables -t nat -A POSTROUTING -s 192.168.31.0/24 -j SNAT --to-source 172.18.0.123