您好,登錄后才能下訂單哦!
iptables實(shí)現(xiàn)網(wǎng)絡(luò)防火墻功能,SNAT以及DNAT功能
一、網(wǎng)絡(luò)防火墻的實(shí)現(xiàn)
1.環(huán)境準(zhǔn)備:
虛擬機(jī)vmware workstation 11
系統(tǒng)CentOS 7.3
軟件包安裝:yum install httpd vsftpd tcpdump
2.前提條件
2.1各主機(jī)正確設(shè)置IP地址/子網(wǎng)掩碼
參考設(shè)置:
主機(jī)A 網(wǎng)卡ens33:10.0.0.110/24 內(nèi)網(wǎng)客戶端
主機(jī)B 網(wǎng)卡ens33:10.0.0.111/24 ens37:172.16.252.52/24 網(wǎng)關(guān)服務(wù)器
主機(jī)C 網(wǎng)卡ens33:172.16.254.52/24 外網(wǎng)服務(wù)端
2.2各主機(jī)正確設(shè)置網(wǎng)關(guān)地址
參考設(shè)置:
主機(jī)A添加默認(rèn)路由信息
route add default gw 10.0.0.111
主機(jī)C添加路由信息
route add -net 10.0.0.0/24 gw 172.16.252.52
3.推薦實(shí)現(xiàn)步驟
開啟路由轉(zhuǎn)發(fā)功能
在filter表中的FORWARD鏈中實(shí)現(xiàn)
4.要注意的問題
1.請求和響應(yīng)均會經(jīng)過FORWARD鏈,要注意規(guī)則的方向性
2.如果要啟用conntrack機(jī)制,建議雙方向的狀態(tài)為ESTABLISHED的報(bào)文直接放行通過
3.配置規(guī)則時可使用tcpdump抓包分析數(shù)據(jù)報(bào)文
步驟:
1.主機(jī)A添加默認(rèn)路由信息 route add default gw 10.0.0.111 route -n 2.主機(jī)B開啟核心轉(zhuǎn)發(fā)功能 sysctl -w net.ipv4.ip_forward=1 3.tcpdump抓包測試數(shù)據(jù) 主機(jī)A:ping 172.16.254.52 主機(jī)B抓包:tcpdump -i ens33 -nn icmp 測試結(jié)果:有10.0.0.110到172.16.254.52的請求報(bào)文信息,但沒有回應(yīng)報(bào)文信息 4.主機(jī)C使用tcpdump抓包測試數(shù)據(jù) tcpdump -i ens33 -nn icmp 測試結(jié)果:有回應(yīng)報(bào)文信息,但回應(yīng)報(bào)文信息發(fā)往給其他主機(jī),因此要設(shè)定網(wǎng)關(guān)信息 5.主機(jī)C添加路由信息 route add -net 10.0.0.0/24 gw 172.16.252.52 route -n 6.主機(jī)A ping請求測試 ping 172.16.254.52 測試結(jié)果:ping通 7.主機(jī)C啟動httpd服務(wù) systemctl start httpd.service 8.主機(jī)A訪問主機(jī)C的web頁面 curl http://172.16.254.52 #此時應(yīng)該正常顯式頁面內(nèi)容
在上面的基礎(chǔ)上搭建網(wǎng)絡(luò)防火墻
方式一: 9.拒絕所有轉(zhuǎn)發(fā)服務(wù) iptables -A FORWARD -j REJECT 10.添加鏈規(guī)則:允許本地主機(jī)A訪問外網(wǎng)主機(jī)C的80端口的服務(wù) iptables -I FORWARD -s 10.0.0.0/24 -p tcp --dport 80 -j ACCEPT 11.添加鏈規(guī)則:允許外網(wǎng)主機(jī)C的80端口http服務(wù)響應(yīng)本機(jī) iptables -I FORWARD 2 -d 10.0.0.0/24 -p tcp --sport 80 -j ACCEPT 12.主機(jī)A測試能否訪問主機(jī)C的web頁面 curl http://172.16.254.52#此時應(yīng)該正常顯式頁面內(nèi)容 方式二: 9.拒絕所有轉(zhuǎn)發(fā)服務(wù) iptables -A FORWARD -j REJECT 10.放行所有建立連接的數(shù)據(jù)報(bào)文 iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT 11.新建一條鏈規(guī)則允許本地主機(jī)A訪問外網(wǎng)主機(jī)C iptables -I FORWARD 2 -s 10.0.0.0/24 -m state --state NEW -j ACCEPT 12.主機(jī)A測試 curl http://172.16.254.52 #此時應(yīng)該正常顯式頁面內(nèi)容 13.添加鏈規(guī)則:允許外網(wǎng)主機(jī)C訪問本地主機(jī)A的80端口的http服務(wù) iptables -I FORWARD 3 -d 10.0.0.110 -p tcp --dport 80 -m state --state NEW -j ACCEPT 14.主機(jī)C測試 curl http://10.0.0.110 #此時應(yīng)該正常顯式頁面內(nèi)容 15.添加鏈規(guī)則:允許本機(jī)主機(jī)A開放更多端口的服務(wù) iptables -R FORWARD 3 -d 10.0.0.110 -p tcp -m multiport --dport 21:23,80 -m state --state NEW -j ACCEPT 16.加載FTP模塊(兩種方式) 1.modprobe nf_conntrack_ftp 2.vi /etc/sysconfig/iptables-config IPTABLES_MODULES="nf_conntrack_ftp" 17.建立FTP訪問鏈規(guī)則,開放FTP被動模式 iptables -A FORWARD -d 10.0.0.110 -p tcp -m state --state RELATED -j ACCEPT 18.主機(jī)C測試 lftp 10.0.0.110 ssh root@10.0.0.110 curl http://10.0.0.110 #此時測試應(yīng)該都能正常獲取信息
二、SNAT轉(zhuǎn)發(fā)功能實(shí)現(xiàn)
前提條件
各主機(jī)正確設(shè)置IP地址/子網(wǎng)掩碼
參考設(shè)置:
主機(jī)A 網(wǎng)卡ens33:10.0.0.110/24 內(nèi)網(wǎng)客戶端
主機(jī)B 網(wǎng)卡ens33:10.0.0.111/24 ens37:172.16.252.52/24 網(wǎng)關(guān)服務(wù)器
主機(jī)C 網(wǎng)卡ens33:172.16.254.52/24 外網(wǎng)服務(wù)器
各主機(jī)正確設(shè)置網(wǎng)關(guān)地址
參考設(shè)置:
主機(jī)A添加默認(rèn)路由信息
route add default gw 10.0.0.111
主機(jī)C添加路由信息
route add -net 10.0.0.0/24 gw 172.16.252.52
推薦實(shí)現(xiàn)步驟
1. 開啟網(wǎng)關(guān)主機(jī)的路由轉(zhuǎn)發(fā)功能
主機(jī)B開啟核心轉(zhuǎn)發(fā)功能
sysctl -w net.ipv4.ip_forward=1
2. 添加使用SNAT策略的防火墻規(guī)則
規(guī)則示例
iptables -t nat -I POSTROUTING -j SNAT --to-source 172.16.252.52
3.驗(yàn)證SNAT結(jié)果
主機(jī)A curl http://172.16.254.52
主機(jī)C tail -f /var/log/httpd/access_log #查看到的ip地址應(yīng)該為主機(jī)B的公網(wǎng)地址
三、DNAT轉(zhuǎn)發(fā)功能的實(shí)現(xiàn)
前提條件
各主機(jī)正確設(shè)置IP地址/子網(wǎng)掩碼
參考設(shè)置:
主機(jī)A 網(wǎng)卡ens33:10.0.0.110/24 內(nèi)網(wǎng)服務(wù)器
主機(jī)B 網(wǎng)卡ens33:10.0.0.111/24 ens37:172.16.252.52/24,網(wǎng)關(guān)服務(wù)器
主機(jī)C 網(wǎng)卡ens33:172.16.254.52/24 外網(wǎng)客戶端
各主機(jī)正確設(shè)置網(wǎng)關(guān)地址
參考設(shè)置:
主機(jī)A添加默認(rèn)路由信息
route add default gw 10.0.0.111
主機(jī)C添加路由信息
route add -net 10.0.0.0/24 gw 172.16.252.52
推薦實(shí)現(xiàn)步驟
1. 開啟網(wǎng)關(guān)主機(jī)的路由轉(zhuǎn)發(fā)功能
主機(jī)B開啟核心轉(zhuǎn)發(fā)功能
sysctl -w net.ipv4.ip_forward=1
2. 添加使用SNAT策略的防火墻規(guī)則
規(guī)則示例
iptables -t nat -I PREROUTING -d 172.16.252.52 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.110
3.驗(yàn)證DNAT結(jié)果(主機(jī)C訪問主機(jī)B的公網(wǎng)地址顯式的內(nèi)應(yīng)該為主機(jī)A的web內(nèi)容)
主機(jī)C curl http://172.16.252.52
主機(jī)A tail -f /var/log/httpd/access_log #查看到的ip地址應(yīng)該為外網(wǎng)主機(jī)C的地址
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。