Linux環境下iptables防火牆基本用法演示

1、簡單添加shell

兩臺設備,防火牆關閉,防火牆規則很乾淨,網絡通暢。服務器

image.png

當啓用防火牆後,iptables -vnL顯示出全部規則,但咱們不使用默認規則,清空規則,本身定義網絡

image.png

一、iptable -t filter -A INPUT -s 192.168.239.70 -j DROP(末尾添加),設置源地址是192.168.239.70發出的請求,全丟棄,即不迴應併發

image.png

以前是通的,但設置完防火牆規則後的DROP(丟棄)就卡在這裏,光標不停閃爍ssh

image.png

二、iptables -I INPUT -s 192.168.239.70 -j REJECT,插入規則,源地址爲192.168.239.70的主機發出的請求所有拒絕,這裏直接返回目標端口不可到達tcp

iptables -I INPUT 2 -s 192.168.239.70 -j REJECT,插入第二條ide

image.png

三、iptables -D INPUT 2,刪除INPUT中的第二條規則函數

image.png

四、iptables -R INPUT 2 -s 192.168.1.1 -j REJECT,替換規則中第2條源地址ip由192.168.239.70更改成192.168.1.1測試

image.png

五、iptables -A INPUT -s 192.168.239.70,192.168.239.71 -j REJECT,一次加入兩條ipspa

image.png

六、iptables -A INPUT -s ! 192.168.239.70 -j REJECT,除了192.168.239.70的ip,所有拒絕

生產中爲了不本身設置規則時候不當心把本身踢出,應作防火牆備份,再用at執行計劃,設置5分鐘後執行,等規則設置完成後再取消計劃,避免產生沒必要要的麻煩

七、iptables -P INPUT DROP,更改策略中只要不匹配就DROP,默認爲ACCEPT(只支持ACCEPT和DROP,不支持REJECT),最好不要進行更改

image.png

八、iptables -A OUTPUT -d 192.168.239.70 -j DROP,拒絕本機流出報文訪問目標地址192.168.239.70

image.png

此時192.168.239.70也不會ping通本機,由於報文的傳導是有去有回的

image.png

抓包查看

image.png

九、取反

iptables -A INPUT ! -s 192.168.239.1 -j REJECT

除了192.168.239.1,能夠鏈接,其他所有拒絕

image.png

測試,connection refused

image.png

十、設置一個網段的主機均可以訪問

iptables -A INPUT -s 192.168.239.0/24 -j ACCEPT

image.png

2、查看命令

iptables -vnL

iptables -vnnnL

iptables -S

image.png

這裏記錄了防火牆的規則,若是另外一臺設備也須要一樣的防火牆規則,能夠將其生存文件,並

iptables -S > iptables.log

while read line; do done iptables $line < iptables.log

3、規則管理

一、iptables -F,清空防火牆規則

這是有防火牆列表的

image.png

輸入命令

image.png

二、iptables -Z

image.png

3、基本匹配

一、-p {tcp|udp|icmp}

iptables -A INPUT -s 192.168.239.70 -p icmp -j REJECT

image.png

結果

image.png

因爲禁止的是icmp協議,ssh基於的是tcp協議,但ssh仍是能夠

image.png

二、-i,數據報文流入接口

iptables -A INPUT -i eth0 -j ACCEPT,從eth0網卡流入的數據報文所有容許,適用於多種網卡狀況

4、擴展匹配-隱式匹配

一、設置多個ip同時加入規則

打開個人云服務器,lastb發現有幾個ip嘗試登錄個人雲服務器,將這些ip所有加入黑名單

image.png

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

image.png

二、tcp

--tcp-flags SYN表示第一次握手,等於--syn

--tcp-flags SYN,ACK表示第二次握手

--tcp-flasg ACK表示第三次握手

輸入指令iptables -A INPUT -p tcp --syn -j REJECT,查看

image.png

測試結果

以前已經鏈接到192.168.239.60的主機能夠繼續使用,而其餘主機鏈接被拒絕

image.png

三、icmp

--icmp-type 8 icmp請求報文

--icmp-type 0 icmp響應報文

iptables -A INPUT -p icmp --icmp-type 8 -j REJECT,拒絕進來請求報文,測試結果爲

image.png

這形成了我能ping通你,但你ping不通我

image.png

四、開放端口

以SAMBA服務舉例,鏈接SAMBA服務須要開放13九、445端口,未開放前

image.png

輸入指令iptables -A INPUT -p tcp --dport 139 -j ACCEPT和iptables -A INPUT -p tcp --dport 445 -j ACCEPT以後,已經能夠鏈接

image.png

5、自定義鏈

一、iptables -N WEBSRV ,起名

iptables -N WEBSRV FILESRV,自定義鏈更名由WEBSRV變爲FILESRV

iptables -A FILESRV -p tcp --dport 139 -j ACCEPT,向FILESRV添加容許139端口經過的規則

image.png

二、關聯

此時作測試,沒法登陸

image.png

iptables -A INPUT -s 192.168.239.71 -j FILESRV

image.png

測試結果

image.png

自定義鏈相似於shell中的函數調用理念,提早預設好,等使用時候直接用便可

6、顯示擴展

一、multiport 擴展端口,解決端口不連續的問題

iptables -I INPUT -p tcp -m multiport --dports 80,443,3306 -j ACCEPT

image.png

若是命令是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

二、定義ip範圍

iptables -A INPUT -m iprange --src-range 192.168.239.60-192.168.239.69 -j ACCEPT

image.png

本機192.168.239.60沒法ping通192.168.239.70,此時添加規則

image.png

能夠ping通

image.png

三、MAC擴展

iptables -A INPUT -s 192.168.1.1 [!] -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT

四、string擴展

對報文中的應用層數據作字符串模式匹配檢測

iptable -A OUTPUT -m string --string  "baidu" --algo bm -j REJECT

查看iptables規則,此時能夠ping通www.baidu.com

image.png

設置string擴展規則,以後再次ping www.baidu.com失敗

image.png

五、time擴展

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),週二四六不能流出報文

image.png

六、connlimit擴展,併發鏈接數擴展

控制單個ip最多能夠發起多少個鏈接數,防止******(cc***,挑戰黑洞)

iptables -A INPUT -m connlimit --connlimit-above 100 -j REJECT

拒絕併發鏈接數大於100的訪問

image.png

測試

image.png

當併發數大於100時拒絕

image.png

七、limit擴展

基於收發報文的速率作匹配

iptables -I INPUT 2 -m limit --limit 6/minute --limit-burst 10 -j ACCEPT

iptables -A INPUT -j REJECT

一分鐘前十次ping 本機不理會,超過十個後拒絕,後面ping中均勻分佈每分鐘ping通6次

image.png

測試結果

image.png

八、state擴展

NEW:新發出請求;鏈接追蹤信息庫中不存在此鏈接的相關信息條目,所以,將其識別爲第一次發出的請求,即新鏈接,但不影響正在鏈接的

ESTABLISHED:NEW狀態以後,鏈接追蹤信息庫中爲其創建的條目失效以前期間內所進行的通訊狀態,即正在鏈接的

RELATED:新發起的但與已有鏈接相關聯的鏈接,如:ftp協議中的數據鏈接與命令鏈接之間的關係

INVALID:無效的鏈接,如flag標記不正確

UNTRACKED:未進行追蹤的鏈接,如raw表中關閉追蹤

7、target

LOG:

iptables -A INPUT -s 192.168.239.60 -j LOG --log-prefix "iptables:" ,--log-prefix,前綴的意思

注意日誌變化

image.png

輸入ping指令後

image.png

和state相結合,能夠iptables -I INPUT 3  -s 192.168.239.0/16 -m state --state NEW -j LOG --lgo-prefix "自定義字符",只要192.168.239.0網段的新主機訪問本主機,日誌都會記錄下來

8、iptables策略的保存

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加執行權限)

9、NAT的實現

iptables -t nat -A POSTROUTING -s 192.168.31.0/24 -j SNAT --to-source 172.18.0.123

相關文章
相關標籤/搜索