iptables經常使用語法+iptables規則寫法

企業中用硬件防火牆的場景是大多數,但有時候也仍是會用到iptables,因此作爲運維工程師,使用iptables的作主機防火牆和網絡防火牆的規則寫法仍是須要掌握的,廢話很少說,直接來乾貨。
mysql


主機防火牆規則web


修改默認入站出站策略爲刪除數據(修改時慎重考慮)sql

iptables -P INPUT DROP  //刪除全部入站數據shell

iptables -P OUTPUT DROP //刪除全部出站數據服務器


若是是遠程鏈接到服務器上進行防火牆的修改操做時,可能會涉及清空防火牆的操做,若是直接修改了默認策略爲刪除一切入站出站數據,一不當心來一條清空全部規則,此時的遠程鏈接也就當即被阻止了,因此即使是想設置成最嚴格的白名單模式,最好是在默認狀況下清空全部規則後先把xhell的放行規則寫好以後,在其後面添加一條全部入站及出站數據都作刪除處理的默認規則,即使不當心清除全部規則後,也不會出現遠程鏈接都被阻止的嚴重後果,由於默認策略全部的入站出站數據都是被放行的。網絡


開放x-shell鏈接端口運維

iptables -A INPUT -s Client-IP -d Server-IP -p tcp --dport 22 -j ACCEPT  //放行x-shell入站數據ssh

iptables -A OUTPUT -s Server-IP -d Client-IP -p tcp --sport 22 -j ACCEPT //放行x-shell出站數據tcp

iptables -A INPUT -j DROPide

iptables -A OUTPUT -j DROP


默認出站數據最好設置爲放行已創建的鏈接,這樣一來就不用單獨放行每一條容許入站的數據的出站動做了

iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT


開放本身使用ping探測別人

iptables -A INPUT -p icmp --icmp-type 0/0 -j ACCEPT  //放行ping響應入站

iptables -A OUTPUT -p icmp --icmp-type 8/0 -j ACCEPT //放行ping請求出站


開放別人使用ping探測本身

iptables -A INPUT -p icmp --icmp-type 8/0 -j ACCEPT  //放行ping請求入站

iptabels -A OUTPUT -p icmp --icmp-type 0/0 -j ACCEPT //放行ping響應出站


開放回環檢測

iptables -A INPUT -i lo -p icmp -j ACCEPT


開放http鏈接端口

iptables -A INPUT -p tcp --dport 80 -j ACCEPT


開放https鏈接端口

iptables -A INPUT -p tcp --dport 443 -j ACCEPT


http、https鏈接端口合併

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


開放mysql鏈接端口

iptables -A INPUT -p tcp --dport 3306 -j ACCEPT


開放fastcgi鏈接端口

iptables -A INPUT -p tcp --dport 9000 -j ACCEPT


開放samba鏈接端口

iptables -A INPUT -p tcp multiport --dports 139,445 -j ACCEPT  //開放samba主服務端口

iptables -A INPUT -p udp multiport --dports 137,138 -j ACCEPT  //開放samba名稱解析端口


開放ftp鏈接端口

iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT  //開放ftp服務端口

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  //開放相關、已創建的鏈接


開放nfs鏈接端口

首先到/etc/sysconfig/nfs文件中鎖定端口

RQUOTAD_PORT=10001

LOCKD_TCPPORT=10002

LOCKD_UDPPORT=10002

MOUNTD_PORT=10003

STATD_PORT=10004

再開放鎖定的多端口

iptables -A INPUT -p tcp multiport --dports 111,2049,10001:10004 -j ACCEPT

iptables -A INPUT -p udp multiport --dports 111,2049,10001:10004 -j ACCEPT


開放dns鏈接端口

iptables -A INPUT -p tcp --dport 53 -j ACCEPT  //開放區域傳送端口

iptables -A INPUT -p udp --dport 53 -j ACCEPT  //開放解析查詢端口


注意:測試防火牆的規則時能夠先寫一個計劃任務(20分鐘後清空防火牆規則)


網絡防火牆規則


添加規則於FORWARD鏈,注意幾個問題:

(1) 請求和響應報文均會經由FORWARD鏈,要注意規則的方向性;

第一條:iptables -I FORWARD  -m state --state ESTABLISHED,RELATED -j ACCEPT

(2) 若是沒有相似ftp的服務,狀態中能夠不用RELATED選項,若是有FTP服務,須要在網關上啓用ftp鏈接追蹤模塊(nf_conntrack_ftp)

(3) 若是啓用了鏈接追蹤(conntrack)機制,注意網關主機所可以追蹤的鏈接數的最大數量要符合須要,以避免過多的鏈接被拒絕


參考規則寫法:

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -s 192.168.1.0/24 -p tcp -m multiport --dports 22,21,23,80,443,139,445 -m state --state NEW -j ACCEPT

iptables -A FORWARD -j DROP


iptables DNAT SNAT寫法


web服務器的經常使用映射規則


iptables -t nat -I PREROUTING -p tcp -d 10.0.0.10 --dport 80 -j DNAT --to-destination 192.168.10.254:80

將全部目標地址爲防火牆的外網地址10.0.0.10,目標端口爲80的數據包修改目標地址爲內網服務器的192.168.10.50,目標端口爲80後進行轉發


iptables -t nat -I POSTROUTING -p tcp -s 192.168.10.254 --sport 80 -j SNAT --to-source 10.0.0.10:80

將全部源地址爲內網服務器192.168.10.254,源端口爲80的數據包統一修改成防火牆的出口地址10.0.0.10,端口爲80後進行轉發


ssh服務的經常使用映射規則


iptables -t nat -I PREROUTING -p tcp -d 10.0.0.10 --dport 1024 -j DNAT --to-destination 192.168.10.254:22

將全部目標地址爲防火牆的外網地址10.0.0.10,目標端口爲1024的數據包修改目標地址爲內網服務器的192.168.10.254,目標端口爲22後進行轉發


iptables -t nat -I POSTROUTING -p tcp -s 192.168.10.254 --sport 22 -j SNAT --to-source 10.0.0.10:1024

將全部源地址爲內網服務器192.168.10.254,源端口爲22的數據包統一修改成防火牆的出口地址10.0.0.10,端口爲1024後進行轉發


前面一部分是主機防火牆須要用到的規則寫法,後臺一部分是網絡防火牆的規則寫法,固然本文只是拋磚引玉,更多場景及用法請觸類旁通!

相關文章
相關標籤/搜索