您好,登錄后才能下訂單哦!
Linux系統中,防火墻(Firewall),網址轉換(NAT),數據包(package)記錄,流量統計,這些功能是由Netfilter子系統所提供的,而iptables是控制Netfilter的工具。iptables將許多復雜的規則組織成成容易控制的方式,以便管理員可以進行分組測試,或關閉、啟動某組規則。
iptable能夠為Unix、Linux和BSD個人工作站創建一個防火墻,也可以為一個子網創建防火墻以保護其它的系統平臺。iptable只讀取數據包頭,不會給信息流增加負擔,也無需進行驗證。
防火墻在做信息包過濾決定時,有一套遵循和組成的規則,這些規則存儲在專用的信 息包過濾表中,而這些表集成在 Linux 內核中。在信息包過濾表中,規則被分組放在我們所謂的鏈(chain)中。而netfilter/iptables ip 信息包過濾系統是一款功能強大的工具,可用於添加、編輯和移除規則。
Linux防火墻是一種典型的包過濾的防火墻,通過檢測到達的數據包頭中的信息確定哪些數據包可以通過,哪一些應該被丟棄,防火墻行為的依據主要是數據包的目的地址,端口號和協議類型。所有這些都應該由管理員指定。
Linux中的包過濾器引擎在2.4版本內核中做了升級。防火墻工具最初叫做ipchains。取這個名字的原因在於防火墻將一系列規則組成一些鏈應用到網絡數據包上。iptables則更進一步把一些功能相似的鏈組合成一個個表。
上面的說法有些抽象,現在考慮一個具體的例子,iptables默認使用的表是filter。其中默認的包含了三個鏈。分別是forworld,input和output。forward鏈中定義的規則作用哪些用於需要轉發到另一個網絡接口的數據包。input鏈中自定義的規則作用於發送到本機的數據包,相對應的。output鏈中定義的規則作用於從本機發送出去的數據包。
通常定義filter表就迎合大部分的安全需求,因為這個表包含了包過濾的所有內容。除了filter,iptables還包含nat和mangle。nat用於網絡地址轉換。mangle則用於修改除了nat和包過濾之外的網絡包
1、術語的解釋
DNATDestination Network Address Translation 目標網絡地址轉換。 DNAT是一種改變數據包目的ip地址的技術,經常和SNAT聯用,以使多臺服務器能共享一個ip地址連入Internet,并且繼續服務。通過對同一個 ip地址分配不同的端口,來決定數據的流向。SNATSource Network Address Translation源網絡地址轉換。這是一種改變數據包源ip地址的技術, 經常用來使多臺計算機分享一個Internet地址。這只在IPv4中使用,因為IPv4的地址已快用完了,IPv6將解 決這個問題。
2. iptable 概述
iptable的鏈和表結構
如上圖可以看出,iptable總體結構.
5個鏈(chain)
PREROUTING在數據包進入防火墻之后、路由判斷之前對數據包進行修改INPUT在數據包被路由到本地之后,但在用戶空間程序看到它之前對數據包進行修改OUTPUT用戶空間程序處理數據包后,由本地發出,再次被路由之前更改數據包FORWARD在最初的路由判斷之后、最后一次更改包的源地址之前對數據包進行修改POSTROUTING在所有路由判斷之后,對數據包進行修改
注意: 鏈 是每個數據包流需要經過的不同環節,你可以在不同的環節根據需要設置不同的過濾策略,每個鏈的默認策略都是accept
4個表(table)
Mangle表這個表主要用來mangle包,你可以使用mangle匹配來改變包的一些屬性,比如 TOS(type OF service),TTL (time TO LIVE),MARK(后續流量控制TC等)Nat表此表僅用于NAT,也就是轉換包的源或目標地址。注意,就象我們前面說過的,只有流的第一個 包會被這個鏈匹配,其后的包會自動被做相同的處理(DNAT,SNAT,MASQUERADE)Filter表此表用來過濾數據包,我們可以在任何時候匹配包并過濾它們。 我們就是在這里根據包的內容對包做DROP或ACCEPT的.
iptalbe中,要用 -t 參數指定要操作哪個表,如果沒有 -t 參數,就默認對filter表操作.Raw表優先級最高,設置raw時一般是為了不再讓iptables做數據包的鏈接跟蹤處理,提高性能
注意: 表 是規則的集合組,每個表中的規則條目是按順序匹配的,你可以在數據包經過的不同環節設置規則,表的處理優先級:raw > mangle > nat > filter
詳細的數據包流程
從上圖可以看出,數據包流環節和表的配合使用方法
iptable應用場景
上圖是應用場景的簡單拓撲描述,下面的應用場景舉例,都以上圖為參考.
系統啟動的時候所有的默認策略都是ACCEPT,在下面的場景舉例中,我們都是在這種前提下設定iptable的。下面每個場景舉例都是獨立的,沒有相關聯性的。
網關服務器安全策略
目標 : 網關服務器系統自生安全策略,只對內網用戶開放22端口(sshd服務)
#清空 filter table
[root@localhost]# iptables -F -t filter
[root@localhost]# iptables -X -t filter
[root@localhost]# iptables -Z -t filter
#清空 nat table
[root@localhost]# iptables -F -t nat
[root@localhost]# iptables -X -t nat
[root@localhost]# iptables -Z -t nat
#設置默認策略(INPUT鏈默認為DROP)
[root@localhost]# iptables -t filter -P INPUT DROP
[root@localhost]# iptables -t filter -P OUTPUT ACCEPT
[root@localhost]# iptables -t filter -P FORWARD ACCEPT
#回環接口(lo),默認accept
[root@localhost]# iptables -A INPUT -p ALL -i lo -j ACCEPT
#只對內網用戶開放sshd服務
[root@localhost]# iptables -A INPUT -p tcp -s 192.168.138.0/24 --dport 22 -j ACCEPT
說明: 防火墻的策略順序一般都是 從 非信任 ==> 信任,默認關閉所有訪問權限,然后按照需要逐條開放訪問權限.。
共享上網(nat)
目標:使局域網的用戶都可以訪問外網的服務器
[root@localhost]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@localhost]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
說明: SNAT 和 MASQUERADE 區別
SNAT : 不管是幾個地址,必須明確的指定要SNAT的ip,適合網關服務器有固定地址或者是固定地址范圍. MASQUERADE : 是針對ADSL動態撥號這種場景而設計,從服務器的網絡接口上,自動獲取當前ip地址來做NAT,這樣就實現了動態SNAT地址轉換
內網的服務器對外服務(端口映射)
目標:使外網用戶可以訪問到局域網192.168.138.21這臺HTTP服務
[root@localhost]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@localhost]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.138.21
[root@localhost]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
在網關服務器進行透明代理
目標: 使局域網用戶,訪問外網web服務時,自動使用squid作web透明代理服務器。
[root@localhost]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@localhost]# iptables -t nat -A PREROUTING -s 192.168.138.0/24 -p tcp --dport 80 -i eth0 -j DNAT --to 192.168.138.1
[root@localhost]# iptables -t nat -A PREROUTING -s 192.168.138.0/24 -p tcp --dport 80 -i eth0 -j REDIRECT --to 3128
[root@localhost]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。