基於Linux系統的包過濾防火牆(3)(轉)

amyz發表於2007-08-13
基於Linux系統的包過濾防火牆(3)(轉)[@more@]

  第3章、包過濾防火牆配置舉例

  3.1 建立包過濾防火牆

  3.1.1網路結構

  本節為一個的網路結構建立一個包過濾防火牆。

  這個網路結構假設內部網有有效的Internet地址。為了將內部網段198.168.80.0/24與Internet隔離,在內部網路和 Internet之間使用了包過濾防火牆。防火牆的網介面是eth1(198.168.80.254),防火牆的Internet介面是eth0 (198.199.37.254)。加外,內網中有3臺伺服器對外提供服務。分別為:

  → WWW伺服器:IP地址為198.168.80.251

  → FTP伺服器:IP地址為198.168.80.252

  → E-mail伺服器:IP地址為198.168.80.253

  3.1.2 防火牆的建立過程

  本例主要是對內部的各種伺服器提供保護。下面採用編輯並執行可執行指令碼的方法建立此防火牆。具本過程如下:

  #!/sbin/bash

  #在螢幕上顯示資訊

  echo "Starting iptables rules..."

  #開啟核心轉發功能

  echo "1">;/proc/sys/net/ipv4/ip_forward

  #定義變數

  IPT=/sbin/iptables

  WWW-SERVER=198.168.80.251

  FTP-SERVER=198.168.80.252

  EMAIL-SERVER=198.168.80.253

  IP_RANGE="198.168.80.0/24"

  #重新整理所有的鏈的規則

  $IPT -F

  #首先禁止轉發任何包,然後再一步步設定允許透過的包

  #所以首先設定防火牆FORWARD鏈的策略為DROP

  $IPT -P FORWARD DROP

  #下面設定關於伺服器的包過濾規則

  #由於伺服器/客戶機互動是雙向的,所以不僅僅要設定資料包

  #出去的規則,還要設定資料包返回的規則

  #

  #(1)WWW服務

  #服務埠為80,採用tcp或udp協議

  #規則為eth0=>;允許目的為內部網WWW伺服器的包

  $IPT -A FORWARD -p tcp -d $WWW-SERVER-dport www -i eth0 -j ACCEPT

  #

  #(2)FTP服務

  #服務埠為21,資料埠20

  #FTP的傳輸模式有主動和被動之分,FTP服務採用tcp協議

  #規則為:eth0=>;僅允許目的為內部網ftp伺服器的包

  $IPT -A FORWARD -p tcp -d $FTP-SERVER -dport ftp -i eth0 -j ACCEPT

  #

  # (3)EMAIL服務

  #包含兩個協議,一個是smtp,另一個是pop3

  #出於安全性考慮,通常只提供對內的pop3服務

  #所以在這裡我們只考慮對smtp的安全性問題

  #smtp埠為25,採用tcp協議

  #規則為etho=>;僅允許目的為E-mail伺服器的smtp請求

  $IPT -A FORWARD -p tcp -d $EMAIL-SERVER-dport smtp -i eth0 -j ACCEPT

  #

  # 2.下面設定針對Internet客戶的過濾規則

  #本例中防火牆位於閘道器的位置,所以主要是防止來自Internet的攻擊

  #不能防止來自Intranet的攻擊

  #假如網路中的伺服器都是基於Linux的,也可以在每一部伺服器上設定

  #相關的過濾規則來防止來自Internet的攻擊

  #對於Internet對Intranet客戶的返回包,定義如下規則

  #

  #(1)允許Intranet客戶採用被動模式訪問Internet的FTP伺服器

  $IPT -A FORWARD -p tcp -s 0/0 --sport ftp-data -d $IP_RANGE -i eth0 -j ACCEPT

  #

  #(2)接收來自Internet的非連線請求tcp包

  $IPT -A FORWARD -p tcp -d 198.168.80.0/24 ! --syn -i eth0 -j ACCEPT

  #

  #(3)接收所有udp包,主要是針對oicq等使用udp的服務

  $IPT -A FORWARD -p udp -d 198.168.80.0/24 -i eth0 -j ACCEPT

  #

  #3.然後接受來自整個Intranet的資料包過濾,我們定義如下規則

  $IPT -A FORWARD -s 198.168.80.0/24 -i eth1 -j ACCEPT

  #

  #處理ip碎片

  #接受所有的ip碎片,但採用limit匹配擴充套件對其單位時間可以透過的

  #ip碎片數量進行限制,以防止ip碎片攻擊

  $IPT -A FORWARD -f -m limit-limit 100/s-limit-burst 100 -j ACCEPT

  #說明:對不管來自哪裡的ip碎片都進行限制,允許每秒透過100個ip碎片

  #該限制觸發的條件是100個ip碎片

  #

  #設定icmp包過濾

  #ipmp包通常用於網路測試等,故允許所有的icmp包透過

  #但是駭客常常採用icmp進行攻擊,如ping of death等

  #所以我們採用limit匹配擴充套件加以限制

  $IPT -A FORWARD -p icmp -m limit-limit 1/s-limit-burst 10 -j ACCEPT

  #說明:對不管來自哪裡的icmp包都進行限制,允許每秒透過一個包

  #該限制觸發的條件是10個包

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-955581/,如需轉載,請註明出處,否則將追究法律責任。

相關文章