一、基於NAT的防火牆策略
原理:通過配置防火牆策略,實現內網可以通過防火牆訪問外網,外網不能主動訪問內網,保證了局域網的安全性。
上圖為本次實驗的簡略圖。
准備工作:外網設為橋接模式,內網設為僅主機模式,防火牆兩個模式都有。
步驟:
-
首先把所有的不必要的防火牆策略關閉,以防止實驗出現失誤。
Centos6版本關閉防火牆:iptables –F
Centos7版本關閉防火牆:systemctl stop firewalld,iptables –F
-
配置網關
外網要想訪問內網,必須經過路由,所以要配置網關,這里防火牆擔當路由的功能。相同的,內網也要配置網關。
在這里internet配置網關:route add default gw 172.17.0.102
內網配置網關:route add default gw 192.168.58.161
-
配置防火牆策略
iptables -A FORWARD -s 192.168.58.170/24 -d 172.17.0.200/16 -m state --state NEW -j ACCEPT
iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -j REJECT
以上要配置三條防火牆策略,原因是:第一條配置的是允許內網先發起第一次請求訪問外網,第二條配置的是允許已建立的連接返回,第三條配置的是拒絕所有的連接,這三條的順序是2、1、3,這樣的順序是遵照防火牆的規則,范圍小的排在上面。
-
測驗
用內網去訪問外網,可以
用外網訪問內網,不可以
二、基於SNAT的防火牆策略
- 原理:基於源ip地址的網絡地址轉發。局域網通過防火牆訪問外網的時候,會通過地址轉發,把局域網的Ip轉換成和外網同樣的網段,這樣外網和局域網在一個網段了,就不需要設置網關了。
- 上圖為內網訪問外網的轉發路徑,當內網為192.168.58.170要訪問172.17.0.200時,防火牆會把192.168.58.170轉換成172.17.0.102,再去訪問外網。這就是SNAT。
- 具體實現:
- 檢查外網是否設置網關,若有,刪除,因為不需要網關,由圖看出172.17.0.102和172.17.0.200是在一個網段。關閉之前的防火牆策略,防止實驗失敗。
- 刪除網關:route del default gw 172.17.0.102
- 關閉之前的防火牆:iptables –F FORWARD
- 配置防火牆策略
- iptables -t nat -A POSTROUTING -s 192.168.58.170/24 -j SNAT --to-source 172.17.0.200
- 測試
- 使用內網直接去連接外網
- ping 172.17.0.200
三、基於DNAT的防火牆策略
- 原理:基於目的ip的網絡地址轉發。和SNAT正好相反,外網通過防火牆的ip轉發,能夠訪問內網。
- 步驟:
- 打開httpd服務,外網,防火牆,和內網的httpd服務。
- 刪除之前的防火牆策略
- iptables –t nat –F POSTROUTING
- 配置防火牆策略
- iptables -t nat -A PREROUTING -d 172.17.0.102 -p tcp --dport 80 -j DNAT --to-destination 192.168.58.170:80
- 測試
- 使用外網訪問防火牆ip,防火牆會轉至內網Ip.下圖為內網的html界面,是通過防火牆轉到得。
四、基於REDIRECT的端口轉發
- 原理:假設本機沒有80端口,當外來主機要訪問本機的80端口時,默認使其訪問8080端口,就是默認轉至本機的8080端口。
- 步驟:
- 准備工作:查看有無80端口,若有,則改為8080,為實驗的需要。
- vim /etc/httpd/conf/httpd.conf
- listen 8080
- 之后重啟httpd服務即可。
- 查看8080端口:
- 配置防火牆策略
- 清空之前的策略:
- iptables -t nat -F PREROUTING
- 配置新的策略:
- iptables -t nat -A PREROUTING -d 172.17.0.102 -p tcp --dport 80 -j REDIRECT --to-ports 8080
- 測試
- 在另外一台主機測試訪問本主機的80端口,看是否會轉至8080端口