天天看點

iptables之二:nat安全架構

一、 實驗說明

   1、通過DNS伺服器實作内、外網IP智能解析

       1)内網使用者通路Apache伺服器時,解析為其内網IP

       2)外網使用者通路Apache伺服器時,解析為Fairwall的外網位址

       3)Fairwall的外網IP:1.1.1.1/8

       4)Apache伺服器的内網IP:172.16.251.93/16

   2、網站域名

       www.shuishui.com

        内網IP:172.16.251.93

       外網IP:1.1.1.1/8

   3、網絡安全規劃

       1)為了安全,伺服器使用内網IP,但允許外網使用者通過防火牆通路

       2)外網使用者通路web伺服器時,解析為防火牆的外網IP

   4、實驗平台環境

      1)一台Apache伺服器

      2)一台cgi伺服器

      3)一台mysql伺服器

      4)DNS伺服器部署到Apache伺服器上

   5、作業系統使用

      共使用3台CentOS6.4,一台CentOS6.5

      内網中的伺服器全部采用CentOS6.4,外網中的使用者作用CentOS6.5

   6、IP配置設定

      将在下面的拓撲圖上直覺的标出

   7、關于網卡模式

       1)内網的網卡都在橋接模式

       2)防火牆的外網網卡及外網主機的網卡在VMnet5中

   8、本實驗關聯博文:

     1)《LAMP之一:apache、mysql、php的安裝及互聯互通》

         http://nmshuishui.blog.51cto.com/1850554/1381822

     2)《DNS伺服器系列之一:DNS服務原理、安裝及主從配置》

         http://nmshuishui.blog.51cto.com/1850554/1378368

     3) 《DNS伺服器系列之二:進階配置之-DNS子域授權、區域轉發、acl清單及view》

         http://nmshuishui.blog.51cto.com/1850554/1379440

     4)《iptables原理及文法》

         http://nmshuishui.blog.51cto.com/1850554/1384802

   9、關于DNS

      DNS伺服器的搭建及智能DNS解析的view功能,詳情請參考第6條中的博文,這裡将隻做簡單說明

   10、關于網絡環境

      這裡隻搭建了一個内部網絡環境,模拟一個公司的整個網絡架構,對于外部的網絡沒再搭建,原理和方法都是一樣的,在實驗的時候,為了友善,隻使用了一台電腦做為外網的使用者,使用公網IP

二、網絡拓撲

<a href="http://s3.51cto.com/wyfs02/M00/23/54/wKiom1M1ozSCb1iQAADwRGETKJU476.png" target="_blank"></a>

三、本次實驗所用簡單網絡拓撲

   為了實驗友善,對于網際網路中的使用者,沒有再為其搭建一個網絡,而是直接使用一個公網IP來模拟一個網際網路使用者,原來是一樣的,是以這裡就不再搭建第二個網絡了。

<a href="http://s3.51cto.com/wyfs02/M01/23/54/wKioL1M1o2DgQEeNAAD0jvrHEcM458.png" target="_blank"></a>

四、DNS智能解析規劃

   關于DNS的搭建、acl清單及view功能,這裡隻做使用,不再詳解,詳情情檢視第一部分中第七條的連結

   1、為了讓不同的使用者通路Web伺服器時,能夠根據其IP解析到不同的Web位址上(内網使用者通路時使用内網IP,外網使用者通路時得到防火牆的外網IP),是以我們需要為DNS伺服器建立view功能,使其能夠實作智能DNS解析,域名為shuishui.com

1

<code>vim </code><code>/etc/named</code><code>.rfc1912.zones</code>

   1)定義内網使用者的view

<a href="http://s3.51cto.com/wyfs02/M02/23/68/wKioL1M2IuXAr_hPAAA-ovFAP-E869.png" target="_blank"></a>

 2)定義其它所有使用者的view

<a href="http://s3.51cto.com/wyfs02/M01/23/68/wKiom1M2Izigw98OAAApRAqyl6Q713.png" target="_blank"></a>

   2、定義完區域後,接下來就是為區域建立區域檔案資料庫,在編輯完區域檔案資料庫後,為了保證DNS伺服器的正常運作,不要忘了執行DNS的六大步驟

   1)建立區域資料庫檔案shuishui.com.zone

<a href="http://s3.51cto.com/wyfs02/M00/23/69/wKioL1M2JBHTe0AYAAAu2HsRFsE003.png" target="_blank"></a>

   2)建立區域資料庫檔案shuishui.com.out

<a href="http://s3.51cto.com/wyfs02/M00/23/68/wKiom1M2JGLQ8g3TAAApW2c7SyI495.png" target="_blank"></a>

   3、重新開機named服務,檢查端口是否監聽成功

<a href="http://s3.51cto.com/wyfs02/M01/23/6A/wKioL1M2JTGyhWpuAABcysJF5xU057.png" target="_blank"></a>

   4、檢查DNS的view功能是否生效

<a href="http://s3.51cto.com/wyfs02/M02/23/6B/wKioL1M2JnvQ8sH6AAB7tYoCZaU784.png" target="_blank"></a>

五、防火牆配置

   1、防火牆安裝兩塊網卡,一塊配到内網,一塊連接配接外網

<a href="http://s3.51cto.com/wyfs02/M00/23/6B/wKiom1M2J62zSUGDAAB6pdMEMdc132.png" target="_blank"></a>

   2、開啟FORWARD轉發功能

      防火牆配置有兩塊網卡,内網的所有使用者都要經過内網網卡(内網的網關),再經過轉發到外網的網卡上實作網絡通信;這兩塊網卡雖然安裝在一台主機上,但是由于并不在一個網絡中,是以預設并不可以通信,是以需要為其開啟轉發功能

<code>vim </code><code>/etc/sysctl</code><code>.conf</code>

<a href="http://s3.51cto.com/wyfs02/M02/23/6C/wKiom1M2LI2QXnE2AAAhg-Rle8A676.png" target="_blank"></a>

   1、NAT簡單介紹

   由于内網中的用戶端較多,而公網IP有限,是以我們隻能通過做NAT實作了

   1)Basic NAT:靜态NAT,這種NAT需要有位址池,第個内網位址都應該在位址池中有一個與之對應的外網位址,是以不用

   2)NAPT:(Network Address Port Translation),即網絡位址端口轉換,它是一種動态的NAT

      ①、SNAT:源位址轉換,用于讓内網主機通路網際網路,POSTROUTING鍊

      ②、DNAT:讓網際網路上主機通路本地内網中的某伺服器上的服務,用于伺服器釋出

   iptables就是基于SNAT和DNAT這兩個目标實作位址轉換的,我們這裡這将内網的伺服器釋出到外面去,是以用的是DNAT

   2、NAT使用格式:    

   1)-j SNAT --to-source SIP

       規則添加:POSTROUTING鍊

      -j MASQUERADE 

       位址僞裝,無固定源IP,如果是ADSL的話,就需要用這種機制來實作

   2)-j DNAT --to-destination DIP

       規則添加:PREROUTING鍊

   3、資料包流向圖

<a href="http://s3.51cto.com/wyfs02/M02/23/6C/wKiom1M2NBaACgnjAAArCjINjiU214.png" target="_blank"></a>

   是以,根據上圖,我們内網的伺服器要想經過防火牆釋出出去,實作目标位址轉換,把内網IP轉換成防火牆的外網IP,就需要把規則定義在PREROUTING這個鍊上,而且我們是實作NAT轉換的,是以應該針對的是nat這個表

   4、配置規則

   特别注意:在規則配置之前别忘了給内部主機配置網關,就是防火牆的内網IP!外部主機千萬别配網關到1.1.1.1,人家是外部網絡中的主機,我們不是營運商,是以我們的1.1.1.1它就不是一個網關

   1)在PREROUTING上添加規則

   預設我的Web主機在内網中,是以外網的使用者是不能通路的,是以現在就需要在防火牆上做一個目标位址轉換,凡是請求防火牆外網1.1.1.1這個位址的web和DNS請求都要給它轉換到Web伺服器的内網位址(172.16.251.93)中來。因為這個請求是先到POSTROUTING再經過FORWARD送到内網使用者的,是以如果你的FORWARD鍊上預設規則是ACCEPT的話,則僅需定義下面這兩條規則就可以了;如果你的FORWARD鍊上的預設規則是DROP,那你不得不再在FORWARD鍊上做tcp80,53和UDP53端口的轉發

2

<code>[root@stu7 ~]</code><code># iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp -m multiport --dports 80,53 -j DNAT --to-destination 172.16.251.93</code>

<code>[root@stu7 ~]</code><code># iptables -t nat -A PREROUTING -d 1.1.1.1 -p udp --dport 53 -j DNAT --to-destination 172.16.251.93</code>

   為了直覺,貼兩個圖吧

   nat表的規則

<a href="http://s3.51cto.com/wyfs02/M00/23/6F/wKiom1M2OvCxPr4sAAAyErLBI38654.png" target="_blank"></a>

   filter表的規則

<a href="http://s3.51cto.com/wyfs02/M00/23/6F/wKiom1M2O_PD9UEjAABOimGbMmA545.png" target="_blank"></a>

六、外網用戶端測試

   1、IP位址設為1.1.1.2/8,與防火牆的外網位址(1.1.1.1/8)處于一個網絡中,并且可以ping通

   2、外網用戶端的DNS設定為1.1.1.1

3

<code>[root@stu7 ~]</code><code># vim /etc/resolv.conf</code>

<code>search dns.shuishui.com</code>

<code>nameserver 1.1.1.1</code>

   3、使用curl指令測試用IP是否能夠請求到網站資訊

<a href="http://s3.51cto.com/wyfs02/M00/23/6F/wKioL1M2PzCD901fAAAYCnNUjWc515.png" target="_blank"></a>

   4、使用curl指令測試用主機名是否能夠請求到網站資訊

<a href="http://s3.51cto.com/wyfs02/M02/23/6F/wKioL1M2P7CCXQeSAAAh_j3aqdY319.png" target="_blank"></a>

   5、為了消除疑惑,再ping一下網站吧,看看解析的到底是不是防火牆的外網IP位址

<a href="http://s3.51cto.com/wyfs02/M01/23/6F/wKioL1M2QHyCwKOaAAAqfGDwS3U681.png" target="_blank"></a>

iptables之二:nat安全架構

本文轉自 nmshuishui 51CTO部落格,原文連結:http://blog.51cto.com/nmshuishui/1386421,如需轉載請自行聯系原作者