規則--顧名思義就是規矩和原則,和現實生活中的事情是同樣的,國有國法,家有家規,因此要遵紀守法的嘛。固然在防火牆上的規則,在內核看來,規則就是決定如何處理一個包的語句。若是一個包符合全部的條件,咱們就用相應的處理動做來處理。書寫規則的語法格式爲:安全
iptables [-t table] command chains [creteria] -j actionbash
-t table就是表名,filter/nat/mangle三個表中的一個,默認是filter表服務器
command告訴程序如何作,好比:插入一個規則,仍是刪除等網絡
chains 鏈,有五個,PREROUTING POSTROUTING INPUT OUTPUT FORWARDapp
action 處理動做,有ACCEPT DENY DROP REJECT SNAT DNATtcp
理一下思路工具
下面一點點的說
1、Tables
選項-t用來指定用哪一個表,它能夠是下面的任何一個,默認的是filter表
2、COMMANDS
command指定iptables對咱們提交的規則要作什麼樣的操做。這些操做多是在某個表裏增長或刪除一些東西,或其餘的動做。一下是iptables可用的command(如不作說明,默認表是filter)
和命令結合經常使用的選項
3、chains
簡單說一下五個鏈的做用:
PREROUTING 是在包進入防火牆以後、路由決策以前作處理
POSTROUTING 是在路由決策以後,作處理
INPUT 在包被路由到本地以後,但在出去用戶控件以前作處理
OUTPUT在去頂包的目的以前作處理
FORWARD在最初的路由決策以後,作轉發處理
4、匹配條件
4.1 基本匹配
4.2 隱含擴展匹配
這種匹配操做是自動的或隱含的裝入內核的。例如使用-p tcp時,不須要再裝入任何東西就能夠匹配只有IP包纔有的特色。隱含匹配針對三種不一樣的協議,即TCP UDP ICMP。它們分別有一套適用於相應協議的判斷標準
TCP匹配 只能匹配TCP包的細節,必須有-p tcp做爲前提
--sport port 基於TCP包的源端口來匹配包
--dport port 基於TCP包的目的端口來匹配包
--tcp-flags tcp標誌位 有兩個參數列表。第一個是指定要檢查的標識位;第二個是指定爲1的標識位
UDP匹配
--sprot port
--dport port
ICMP匹配
--icmp-type
8 request 請求
0 reply 回覆 響應
參考:http://www.cnblogs.com/itech/archive/2011/08/23/2150445.html
1、Netfilter規則表—filter nat mangle
filter,用於路由網絡數據包。是默認的,也就是說若是沒有指定-t參數,當建立一條新規則時,它會默認存放到該表內。
INPUT 網絡數據包流向服務器
OUTPUT 網絡數據包從服務器流出
FORWARD 網絡數據包經服務器路由
nat,用於NAT表.NAT(Net Address Translation )是一種IP地址轉換方法。
PREROUTING 網絡數據包到達服務器時能夠被修改
OUTPUT 網絡數據包由服務器流出
POSTROUTING 網絡數據包在即將從服務器發出時能夠被修改
mangle,用於修改網絡數據包的表,如TOS(Type Of Service),TTL(Time To Live),等
INPUT 網絡數據包流向服務器
OUTPUT 網絡數據包流出服務器
FORWARD 網絡數據包經由服務器轉發
PREROUTING 網絡數據包到達服務器時能夠被修改
POSTROUTING 網絡數據包在即將從服務器發出時能夠被修改
1.配置Iptables
當數據包進入服務器時,Linux Kernel會查找對應的鏈,直到找到一條規則與數據包匹配。若是該規則的target是ACCEPT,就會跳過剩下的規則,數據包會被繼續發送。若是該 規則的target是DROP,該數據包會被攔截掉,kernel不會再參考其餘規則。
Note:若是從始至終都沒有一條規則與數據包匹配,並且表末尾又沒有drop all的規則,那末該數據包會被accept。Cisco則相反,在表末尾會因含deny all的規則。
iptables [-t tables] command option parameter target
-A 在鏈尾添加一條規則
-C 將規則添加到用戶定義鏈以前對其進行檢查
-D 從鏈中刪除一條規則
-E 重命名用戶定義的鏈,不改變鏈自己
-F 清空鏈,刪除鏈上的全部規則-I 在鏈中插入一條規則
-L 列出某個鏈上的規則,如iptables –L INPUT 列出INPUT鏈的規則
-N 建立一個新鏈
-P 定義某個鏈的默認策略
-R 替換鏈上的某條規則
-X 刪除某個用戶相關的鏈
-Z 將全部表的全部鏈的字節和數據包計數器清零
2.) Iptables的命令參數
-p -–protocol
應用於數據包的協議類型,能夠是TCP UDP ICMP或ALL。!也可以使用。
當使用-p tcp時,還可以使用其餘能夠選項,以便容許進一步定義規則。選項包括:
--sport 容許指定匹配數據包源端口.port1:port ,表示port1和port2之間的全部端口
--dport 目的端口,和--sport雷同。
當使用-p !udp時,也有特殊的選項供使包括:
--sport,--dport,與-p tcp 相同,只不過用以用於UDP包。
使用-p icmp參數時,只有一個選項可用。
--icmp-type,容許在過濾規則中指定icmp類型。
-s –-source 指定數據包的源地址。該參數後跟一個IP地址,一個帶有sub-net mask的網絡地址,或一個主機名。(不建議使用主機名)
-d,--destination 數據包的目的地址,同-s.
-j,--jump 用於指定一個target,告訴規則將該匹配的數據包發送到該 target。Target能夠是ACCEPT,DROP,QUEUE,RETURN.若是沒有-j,那麼不會對數據包進行任何操做,只是將計數器加1。
-o --out-interface,對於OUTPUT FORWARD POSTROUTING鏈,該參數指定數據包離開服務器時使用的端口。
3.) Iptables的命令target
建立規則的最後一步是指定Iptables對數據包的操做。只要某一規則匹配該數據包,就不會再有別的規則的操做。內建的target有:ACCEPT DROP QUEUE RETURN。
ACCEPT:容許數據包經過,到達目的地。DROP:拒絕數據包經過,丟棄該包。
QUEUE:將數據包發送回到用戶應用程序處理。
RETURN:再也不根據當前鏈的其餘規則來檢查數據包,而是直接返回,繼續被髮送到其目的地址,或下一個鏈。
2.應用Iptables規則示例
容許WWW
iptables –A INPUT –p tcp –dport 80 –j ACCEPT
該規則被添加到filter表的INPUT鏈,容許目的端口是80的數據包。
在內部接口上容許DHCP
iptables –A INPUT –i eth0 –p tcp - - sport 68 - -dport 67 ACCEPT
iptables –A INPUT –i eth0 –p ucp - -sport 68 - -dport 67 ACCEPT
以上同時容許TCP和UDP協議。
3.保存和恢復Iptables
保存Iptables
使用iptables-save可將現行的iptables規則保存,
iptables-save > iptables保存路徑,如# iptables-save > /etc/iptables.up.rule
恢復Iptables
使用iptables-restore 可從配置文檔恢復iptables表到現行iptables表.
iptables-restore < /etc/iptables.up.rule
2、Ubuntu Server中的Iptables
Ubuntu Server6.06中已經默認安裝iptables,版本是1.3.3.默認狀態是關閉。
經過修改/etc/network/interfaces可將iptables打開:
auto lo
Iface lo inet loopback
auto eth0
iface eth0 inet dhcp
#添加如下內容
pre-up iptables-restore < /etc/iptables.up.rule
#call the restored rule when active the eth0
post-down iptables-save > /etc/iptables.up.rule
#restore the iptables rule when shutdown the interface eth0
而後從新激活eth0便可。
另外,可隨時修改/etc/iptables.up.rule配置文件,來更改iptables的規則。Iptables.up.rule格式以下:
#Generated by iptables-save V1.3.3 on Tue Jul 31 14:18:44 2007
*filter
:INPUT ACCEPT [73:8213]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [8:825]
-A INPUT –i lo –p icmp –j DROP
-A INPUT –i eth0 –p icmp –j DROP
COMMIT
#Completed on Tue Jul 31 14:10:44 2007
行與行之間不能有空行。
三.Summary
iptables錶鏈中每條規則的順序很重要,若是首條是accept all,那末全部的數據包都會被容許經過firewall,所以應當適當的安排規則順序。
一般的法則是:拒絕全部 容許少數.
參考:http://blog.chinaunix.net/uid-20520466-id-1655741.html
Chain INPUT (policy ACCEPT)
target prot opt source destination
target prot opt source destination
target prot opt source destination
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
能夠看出我在安裝linux時,選擇了有防火牆,而且開放了22,80,25端口.
Chain INPUT (policy ACCEPT)
target prot opt source destination
target prot opt source destination
target prot opt source destination
[root@tp ~]# iptables -X 清除預設表filter中使用者自定鏈中的規則
Chain INPUT (policy ACCEPT)
target prot opt source destination
target prot opt source destination
target prot opt source destination
上面的意思是,當超出了IPTABLES裏filter表裏的兩個鏈規則(INPUT,FORWARD)時,不在這兩個規則裏的數據包怎麼處理呢,那就是DROP(放棄).應該說這樣配置是很安全的.咱們要控制流入數據包
若是作了郵件服務器,開啓25,110端口.
[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT
若是作了FTP服務器,開啓21端口
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(若是是OUTPUT DROP)
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
target prot opt source destination
SNAT all -- 192.168.0.0/24 anywhere to:211.101.46.235
target prot opt source destination
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
若是咱們想,好比阻止MSN,QQ,BT等的話,須要找到它們所用的端口或者IP,(我的認爲沒有太大必要)
[root@tp ~]# iptables -A INPUT -m state --state INVALID -j DROP
[root@tp ~]# iptables -A OUTPUT -m state --state INVALID -j DROP
[root@tp ~]# iptables-A FORWARD -m state --state INVALID -j DROP
容許全部已經創建的和相關的鏈接
[root@tp ~]# iptables-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# iptables-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@tp ~]# /etc/rc.d/init.d/iptables save
這樣就能夠寫到/etc/sysconfig/iptables文件裏了.寫入後記得把防火牆重起一下,才能起做用.
[root@tp ~]# service iptables restart
別忘了保存,不行就寫一部保存一次.你能夠一邊保存,一邊作實驗,看看是否達到你的要求,
Linux防火牆介紹
摘 要: 本文介紹了LINUX下經常使用的防火牆規則配置軟件Iptables;從實現原理、配置方法以及功能特色的角度描述了LINUX防火牆的功能
關鍵字: LINUX防火牆 Iptables Ipchains 包過濾
一 前言:
Linux 爲增長系統安全性提供了防火牆保護。防火牆存在於你的計算機和網絡之間,用來斷定網絡中的遠程用戶有權訪問你的計算機上的哪些資源。一個正確配置的防火牆能夠極大地增長你的系統安全性。防火牆做爲網絡安全措施中的一個重要組成部分,一直受到人們的廣泛關注。LINUX是這幾年一款異軍突起的操做系統,以其公開的源代碼、強大穩定的網絡功能和大量的免費資源受到業界的廣泛讚賞。LINUX防火牆實際上是操做系統自己所自帶的一個功能模塊。經過安裝特定的防火牆內核,LINUX操做系統會對接收到的數據包按必定的策略進行處理。而用戶所要作的,就是使用特定的配置軟件(如iptables)去定製適合本身的「數據包處理策略」。
二 防火牆 包過濾:對數據包進行過濾能夠說是任何防火牆所具有的最基本的功能,而LINUX防火牆自己從某個角度也能夠說是一種「包過濾防火牆」。在LINUX防火牆中,操做系統內核對到來的每個數據包進行檢查,從它們的包頭中提取出所須要的信息,如源IP地址、目的IP地址、源端口號、目的端口號等,再與已創建的防火規則逐條進行比較,並執行所匹配規則的策略,或執行默認策略。 值得注意的是,在制定防火牆過濾規則時一般有兩個基本的策略方法可供選擇:一個是默認容許一切,即在接受全部數據包的基礎上明確地禁止那些特殊的、不但願收到的數據包;還有一個策略就是默認禁止一切,即首先禁止全部的數據包經過,而後再根據所但願提供的服務去一項項容許須要的數據包經過。通常說來,前者使啓動和運行防火牆變得更加容易,但卻更容易爲本身留下安全隱患。經過在防火牆外部接口處對進來的數據包進行過濾,能夠有效地阻止絕大多數有意或無心地網絡攻擊,同時,對發出的數據包進行限制,能夠明確地指定內部網中哪些主機能夠訪問互聯網,哪些主機只能享用哪些服務或登錄哪些站點,從而實現對內部主機的管理。能夠說,在對一些小型內部局域網進行安全保護和網絡管理時,包過濾確實是一種簡單而有效的手段。
代理:LINUX防火牆的代理功能是經過安裝相應的代理軟件實現的。它使那些不具有公共IP的內部主機也能訪問互聯網,而且很好地屏蔽了內部網,從而有效保障了內部主機的安全。
IP假裝:IP假裝(IP Masquerade)是LINUX操做系統自帶的又一個重要功能。經過在系統內核增添相應的假裝模塊,內核能夠自動地對通過的數據包進行「假裝」,即修改包頭中的源目的IP信息,以使外部主機誤認爲該包是由防火牆主機發出來的。這樣作,能夠有效解決使用內部保留IP的主機不能訪問互聯網的問題,同時屏蔽了內部局域網。
Linux下的包過濾防火牆管理工具:
在2.0的內核中,採用ipfwadm來操做內核包過濾規則。
在2.2的內核中,採用ipchains來控制內核包過濾規則。
在2.4的內核中,採用一個全新的內核包過濾管理工具——iptables。
包過濾防火牆的工做原理:
使用過濾器。數據包過濾用在內部主機和外部主機之間,過濾系統是一臺路由器或是一臺主機。過濾系統根據過濾規則原則來決定是否讓數據包經過。
過濾的實現。數據包過濾通常使用過濾路由器來實現,這種路由器與普通的路由器有所不一樣。
包過濾防火牆的工做層次:
應用層 應用層
傳輸層 傳輸層
網絡層 數據 路由器 數據 網絡層
數據鏈路層 數據鏈路層 數據鏈路層
物理層 物理層 物理層
包過濾器操做的基本過程:
包過濾技術的優缺點
優勢:
對於一個小型的、不太複雜的站點,包過濾比較容易實現。
由於過濾路由器工做在IP層和TCP層,因此處理包的速度比代理服務器快。
過濾路由器爲用戶提供了一種透明的服務,用戶不須要改變客戶端的任何應用程序,也不須要用戶學習任何新的東西。
過濾路由器在價格上通常比代理服務器便宜。
缺點:
一些包過濾網關不支持有效的用戶認證。
規則表很快會變得很大並且複雜,規則很難測試。隨着表的增大和複雜性的增長,規則結構出現漏洞的可能性也會增長。
這種防火牆最大的缺陷是它依賴一個單一的部件來保護系統。
在通常狀況下,若是外部用戶被容許訪問內部主機,則他就能夠訪問內部網上的任何主機。
包過濾防火牆只能阻止一種類型的IP欺騙,即外部主機假裝內部主機的IP,對於外部主機假裝外部主機的IP欺騙卻不可能被阻止,並且它不能防止DNS欺騙。
在Linux系統上,支持包過濾的核心中有三個規則列表,這些列表稱爲防火牆鏈。三個鏈分別稱爲輸入鏈、輸出鏈和轉發鏈。當一個包經過以太網卡進來後,核心使用輸入鏈決定該包的取捨。若是該包沒有被丟棄,則核心要決定下面將向哪裏發送包,稱爲包的路由。若是要發給另外一個機器,核心經過轉發鏈來決定。最後,在包要被髮出以前,核心經過輸出鏈來作決定。一個鏈是一些規則的列表。每一個規則規定:若是包的包頭與規則相匹配,那麼對包進行相應的處理。若是該規則與包不匹配,則引入鏈中的下一個規則。最後,若是沒有要引入的規則,核心根據內置鏈策略決定如何作。在一個有安全意識的系統中,該規則一般告訴核心將包拒絕或丟棄。
在這先介紹Ipchains,以後再介紹Iptables。
Ipchains:
Ipchains 常用的命令行格式以下:Ipchains –A chain [–i interface] [–p protocol] [[!] -y][–s source-ip [port]] [-d destination-ip [port]] –j policy [-l]對各選項的說明以下表:-A <chain> 添加一規則到鏈尾。chain可爲input、output、forward。-i <interface> 指定本規則適用的網絡接口。一般有eth0、eth一、lo等。-p <protocol> 指定本規則適用的IP協議,如tcp、udp、icmp等。[!] –y -y代表tcp握手中的鏈接請求標誌位SYN; ! –y 表示對該請求的響應。-s src-ip [port] 指明數據包的源IP地址,port表示本規則適用的端口號。-d dst-ip [port] 指明數據包的目的IP地址及端口號。-j policy
; 指定本規則對匹配數據包的處理策略:ACCEPT、DENY或REJECT。-l 在系統日誌/var/log/messages中記錄與該規則匹配的數據包。
#ipchains –A input –s 201.202.203.58/32 www –p tcp –j DENY地址201.202.203.58送到www(HTTP)端口的任何TCP包都將被屏蔽。先建立一個名爲check的新鏈,而後再把全部發送到輸入鏈的包送到check鏈:#ipchains –N check#ipchains –A check –s 201.202.203.0/24 –j ACCEPT#ipchains –A check –s !201.202.203.0/24 –j DENY#ipchains –A input –j check系統會接受(只會接受)從201.202.203.0發送的全部軟件包,式中感嘆號(!)表明的意思是「非」,匹配「非201.202.203.0端口」。禁止telnet(端口23)鏈接:#ipchains –I forward –s 0.0.0.0 23 –j DENY
Iptables的規則要素:
指定表(table)
指定操做命令(command)
指定鏈(chains)
指定規則匹配器(matcher)
指定目標動做(target)
表。Iptables從其使用的3個表而得名,分別是filter、nat和mangle。對於包過濾防火牆只使用filter表。表filter是默認的表。
操做命令。包括添加、刪除、更新等。
鏈。對於包過濾防火牆可操做filter表中的INPUT鏈、OUTPUT鏈和FORWARD鏈。也能夠操做由用戶本身定義的自定義鏈。
規則匹配器。能夠指定各類規則匹配,如IP地址、端口、包類型等。
目標動做。當規則匹配一個包時,真正要執行的任務用目標標識。最經常使用的內置目標分別是:
ACCEPT表示容許包經過。
DROP表示被丟棄。
REJECT表示拒絕包,丟棄包的同時給發送者發送沒有接受的通知。
LOG表示包的有關信息被記錄入日誌。
TOS表示改寫包的ToS的值。
Iptables的語法一般能夠簡化爲:iptables[-t table]CMD[chain][rule-matcher][-j target]其中:table爲表名,CMD爲操做命令,chain爲鏈名,rule-matcher爲規則匹配器,target爲目標動做。
操做命令:
-A 或—append 在所選鏈的鏈尾加入一條或多條規則-D 或—delete 從所選鏈中刪除一條或多條匹配的規則-R 或—replace 在所選鏈中替換一條匹配的規則-I 或—insert 以給出的規則號在所選鏈中插入一條或多條規則。若是規則號是1,插入的規則在鏈的頭部-L 或—list 列出指定鏈的全部規則。若是沒有指定鏈,將列出全部鏈中的全部規則-F 或—flush 清除指定鏈和表中的全部規則。假如不指定鏈,那麼全部鏈都將被清空-N 或—new-chain 以給定的名字建立一條新的用戶自定義鏈。不能與已有的鏈同名-X 或—delete-chain 刪除指定的用戶定義鏈,必須保證鏈中的規則都不在使用時才能刪除鏈。若沒有指定鏈,則刪除全部的用戶鏈-P 或—policy 爲永遠鏈指定默認規則(內置鏈策略)。用戶定義鏈沒有缺省規則也是規則鏈中的最後一條規則,用-L命令顯時它在第一行顯示-C 或—check 檢查給定的包是否與指定鏈的規則相匹配-Z 或—zero 將指定鏈中全部的包字節記數器清零
規則匹配器:
-P,[!]protocol 指定要匹配的協議,能夠是tcp、udp、icmp、all。協議名前綴「!」爲邏輯非,表示除去該協議以外的全部協議。-s[!]address[/mask] 根據源地址或地址範圍肯定是否容許或拒絕數據包經過過濾器--sport[!]port[:port] 指定匹配規則的源端口或端口範圍。能夠用端口好,也能夠用/etc/services文件中的文字-d[!]address[/mask] 根據目的地址或地址範圍肯定是否容許或拒絕數據包經過過濾器--dport[!]port[:port] 指定匹配規則的目的端口或端口範圍。能夠用端口號,也能夠用/etc/services文件中的名字--icmp-type[1]typename 指定匹配規則的ICMP信息類型(可使用iptables –p icmp –h 查看有效的icmp類型名)
Iptables軟件包提供了兩個命令分別用於保存和恢復規則集。可使用命令轉儲在內存中的內核規則集。其中/etc/sysconfig/iptables是iptables守護進程調用的默認規則集文件:#/sbin/iptables-save>/etc/sysconfig/iptables要恢復原來的規則庫,需使用命令:#/sbin/iptables-restore</etc/sysconfog/iptables爲了使用得用iptables命令配置的規則在下次啓動機器時還能被使用,有兩種方法。
使用iptables得啓動腳本實現。Iptables的啓動腳本/etc/rc.d/init.d/iptables每次啓動時都使用/etc/sysconfig/iptables所提供的規則進行規則恢復,並可使用命令保存規則:#service iptables save
在自定義腳本中用iptables命令直接建立規則集。能夠直接用iptables命令編寫一個規則腳本,並在啓動時執行這個腳本。若規則腳本的文件名爲/etc/fw/rules,則能夠在啓動腳本/etc/rc.d/rc.local中加入的代碼:if[-x /etc/fw/rules];then /etc/fw/rules;fi;若是使用此種方式,建議使用ntsysv命令關閉系統的iptables守護進程。
創建包過濾防火牆
這個網絡結構假設內部網有有效的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
防火牆的創建過程
#!/sbin/bash在屏幕上顯示信息:echo "Starting iptables rules..."#開啓內核轉發功能echo "1">;/proc/sys/net/
ipv4/ip_forward#定義變量IPT=/sbin/iptablesWWW-SERVER=198.168.80.251FTP-SERVER=198.168.80.252EMAIL-SERVER=198.168.80.253IP_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,數據端口20FTP的傳輸模式有主動和被動之分,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
下面設置針對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
而後接受來自整個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個包
三 結束語:
對防火牆的不當配置可能形成安全漏洞。如處理TCP分段時,Ipchains須要查看包頭中的源端口、目的端口、ICMP代碼或「TCP SYN」標誌等信息,而這些信息只能在TCP分段的第一個IP包中才有。因而從第二個分段開始都不能匹配過濾規則。某些管理者將防火牆配置爲僅對第一個分段進行處理。一般,一個TCP鏈接的第一個TCP分段被防火牆阻擋後,其餘的TCP分段被認爲不會產生安全性問題,由於在目的主機上因爲缺乏第一個分段而沒法從新組裝報文。然而,因爲系統缺陷等緣由,發送的分段可能使機器癱瘓,甚至人爲精心設計的IP包可藉此缺陷繞過防火牆。所以配置防火牆須要仔細分析過濾規則如何處理各類類型的分組。對分段的處理最好將系統內核編譯爲從新組裝全部經過的分段,或在應用層另設安全機制。
對基於包過濾防火牆更常見的攻擊是利用IP欺騙的方法。IP欺騙是指主機發送自稱是另外一個主機發送的包。防止IP欺騙的方法是使用源地址確認,它經過配置路由器識別路由代碼實現,而不是防火牆。防火牆結合源地址確認能較好地加強系統的安全性
四 參考文獻
《Red Hat Linux 9網絡服務》機械工業出版社《Turbolinux 網絡管理教程》《Turbolinux 系統管理教程》
參考:http://biyelunwen.yjbys.com/fanwen/jisuanji/368996_3.html