規則備份與恢復:
service iptables save 這樣會保存到/etc/sysconfig/iptables
iptables-save > myipt.rule 能夠把防火牆規則保存到指定文件中
iptables-restore < myipt.rule 這樣能夠恢復指定的規則安全
四個表,5個鏈
filter,nat,mangle,raw 服務器
查看對應表的規則
iptables –t nat –L 能夠看到有哪些鏈網絡
iptables規則相關:
放行22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT tcp
限定給某個ip放行(這個是對於來源的IP限制,而後我給這個ip開放22端口dport這個就表明我就是目的端口)
iptables -I INPUT -p tcp -s 22.129.48.82 --dport 22 -j ACCEPT
iptables -I INPUT -s 22.129.48.82 -j ACCEPT
A和I這兩參數不同,A是追加的最後面,I是插在前面的規則網站
增長/刪除規則
禁止對進來10.72.11.12這個ip的1234 這個端口訪問我,和禁止我訪問10.72.137.159這個ip的80端口
iptables -A/-D INPUT -s 10.72.11.12 -p tcp --sport 1234 -d 10.72.137.159 --dport 80 -j DROPspa
iptables -nvL --line-numbers 查看規則帶有id號
iptables -D INPUT 1 根據規則的id號刪除對應鏈的規則rest
P表明默認規則
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
別人訪問不了本機,本機也不能向外發數據對象
禁止內部人員訪問外部指定的網站
iptables -A OUTPUT -d www.123.com -j DROP接口
iptables -A INPUT -p icmp -j DROP 禁止別人ping本機ip
iptables -A INPUT -p 1 --icmp-type 8 -j DROP
備註:能夠ping通其餘客戶機,可是其餘客戶機ping不通本機----------------經常使用
按端口匹配
-sport 匹配來源端口
iptables -A INPUT -p tcp --sport 80 -j DROP
備註:未來自80端口的請求DROP掉
-dport匹配目的端口
iptables -A INPUT -s 192.168.3.1/24 -p tcp --dport 80 -j DROP
備註:未來自192.168.3.1/24的針對本機80端口的請求DROP掉
能夠指定某個端口,也能夠是端口範圍,好比 :2000(2000如下端口)
2000:3000(2000-3000端口) 3000: (3000以上端口)
請總結:PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD各條鏈處理數據的對象,
以及數據通過防火牆時經過各鏈的順序:
幾種流向的順序爲
PREROUTING --->INPUT--> OUTPUT--> POSTROUTING
減小不安全的端口鏈接,不讓本機訪問31337這個端口,關閉不安全的端口鏈接本機
iptables -A OUTPUT -p tcp --sport 31337 -j DROP
iptables -A OUTPUT -p tcp --dport 31337 -j DROP
咱們只容許192.168.0.3的機器進行SSH鏈接
iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
開啓所須要的端口
22
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
80
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
匹配條件
按網絡接口匹配
iptables -A OUTPUT -o eth0 -j DROP
備註:將接口eth0流出的數據DROP掉
iptables -A INPUT -i eth0 -j DROP
備註:將流入接口eth0的數據DROP掉
五個鏈
INPUT:輸入,目的IP 是本機的包
OUTPUT:輸出,源IP 是本機的包
FORWARD:轉發,穿過本機的包
PREROUTING: 路由前
POSTROUTING: 路由後
案例講解:
一、防止外網用內網IP 欺騙
iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
三、阻止一個IP 鏈接本機
iptables -t filter -A INPUT -s 192.168.1.5 -i eth0 -j DROP
禁止一個IP 或者一個IP 段訪問服務器端口服務
80 端口
iptables -t filter -I INPUT 2 -s 192.168.5.0/24 -p tcp --dport http -j DROP
FTP 端口
iptables -t filter -I INPUT 2 -s 192.168.7.9 -p tcp --dport ftp -j DROP
10. iptables -A INPUT –s 192.168.100.1 –p udp --dport 53 -j DROP
不容許100.1 進行DNS 域名解析
iptables -A INPUT –s 192.168.100.1 -p tcp --dport 53 -j DROP
不容許100.1 進行DNS 的TCP 的鏈接
11. iptables -A INPUT –s 192.168.100.1 -p tcp --dport 25 -j DROP
客戶機100.1 不能向服務器發郵件
iptables -A INPUT –s 192.168.100.1 -p tcp --dport 110 -j DROP
客戶機100.1 不能收郵件
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
最後,保存當前規則
/etc/rc.d/init.d/iptables save
service iptables restart
這種iptables的規則設定適用於只充當MySQL服務器的管理和維護,外部地址不提供任何服務。
若是你但願yum能夠運行的話,還須要添加如下內容,容許DNS請求的53端口,容許下載隨機產生的高端口
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 10000:65535 -j ACCEPT
/etc/rc.d/init.d/iptables save
service iptables restart