iptables狀態匹配

2021-09-23 15:21:21 字數 4713 閱讀 2682

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...