iptables之SNAT源地址修改及DNAT目標(biāo)地址修改和PNAT端口修改

iptables之nat功能

一臺網(wǎng)關(guān)主機(jī)用上net的主要目的是要隱藏網(wǎng)關(guān)內(nèi)網(wǎng)中的主機(jī)。如果一個網(wǎng)關(guān)設(shè)備不開啟net功能,僅僅只能將報文實現(xiàn)網(wǎng)絡(luò)轉(zhuǎn)發(fā),而不會修改報文的任何源ip和目標(biāo)ip。此時內(nèi)網(wǎng)中的客戶端和互聯(lián)網(wǎng)外的主機(jī)通信時,一個懷有惡意的外網(wǎng)主機(jī)會得到內(nèi)網(wǎng)客戶端的地址,然后用掃描工具掃描客戶端主機(jī)的各種端口服務(wù),找到有薄弱項的服務(wù)發(fā)起遠(yuǎn)程攻擊,此時很容易攻克這臺主機(jī),并用這臺主機(jī)當(dāng)作跳板,繼續(xù)從內(nèi)網(wǎng)去滲透內(nèi)部其他的重要的主機(jī)。當(dāng)網(wǎng)關(guān)主機(jī)上開啟了net功能后,網(wǎng)關(guān)在轉(zhuǎn)發(fā)報文到互聯(lián)網(wǎng)或者從互聯(lián)網(wǎng)轉(zhuǎn)發(fā)報文到內(nèi)網(wǎng)服務(wù)器的時候,把報文中的內(nèi)網(wǎng)主機(jī)地址統(tǒng)統(tǒng)改成網(wǎng)關(guān)的外網(wǎng)地址,外部的主機(jī)只能看到網(wǎng)關(guān)的地址,這樣就做到安全保護(hù)內(nèi)網(wǎng)中主機(jī)的操作。

網(wǎng)關(guān)開啟net后,請求報文和相應(yīng)報文是通過內(nèi)存中的連接追蹤表來進(jìn)行地址轉(zhuǎn)換的。內(nèi)網(wǎng)中的客戶端通過網(wǎng)關(guān)的地址轉(zhuǎn)換訪問外網(wǎng)的服務(wù)器主機(jī)叫做SNAT,外網(wǎng)主機(jī)訪問經(jīng)過網(wǎng)關(guān)地址轉(zhuǎn)換的內(nèi)網(wǎng)中提供各種服務(wù)的主機(jī)叫做DNAT,httpd只開放8080端口,把8080端口映射到80,能正常以80訪問叫做PNAT。

環(huán)境拓?fù)洌?br> 網(wǎng)關(guān)
內(nèi)網(wǎng)接口:192.168.10.10
外網(wǎng)接口:192.168.2.6

內(nèi)網(wǎng)主機(jī):192.168.10.11
外網(wǎng)主機(jī):192.168.2.201

配置網(wǎng)關(guān)主機(jī):

[root@localhost ~]# cat /proc/sys/net/ipv4/ip_forward
0
#查看網(wǎng)關(guān)的核心轉(zhuǎn)發(fā)是否開啟,默認(rèn)為0是關(guān)閉狀態(tài)

[root@localhost ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
#開啟核心轉(zhuǎn)發(fā)

配置外網(wǎng)主機(jī)路由信息:

[root@localhost ~]# route add -net 192.168.10.0/24 gw 192.168.2.6
#添加192.168.10.0/24網(wǎng)絡(luò)的下一條為192.168.2.6

iptables之SNAT源地址修改

SNAT:只能用在POSTROUTING和INPUT上,跨主機(jī)很少用INPUT
ser-defined dhains:自定義鏈,只能被上面的兩個鏈調(diào)用
--to-source [ipaddr[-ipaddr]][:port[-port]]:修改源地址,也可以是輪詢的地址范圍
--random:請求時隨機(jī)訪問多個地址
--persistent:隨機(jī)訪問到一個地址后,之后始終用固定的地址訪問
MASQUERADE:是動態(tài)分配ip的網(wǎng)關(guān)外網(wǎng)時進(jìn)行地址轉(zhuǎn)換

我們現(xiàn)在模擬內(nèi)網(wǎng)客戶端向外網(wǎng)服務(wù)器發(fā)送請求來做SNAT地址轉(zhuǎn)換,這是隱藏內(nèi)網(wǎng)客戶端地址的應(yīng)用。

添加規(guī)則

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 192.168.2.6
#開放從內(nèi)向外SNAT的192.168.10.0/24轉(zhuǎn)換為192.168.2.6

查看網(wǎng)關(guān)net規(guī)則

[root@localhost ~]# iptables -t nat -vnL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 SNAT       all  --  *      *       192.168.10.0/24      0.0.0.0/0            to:192.168.2.6

對外網(wǎng)主機(jī)80端口抓包,此時內(nèi)網(wǎng)主機(jī)訪問外網(wǎng)web時,成功隱藏了內(nèi)網(wǎng)主機(jī)的ip,而用網(wǎng)關(guān)外網(wǎng)ip來做訪問報文的源地址和響應(yīng)報文的目標(biāo)地址。


圖片.png

對網(wǎng)關(guān)內(nèi)網(wǎng)接口抓包,是直接內(nèi)網(wǎng)ip發(fā)包給外網(wǎng)ip


圖片.png

在對網(wǎng)關(guān)外網(wǎng)接口抓包,這次內(nèi)網(wǎng)ip地址給自動轉(zhuǎn)換成了網(wǎng)關(guān)外網(wǎng)ip


圖片.png

iptables之DNAT目標(biāo)地址修改

DNAT:只能用在PREROUTING、OUTPUT和自定義的鏈上
--to-destination [ipaddr[-ipaddr]][:port[-port]] 輪詢訪問
--random 隨機(jī)訪問
--persistent 固定訪問

做DNAT只開放有限協(xié)議的有限端口,這是與SNAT不同的地方,對于服務(wù)器來講要隱藏所有的東西,僅留一個需要開放給互聯(lián)網(wǎng)訪問的端口,而且SNAT和DNAT不建議在同一臺主機(jī)使用。

現(xiàn)在模擬外網(wǎng)客戶端向內(nèi)網(wǎng)web服務(wù)器發(fā)送請求來做DNAT地址轉(zhuǎn)換,這是隱藏內(nèi)網(wǎng)服務(wù)器地址的應(yīng)用。

清空之前的net規(guī)則:

[root@localhost ~]# iptables -t nat -F

添加規(guī)則:

[root@localhost ~]# iptables -t nat -A PREROUTING -d 192.168.2.6 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.11
#開放從外向內(nèi)DNAT的目標(biāo)ip192.168.2.6:80轉(zhuǎn)換為192.168.10.11:80

外網(wǎng)主機(jī)訪問內(nèi)網(wǎng)web服務(wù)器正常


圖片.png

內(nèi)網(wǎng)web主機(jī)網(wǎng)卡抓包:


圖片.png

網(wǎng)關(guān)主機(jī)內(nèi)網(wǎng)接口抓包:
圖片.png

網(wǎng)關(guān)主機(jī)外網(wǎng)接口抓包:


圖片.png

把內(nèi)網(wǎng)httpd服務(wù)器80端口改為8080端口:

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
Listen 8080

[root@localhost ~]# systemctl restart httpd

修改規(guī)則:

[root@localhost ~]# iptables -t nat -R PREROUTING 1 -d 192.168.2.6 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.11:8080

訪問192.168.2.6:80被轉(zhuǎn)發(fā)到192.168.10.11:8080


圖片.png

iptables之PNAT端口修改

REDIRECT:在PREROUTING和OUTPUT上和用戶自定義的鏈上
--to-ports port[-port] 端口映射
--random 隨機(jī)訪問

用戶訪問web網(wǎng)站時,默認(rèn)是訪問80端口,但是httpd把80改為了8080端口,此時做端口映射,訪問80端口時自動在內(nèi)核中訪問8080端口。這個解決了普通用戶啟動的進(jìn)程只能監(jiān)聽1024以上的端口,而不能監(jiān)聽80端口,在內(nèi)核中把來自80的訪問映射到8080去訪問。

這個是在內(nèi)網(wǎng)httpd服務(wù)器上的iptables添加規(guī)則:

[root@localhost ~]# iptables -A PREROUTING -t nat -d 192.168.10.11 -p tcp --dport 80 -j REDIRECT --to-ports 8080
#把來自80的訪問映射到8080

雖然httpd只開放了8080端口,但是訪問80會自動映射到8080


圖片.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 前言 防火墻(Firewall),就是一個隔離工具,工作于主機(jī)或者網(wǎng)絡(luò)的邊緣,對于進(jìn)出本主機(jī)或本網(wǎng)絡(luò)的報文,根...
    魏鎮(zhèn)坪閱讀 7,163評論 1 23
  • 防火墻的概念iptables的簡介iptables命令網(wǎng)絡(luò)防火墻NATfirewalld服務(wù) 一、防火墻的概念 (...
    哈嘍別樣閱讀 1,981評論 0 1
  • iptables俗稱防火墻,或許我們已經(jīng)不在陌生,但是作為openstack基礎(chǔ),這里還是對其做一些補(bǔ)充,了解更多...
    ximitc閱讀 1,866評論 0 8
  • 本文部分觀點圖片采用于:http://chenx1242.blog.51cto.com 隨著智能機(jī)的逐漸普及,大量...
    BossHuang閱讀 3,410評論 0 16
  • 2018.1.13 我怎么如此幸運,魏先生昨晚過了12點才打烊,平時沒辦法一定要看到那么晚,可如今晚上沒幾個人看到...
    老姐嘛嘛閱讀 160評論 0 0

友情鏈接更多精彩內(nèi)容