3.iptables狀態匹配
問題本案例要求利用狀態跟蹤機制,編寫iptables規則實現以下需求:
允許從內網訪問外網的服務
禁止從外網訪問內網
對於「內網–>外網」的web訪問,取消狀態跟蹤
方案沿用練習二的網路環境、路由配置,如圖-3所示。本例中的防火牆規則設定在閘道器gw1上來完成。
步驟實現此案例需要按照如下步驟進行。
步驟一:清理現有的防火牆規則,排除干擾
清空filter表:
[root@gw1 ~]# iptables -f
確認結果:
[root@gw1 ~]# iptables -nl
chain input (policy accept)
target prot opt source destination
chain forward (policy accept)
target prot opt source destination
chain output (policy accept)
target prot opt source destination
步驟二:控制內外網訪問
1)整理任務需求,編寫基本**規則
允許從內網訪問外網(來自192.168.4.0/24網段,從介面eth1出去):
[root@gw1 ~]# iptables -a forward -s 192.168.4.0/24 -o eth1 -j accept
禁止從外網訪問內網(從介面eth1進來,發往192.168.4.0/24網段):
[root@gw1 ~]# iptables -a forward -d 192.168.4.0/24 -i eth1 -j drop
確認結果:
[root@gw1 ~]# iptables -nl forward
chain forward (policy accept)
target prot opt source destination
accept all – 192.168.4.0/24 0.0.0.0/0
drop all – 0.0.0.0/0 192.168.4.0/24
2)測試內外網的ftp訪問
在svr5、pc120上均開啟vsftpd服務,本機訪問都正常。以svr5為例:
[root@svr5 ~]# ftp 192.168.4.5
connected to 192.168.4.5 (192.168.4.5).
220 (vsftpd 2.2.2)
name (192.168.4.5:root): ftp
331 please specify the password.
password:
230 login successful.
remote system type is unix.
using binary mode to transfer files.
ftp> quit
221 goodbye.
而內外網**訪問將會受到限制,比如從pc205訪問svr5上的ftp服務:
[root@pc205 ~]# ftp 192.168.4.5
ftp: connect: 連線超時
ftp> quit
同樣地,從svr5訪問pc205的ftp服務也會被拒絕:
[root@svr5 ~]# ftp 174.16.16.120
ftp: connect: 連線超時
ftp> quit
[root@svr5 ~]#
這是因為:防火牆drop了從eth1介面進來發往192.168.4.0/24網段的資料報,這其中包括外網發來的ftp請求包,也包括ftp應答包,從而導致雙方的訪問受阻。
3)修正**控制規則
清空forward鏈的原有規則:
[root@gw1 ~]# iptables -f forward
[root@gw1 ~]# iptables -nl forward
chain forward (policy accept)
target prot opt source destination
利用狀態機制,放行從內網訪問外網的資料報、放行內網收到的應答包及關聯資料報,並且將forward**鏈的預設規則設為drop:
[root@gw1 ~]# iptables -a forward -s 192.168.4.0/24 -o eth1 -j accept
[root@gw1 ~]# iptables -a forward -i eth1 -m state --state established,related -j accept
[root@gw1 ~]# iptables -p forward drop
確認結果:
[root@gw1 ~]# iptables -nl forward
chain forward (policy drop)
target prot opt source destination
accept all – 192.168.4.0/24 0.0.0.0/0
accept all – 0.0.0.0/0 0.0.0.0/0 state related,established
4)重新測試內外網的ftp訪問
從內網svr5可以訪問外網pc120的ftp服務:
[root@svr5 ~]# ftp 192.168.4.5
connected to 192.168.4.5 (192.168.4.5).
220 (vsftpd 2.2.2)
name (192.168.4.5:root): ftp
331 please specify the password.
password:
230 login successful.
remote system type is unix.
using binary mode to transfer files.
ftp> quit
221 goodbye.
但是從外網pc120無法訪問內網svr5的ftp服務,與任務期望的目標一樣:
[root@pc205 ~]# ftp 192.168.4.5
ftp: connect: 連線超時
ftp> quit
[root@pc205 ~]#
步驟三:對於「內網–>外網」的web訪問,取消狀態跟蹤
1)準備測試web服務
在外網測試機pc120上快速開啟httpd服務:
根據當前的forward策略,預設是被drop掉的,因此從內網svr5訪問外網pc120的web服務時,將會被拒絕:
[root@svr5 ~]# elinks --dump
… …^c //長時間無響應,按ctrl+c鍵中止
[root@svr5 ~]#
2)在gw1上新增規則,放行「內網–>外網」的web訪問,不做狀態跟蹤
編寫防火牆規則:
[root@gw1 ~]# iptables -t raw -a prerouting -s 192.168.4.0/24 -p tcp --dport 80 -j notrack
[root@gw1 ~]# iptables -t raw -a prerouting -d 192.168.4.0/24 -p tcp --sport 80 -j notrack
[root@gw1 ~]# iptables -a forward -m state --state untracked -j accept
確認結果:
[root@gw1 ~]# iptables -t raw -nl
chain prerouting (policy accept)
target prot opt source destination
notrack tcp – 192.168.4.0/24 0.0.0.0/0 tcp dpt:80
notrack tcp – 0.0.0.0/0 192.168.4.0/24 tcp spt:80
chain output (policy accept)
target prot opt source destination
[root@gw1 ~]# iptables -nl forward
chain forward (policy drop)
target prot opt source destination
accept all – 192.168.4.0/24 0.0.0.0/0
accept all – 0.0.0.0/0 0.0.0.0/0 state related,established
accept all – 0.0.0.0/0 0.0.0.0/0 state untracked
3)再次測試web訪問
從內網svr5訪問外網pc120的web服務,可以快速看到web頁面內容:
[root@svr5 ~]# elinks --dump
test page 120.
Linux的iptables匹配包狀態
invalid意味著這個包沒有已知的流或連線與之關聯,也可能是它包含的資料或包頭有問題。established意思是包是完全有效的,而且屬於乙個已建立的連線,這個連線的兩端都已經有資料傳送。new表示包將要或已經開始建立乙個新的連線,或者是這個包和乙個還沒有在兩端都有資料傳送的連線有關。relate...
Iptables 10 Iptables自定義鏈
之前我們一直在討論和使用預設的鏈,感覺已經滿足我們的需要了,但是這樣嗎?有沒有可能我們想針對某乙個服務自定義一條鏈,所有與之相關的規則都放在一起,這樣會更好管理,我們不用在一大堆雜亂的規則中花大量時間找出我們想要的規則 答案是可以的,我們現在便新建一條自己的鏈吧 現在我們想自定義一條與web相關的鏈...
iptables 語法舉例
iptables 語法 iptables t table command match target iptables i forward d www.com 或211.168.128.26 j drop 禁止某一客戶機或某一網段上網 iptables i forward s 192.169.0.10...