iptables防火牆與NAT服務

iptables防火牆與NAT服務
一.防火牆的概述
1.簡介
(1)設置在不一樣的網絡或網絡安全域之間的一系列部件的組合,它能加強機構內部網絡的安全性
(2)經過審查通過每個數據包,判斷它是否有相匹配的過濾規則,根據規則前後順序一一進行比較,直到知足其中的一條規則爲止,而後依據控制機制作出相應的動做,若都不能知足,則將數據包丟棄,從而保護網絡安全。
(3)能夠是一臺路由器,也能夠是一臺或一組主機構成,它一般被放置在公共網絡入口處,全部內部外部網絡通訊數據包都必須通過防火牆,接受檢查,只有符合安全規則的數據才容許經過。
(4)使用防火牆實現功能
A.能夠保護易受攻擊的服務
B.控制內外網絡之間網絡系統的訪問
C.集中管理內網的安全性,下降管理成本
D.提升網絡保密性和私有性
E.記錄網絡使用狀態,爲安全規劃和網絡維護提供依據.(根據圖示講解)

2.防火牆的分類
(1)包過濾防火牆
   優勢:速度快;
   缺點:一旦被攻破,對數據包源/目標地址與IP端口很容易僞造,常見有
        「IP地址欺騙」.
(2)代理服務型防火牆
   優勢:用戶請求訪問某站點,代理服務器就會替用戶去那個站點取回所
        需信息,再轉發給用戶,相對前面的防火牆,要安全不少.
   缺點:速度較慢

二.iptables簡介
   是一款免費的軟件,可代替高價的防火牆解決方案,完成封包過濾,封包重定向和網絡地址轉換NAT功能等.
三.iptables基礎
1.規則(rules):網管預約義條件,通常定義爲「若包頭符合這樣的條件,就這樣處理這個數據包」,這些規則分別指定了源地址、目標地址,傳輸協議(如:TCP UDP ICMP)和服務類型(如:HTTP FTP SMTP)等,當數據包與規則相匹配時,IPTABLES就根據規則所定義的方法來處理這些數據包,如放行(ACCEPT)、拒絕(REJECT)和丟棄(DROP)等,配置防火牆主要工做就是添加、修改和刪除這些規則。
2.鏈(chains):是數據包傳播路徑,每一條鏈其實就是衆多規則中的一個檢查清單

,每一條鏈中能夠有一條或多條規則,數據包到達一個鏈時,而後今後鏈中
第一條規則開始檢查.
3.表(tables):提供特定的功能,iptables內置了三個表
(filter/nat/mangle),分別用於實現包過濾、網絡地址轉換和包重構的
功能。
(1)filter表:主要用於過濾數據包,該表根據系統管理員預約義的一
組規則過濾符合條件的數據包,對於防火牆而言,主要利用在此表中指
定一系列規則來實現對數據包進行過濾操做,此表也是IPTABLES默認的
表,IPTABLES也是使用此表執行全部的命令,此表含了INPUT鏈(處理進
來的包),FORWARD鏈(處理轉發的數據包)和OUTPUT鏈(處理本地生成
的包),在此表中只容許對數據包進行接受、丟棄的操做,而沒法對數
據包進行更改。
(2)nat表:主要用於網絡地址轉換,能夠實現一對1、一對多、多對
多等轉換工做,IPTABLES使用此表實現共享上網功能,nat表含有
PREROUTING鏈(修改將要到來的數據包)、OUTPUT鏈(修改在路由前本
地生成的數據包)和POSTROUTING鏈(修改將要出去的數據包)。

(3)mangle表:主要用於對指定的包進行修改,由於一些特殊應用可能
須要去改寫數據包的一些傳輸特性,如:TTL等
4.iptables傳輸數據包的過程

     進入數據包                                 輸出數據包
   PREROUTING鏈      FORWORD鏈             POSTROUTING鏈
                轉發     
     進入本地
   INPUT鏈          內部處理過程           OUTPUT鏈

四.關閉系統防火牆
1.iptables命令格式
iptables [-t 表] – 命令 匹配 操做
(1)表選項
   用於指定命令應用於哪一個iptables內置表,共有filter/nat/mangle表
(2)命令選項:用於指定iptables執行方式,有插入/刪除/添加規則等

    命令                           說明
-P 或 --policy<鏈名>          定義默認策略
-L 或 --list<鏈名>            查看IPTABLES規則列表
-A 或 --append<鏈名>          在規則列表最後一行增長1條規則
-I 或 --insert<鏈名>          在指定位置插入1條規則
-D 或 --delete<鏈名>          從規則列表中刪除1條規則
-R 或 --replace<鏈名>         替換規則列表中的某條規則
-F 或 --flush<鏈名>           刪除表中全部規則
-Z 或 --zero<鏈名>            將表中數據包計數器/流量計數據歸零

(3)匹配選項:指定數據包與規則匹配所應具備的特徵,包括源地址/目的地址/傳輸協議和端口號等.


             匹配                       說明
-i或 --in-interface<網絡接口號> 指定包從哪一個網絡接口進入
-o或 --out-interface <網絡接口號> 指定包從哪一個網絡接口輸出
-p或 --proto協議類型              指定數據包匹配的協議
-s或 --source<源地址或子網> 指定數據包匹配的源地址
--sport<源端口號>   指定數據包匹配的源端口號,可用「起始端口:結
                     束端口」的格式指定一個範圍
-d或--destination<目標地址或子網> 指定數據包匹配的目標地址
--dport<目標端口號>   指定數據包匹配的目標端口號,可用「起始端口:
                       結束端口」的格式指定一個範圍

(4)動做選項:指定當數據包與規則匹配時,應該作什麼操做

動做          說明
ACCEPT      接受數據包
DROP        丟棄數據包
REDIRECT    將包從新轉向到本機或另外一臺主機的某個端口,一般用此實
            現透明代理或對外開放內網的某些服務
SNAT        源地址轉換,可改變數據包源地址
DNAT        目標地址轉換,可改變數據包目標地址
MASQUERADE IP假裝,只能用於ADSL的NAT
LOG         日誌功能,爲排錯

2.iptables的使用

(1)定義默認策略
當數據包不符合鏈中任一條規則時,iptables將根據此鏈預先定義的默認
策略來處理數據包,默認策略定義以下:
格式:iptables [-t 表名] <-p> <鏈名> <動做>
說明:A.默認爲filter表,可指定到nat或mangle中
     B. <-p> 定義默認策略
     C.<鏈名> 指默認策略將應用於哪一個鏈,可以使用  
              INPUT/OUTPUT/FORWARD
     D.<動做> 將包處理狀況
例一:將filter表INPUT鏈的默認策略定義爲接受數據包
     iptables –P INPUT ACCEPT
例二:將nat表OUTPUT鏈默認策略定義爲丟棄數據包
     iptables –t nat –P OUTPUT DROP


小技巧:對沒有配置規則的用戶,先拒絕全部數據包,而後再根據須要
        對一些包放行。
方法: iptables –P INPUT DROP
       iptables –P FORWARD DROP
       iptables –P OUTPUT ACCEPT

(2)查看iptables規則
格式: iptables [-t 表名] <-L> [鏈名]

如:查看nat表全部鏈的規則
    iptables –t nat –L
(3)增長/插入/刪除/替換規則
格式: iptables [-t 表名] <-A|I|D|R>鏈名 [規則編號] [-i|o網卡
        名稱] [-p協議類型] [-s源IP地址|源子網] [--sport源端口號
        ] [-d目標IP地址|目標子網] [--dport目標端口號] <-j動做>
例一:爲filter表的INPUT鏈添加一條規則,規則的內容是未來自IP地址
爲192.168.1.200這臺主機的數據包都丟棄,而後查看filter表的INPUT鏈
規則列表.
   iptables –t filter –A INPUT –s 192.168.1.200 –j DROP
   iptables –t filter –L INPUT
補充:若是,規則的內容是接受這臺主機的包,只需將DROP改成ACCEPT

例二:在filter表的INPUT鏈規則列表中的第2條規則前插入一條規則,內
容爲禁止192.168.2.0這個子網裏全部主機訪問TCP協議的80端口.
iptables –t filter –I INPUT 2 –s 192.168.2.0/24 –p tcp –dport
    80 –j DROP
iptables –t filter –L INPUT
例三.刪除filter表的INPUT鏈規則列表中第3條規則,而後查看
iptables –t filter –D INPUT 3
iptables –t filter –L INPUT
例四:替換filter表的INPUT鏈規則列表中的第2條規則,爲禁止
192.168.3.0這個子網主機訪問TCP協議80端口,而後查看
iptables –t filter –R INPUT 2 –s 192.168.3.0/24 –p tcp –dport
    80 –j DROP
iptables –t filter –L INPUT
(4)清除規則和計數器
格式:iptables [-t 表名] <-F|Z>
例如:A.刪除filter表中全部規則
       iptables -F

B.將表中數據包計數器和流量計數器歸零
     iptables –Z
C.刪除nat表中全部規則
     iptables –t nat –F
五.NAT服務
1.什麼是私有IP
10.0.0.0-10.255.255.255
172.16.0.0-172.31.255.255
192.168.0.0-192.168.255.255
2.什麼是NAT
是將一個地址域(如:私有網絡)映射到另外一個地址域(如:INTERNET)的標
準方法.
3.NAT的工做原理
(1)靜態網絡地址轉換
A.定義:地址轉換必須依賴手工創建的內外部地址映射表來運行.
B.原理

                                         192.168.16.10

INTERNET          NAT服務器              192.168.16.11  
                  NAT映射表
              公網IP    內部私有IP       192.168.16.12
         202.96.2.8   192.168.16.10
         202.96.2.9   192.168.16.11
         202.96.2.10 192.168.16.12
               一對一的轉換

(2)動態網絡地址轉換
A.定義:地址轉換是由NAT服務器來完成

B.原理

                                         192.168.16.10

INTERNET          NAT服務器              192.168.16.11  
            NAT映射表
    公網IP            內部私有IP         192.168.16.12
202.96.2.8:2320 192.168.16.10:2320
202.96.2.8:2879 192.168.16.11:2879
202.96.2.8:3012 192.168.16.12:3012
     一對多的轉換(端口一致性)


(3)網絡地址端口轉換(NAPT)
A.定義:不但會改變通過這個NAT設備的IP數據報IP地址,還會改變IP數據
報的TCP/UDP端口
B.原理                                      192.168.16.10

INTERNET          NAPT服務器              192.168.16.11  
            NAT映射表
    公網IP            內部私有IP         192.168.16.12
202.96.2.8:3200 192.168.16.10:2320
202.96.2.8:1784 192.168.16.11:2879
202.96.2.8:1579 192.168.16.12:3012
     一對多的轉換(端口隨機性)
六.使用iptables實現NAT服務
1.配置兩塊網卡
(1)eth0爲公網IP
(2)eth1爲私有IP
(3)配置DNS與網關
(4)重啓網絡服務

2.在命令行輸入命令
(1)echo 1 > /proc/sys/net/ipv4/ip_forward
   表示打開內核的路由功能,如關閉將1改成0就能夠了.
(2)iptables –t nat –A POSTROUTING –o eth0 –j SNAT --to
                                               218.104.71.45
注:能夠寫到文件中作成腳本,而後再放入到/etc/rc.d/rc.local中,讓其與系統一塊兒啓動,還得要求把nat/filter表規則與計數器清除(F|Z)
3.客戶端配置
(1)IP 地址   (2)網關 (3)DNS
七.IPTABLES技巧實例
1.禁止客戶訪問不健康的網站
例1:添加一條規則,禁止用戶訪問域名爲www.sohu.com網站
    iptables –I FORWARD –d www.sohu.com -j DROP

例2:禁止用戶訪問IP爲202.17.61.4的網站
    iptables –I FORWARD –d 202.17.61.4 -j DROP

2.禁止一些客戶機上網
例1:添加一條規則禁止IP爲192.168.1.200的客戶機上網
    iptables –I FORWARD –s 192.168.1.200 –j DROP
例2:添加一條規則禁止子網192.168.1.0/24的客戶機上網
    iptables –I FORWARD –s 192.168.1.0/24 –j DROP
3.禁止客戶端訪問一些服務
例1:禁止192.168.1.0子網裏全部客戶機使用FTP協議下載
iptables –I FORWARD –s 192.168.1.0/24 –p tcp --dport 21 –j DROP
例2:禁止192.168.1.0子網裏全部客戶機使用TELNET協議
iptables –I FORWARD –s 192.168.1.0/24 –p tcp --dport 23 –j DROP
4.禁止使用ICMP協議
例1:禁止外網用戶經過ICMP來PING你的NAT服務器外網接口
iptables –I INPUT –i eth0 icmp –j DROP
5.禁止客戶機使用QQ(QQ服務器不少)
iptables –I FORWARD –p tcp --dport 8000 –j DROP
iptables –I FORWARD –d tcpconn.tencent.com –j DROP

6.發佈內部網絡服務器到公網(端口映射技術)
例:發佈內網192.168.16.200主機的WEB服務到INTERNET上,外網用戶經過訪問NAT服務器的外網卡接口的TCP協議80端口來訪問.
iptables –t nat –I PREROUTING –i eth0 –p tcp --dport 80 –j DNAT
      --to-destination 192.168.16.200:80

7.經過IPTABLES禁止外網訪問個人NAT服務器,除TCP的80口外.
iptables –A INPUT –i eth0 –s 0.0.0.0/0 –p icmp –j DROP
iptables –A INPUT –i eth0 –s 0.0.0.0/0 –p tcp --dport !80 –j DROP

8.只容許內網用戶訪問TCP/UDP的53與80端口
iptables –t nat –A POSTROUTING –p tcp –m multiport --port 53,80
   -s 192.168.168.0/24 –o eth0 –j SNAT --to 218.104.71.43


補充:一個R9下的實用的NAT配置方案:

echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ip_tables
modprobe ip_nat_ftp/ip_nat_irc/ip_conntrack
modprobe ip_conntrack_ftp/ip_conntrack_irc
iptables –F
iptables –X
iptables –Z
iptables –F –t nat
iptables –X –t nat
iptables –Z –t nat
iptables –P INPUT ACCEPT
iptables –P OUTPUT ACCEPT
iptables –P FORWARD ACCEPT
iptables –t nat –P PREROUTING ACCEPT
iptables –t nat –P POSTROUTING ACCEPT
iptables –t nat –P OUTPUT ACCEPT
iptables –t nat –A POSTROUTING –o eth0 –s 192.168.186.0/24 –j SNAT
                                --to 218.104.71.45
重要說明:若是爲ADSL環境,把eth0改成ppp0;SNAT…改成MASQUERADE
安全

相關文章
相關標籤/搜索