實驗環境
本實驗使用了兩臺虛擬機,workstation(添加策略) + rhel8(進行訪問測試)
dnf install httpd -y
進行安裝後,打開服務
- 此時ssh可訪問,apache也可以
測試步驟
1)設置apache可被訪問,iptables不可以
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
設置httpd可以
iptables -A INPUT -i lo -j ACCEPT
設置迴環接口允許,即本地可訪問
此時80接口是允許的,迴環接口是允許的,其他都是REJECT拒絕的
- 使用rhel8進行連接測試,不能ping通,也不能連接上去。但是apache連接是正常的
2)添加20端口,讓ssh也能夠被訪問 - 火牆策略需要注意,因爲是具有先後順序的(從上到下依次讀取),比如說添加22端口,如果直接使用
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
命令進行添加,就會在REJECT後面,依舊是不能進行訪問的
- 當我們使用
iptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT
就能把策略添加到指定行
在企業中的策略肯定不像我們這裏測試的只有短短几條,那麼就存在一種問題:每次我們的80都在最後一條,讀取起來就很麻煩,所以引入了監控數據包狀態這一點
數據包狀態
最開始的訪問狀態是NEW,後續就是ESTABLISHED和RELATED了。此設定會優化我們的火牆數據包狀態,使我們的數據包更易通過火牆。
命令 | 作用 |
---|---|
RELATED | 建立過連接的 |
ESTABLISHED | 正在連接的 |
NEW | 新的 |
【1】代碼
[root@workstation ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #這兩種狀態的直接讓過
[root@workstation ~]# iptables -A INPUT -m state --state NEW -i lo -j ACCEPT
[root@workstation ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
[root@workstation ~]# iptables -A INPUT -m state --state NEW -s 170.25.254.11 -p tcp --dport 22 -j ACCEPT #不加!表示只有這個ip的可以來訪問,加上!表示只有此ip不可訪問
[root@workstation ~]# iptables -A INPUT -j REJECT
[root@workstation ~]# service iptables save #對我們的策略進行保存
【2】驗證
- 自己訪問自己是可以成功的,因爲走的是lo迴環接口
- 使用170.25.254.11也是可以訪問的,使用其他主機是不可以的