歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 輕松掌握——圖形簡釋iptables防火牆

輕松掌握——圖形簡釋iptables防火牆

日期:2017/2/27 9:30:36   编辑:更多Linux
  一般Linux防火牆(iptalbes)的運用無非是用nat 表(PREROUTING、OUTPUT、POSTROUTING)和filter表(FORWARD、INPUT、OUTPUT)。我們只有知道了數據的流向才能正確的配置防火牆。現用一個相對比較直觀的圖形解釋數據的走向。(此處只作最基本的iptables數據流走向說明。)  

  上圖是你的家,藍色的圈是你家院子,有兩扇大門①⑥進出,你家有兩個房間,分別為eth0和 eth1房間,每個房間有兩個門可以進出②③④⑤。旁邊是張三和李四的家,張三家和李四家之間的往返必須要過你家院子。  現假設,eth0網卡IP為:192.168.5.1鏈接內網,eth1網卡IP為:218.100.100.111鏈接互連網。  再假設,“張三家”為一個局域網,“李四家”為互連網。進我家院子用PREROUTING,出我家院子用FORWARD,進我家門用INPUT,出我家門用OUTPUT。(當我們的操作是征對服務器本身而言的話,如SSH操作,此時肯定會用到PREROUTING、INPUT和OUTPUT,當數據只是通過服務器去訪問別的機器時會用到PREROUTING和FORWARD。)  又假設,默認這六個門都是關的。生成如下代碼。  ###########################################################################  *nat  ################################  :PREROUTING DROP [0:0]  :OUTPUT DROP [0:0]  :POSTROUTING DROP [0:0]  ################################  -F  -Z  -X  ### 以後要新增語句請在此處增加。  -L –v  COMMIT  ################################################  *filter  ##############################  :INPUT DROP [0:0]  :FORWARD DROP [0:0]  :OUTPUT DROP [0:0]  ##############################  -F  -Z  -X  ### 以後要新增語句請在此處增加。  -L –v  COMMIT  ##########################################################################    1、 局域網用戶通過服務器共享上網    (即從張三家到李四家)  1)首先進①號門,再從⑥號門走出。  -A PREROUTING –p tcp --dport 80 –j ACCEPT #允許TCP 80端口通過服務器  -A FORWARD –p tcp --dport 80 –j ACCEPT #允許TCP80 端口轉發  -A FORWARD –p tcp --sport 80 –j ACCEPT #允許接收對方為TCP80端口反回的信息  2)其次,由於我們上網打的是域名,為此有一個公網DNS服務器為我們服務,那當然也要允許內網機器與DNS服務器的數據轉發。DNS用UDP 53或者 TCP 53端口。兩者用其一個就行。  -A PREROUTING –p udp --dport 53 –j ACCEPT  -A FORWARD –p udp --dport 53 –j ACCEPT  -A FORWARD –p udp --sport 53 –j ACCEPT  3)再次,由於局域網的地址在公網上是不被允許的,所以在出公網前應該把其地址轉為服務器地址進行偽裝。  -A POSTROUTING –s 192.168.5.0/24 –j SNAT –to 218.100.100.111    2、 允許局域網和公網可以訪問服務器的SSH    假設SSH采用默認端口TCP 22 。此要求相當於要進我的家的TCP 22號門,為此我們首先要進我家院子,然後再進我家門,最後走出我家門這樣的過程。此操作是征對服務器本身的操作。  -A PREROUTING –p tcp --dport 22 –j ACCEPT  -A INPUT –p tcp --dport 22 –j ACCEPT  -A OUTPUT –p tcp --sport 22 –j ACCEPT    3、 允許內網機器可以登錄MSN和QQ。    (MSN和QQ默認是不允許登錄的)QQ一般來說可以從TCP 80、8000、443及UDP 8000、4000登錄,而MSN可以從TCP 1863、443登錄。我們登錄MSN和QQ的過程就象上網一樣,也是去訪問遠程服務器的指定端口,故而我們只用數據轉發即可。  -A PREROUTING –p tcp --dport 1863 –j ACCEPT  -A PREROUTING –p tcp --dport 443 –j ACCEPT  -A PREROUTING –p tcp --dport 8000 –j ACCEPT  -A PREROUTING –p udp --dport 8000 –j ACCEPT  -A PREROUTING –p udp --dport 4000 –j ACCEPT  -A FORWARD –p tcp --dport 1863 –j ACCEPT  -A FORWARD –p tcp --sport 1863 –j ACCEPT  -A FORWARD –p tcp --dport 443 –j ACCEPT  -A FORWARD –p tcp --sport 443 –j ACCEPT  -A FORWARD –p tcp --dport 8000 –j ACCEPT  -A FORWARD –p tcp --sport 8000 –j ACCEPT  -A FORWARD –p udp --dport 8000 –j ACCEPT  -A FORWARD –p udp --sport 8000 –j ACCEPT  -A FORWARD –p udp --dport 4000 –j ACCEPT  -A FORWARD –p udp --sport 4000 –j ACCEPT    4、 讓內網機器可以收發郵件。    接收郵件是訪問遠程服務器的TCP 110端口,發送郵件是訪問TCP25端口。用數據轉發即可。  -A PREROUTING –p tcp --dport 110 –j ACCEPT  -A PREROUTING –p tcp --dport 25 –j ACCEPT  -A FORWARD –p tcp --dport 110 –j ACCEPT  -A FORWARD –p tcp --sport 110 –j ACCEPT  -A FORWARD –p tcp --dport 25 –j ACCEPT  -A FORWARD –p tcp --sport 25 –j ACCEPT    5、 內部機器對外發布WEB。    要把內網機器192.168.5.179的WEB對外發布的話,相當於是從外網訪問內網。與第1步操作的局域網共享上網相同,只是訪問的方向改變了。不是從內網訪問外網,而是從外網訪問內網。  當公網訪問服務器218.100.100.111時,防火牆把它映射到內網的192.168.5.179的TCP80上。當內網機器訪問服務器218.100.100.111時,防火牆把它映射到內網的192.168.5.179的TCP80上。  -A PREROUTING –i eth0 –p tcp –d 218.100.100.111 --dport 80 –j DNAT --to-destination 192.168.5.179:80  -A PREROUTING –i eth1 –p tcp –d 218.100.100.111 –dport 80 –j DNAT –to-destination 192.168.5.179:80  (以上兩句必須寫在 –A PREROUTING –p tcp --dport 80 –j ACCEPT 前面。)  TCP 80端口的轉發在第1步就已做過,此處就不用重復制作了。另外在  -A POSTROUTING –s 192.168.5.0/24 –j SNAT –to 218.100.100.111 之後加上一句:  -A POSTROUTING –p tcp --dport 80 –j ACCEPT  為什麼要加這句話呢,我的理解是這樣的,  公網訪問 http://218.100.100.111時:(假設公網上用戶的IP為199.199.199.199,端口12345為隨機的產生的。)  數據源 : ip:199.199.199.199 sport:12345  數據目標: ip:218.100.100.111 dport 80  此時,通過-A PREROUTING –i eth0 –p tcp –d 218.100.100.111 --dport 80 –j DNAT --to-destination 192.168.5.179:80 告訴199.199.199.199,您要訪問的真正地址應該是192.168.5.179:80,然後我們通過-A POSTROUTING –p tcp --dport 80 –j ACCEPT 目標地址218.100.100.111:80偽裝成 192.168.5.179:80 。  數據源 : ip:199.199.199.199 sport:12345  數據目標: ip:192.168.5.179 dport 80    當192.168.5.179返回數據時:  數據源 : ip:192.168.5.179 sport:80  數據目標: ip:199.199.199.199 dport 12345  數據經過 -A POSTROUTING –s 192.168.5.0/24 –j SNAT –to 218.100.100.111 後,  數據源 : ip:218.100.100.111 sport:80  數據目標: ip:199.199.199.199 dport 12345    6、 完整的iptables配置    ###########################################################################  *nat  ################################  :PREROUTING DROP [0:0]  :OUTPUT DROP [0:0]  :POSTROUTING DROP [0:0]  ################################  -F  -Z  -X  -A PREROUTING –i eth0 –p tcp –d 218.100.100.111 --dport 80 –j DNAT --to-destination 192.168.5.179:80  -A PREROUTING –i eth1 –p tcp –d 218.100.100.111 --dport 80 –j DNAT –to-destination 192.168.5.179:80  -A PREROUTING –p tcp --dport 80 –j ACCEPT  -A PREROUTING –p udp --dport 53 –j ACCEPT  -A PREROUTING –p tcp --dport 22 –j ACCEPT  -A PREROUTING –p tcp --dport 1863 –j ACCEPT  -A PREROUTING –p tcp --dport 443 –j ACCEPT  -A PREROUTING –p tcp --dport 8000 –j ACCEPT  -A PREROUTING –p udp --dport 8000 –j ACCEPT  -A PREROUTING –p udp --dport 4000 –j ACCEPT  -A PREROUTING –p tcp --dport 110 –j ACCEPT  -A PREROUTING –p tcp --dport 25 –j ACCEPT  -A POSTROUTING –s 192.168.5.0/24 –j SNAT –to 218.100.100.111  -A POSTROUTING –p tcp --dport 80 –j ACCEPT  -L –v  COMMIT  ################################################  *filter  ##############################  :INPUT DROP [0:0]  :FORWARD DROP [0:0]  :OUTPUT DROP [0:0]  ##############################  -F  -Z  -X  -A INPUT –p tcp --dport 22 –j ACCEPT  -A OUTPUT –p tcp --sport 22 –j ACCEPT  -A FORWARD –p tcp --dport 80 –j ACCEPT  -A FORWARD –p tcp --sport 80 –j ACCEPT  -A FORWARD –p udp --dport 53 –j




Copyright © Linux教程網 All Rights Reserved