溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

iptables詳解使用

發(fā)布時(shí)間:2020-07-09 19:17:19 來(lái)源:網(wǎng)絡(luò) 閱讀:974 作者:隔壁老濕 欄目:安全技術(shù)

iptables詳解使用

Linux系統(tǒng)中,防火墻(Firewall),網(wǎng)址轉(zhuǎn)換(NAT),數(shù)據(jù)包(package)記錄,流量統(tǒng)計(jì),這些功能是由Netfilter子系統(tǒng)所提供的,而iptables是控制Netfilter的工具。iptables將許多復(fù)雜的規(guī)則組織成成容易控制的方式,以便管理員可以進(jìn)行分組測(cè)試,或關(guān)閉、啟動(dòng)某組規(guī)則。

iptable能夠?yàn)閁nix、Linux和BSD個(gè)人工作站創(chuàng)建一個(gè)防火墻,也可以為一個(gè)子網(wǎng)創(chuàng)建防火墻以保護(hù)其它的系統(tǒng)平臺(tái)。iptable只讀取數(shù)據(jù)包頭,不會(huì)給信息流增加負(fù)擔(dān),也無(wú)需進(jìn)行驗(yàn)證。

防火墻在做信息包過(guò)濾決定時(shí),有一套遵循和組成的規(guī)則,這些規(guī)則存儲(chǔ)在專用的信 息包過(guò)濾表中,而這些表集成在 Linux 內(nèi)核中。在信息包過(guò)濾表中,規(guī)則被分組放在我們所謂的鏈(chain)中。而netfilter/iptables ip 信息包過(guò)濾系統(tǒng)是一款功能強(qiáng)大的工具,可用於添加、編輯和移除規(guī)則。

Linux防火墻是一種典型的包過(guò)濾的防火墻,通過(guò)檢測(cè)到達(dá)的數(shù)據(jù)包頭中的信息確定哪些數(shù)據(jù)包可以通過(guò),哪一些應(yīng)該被丟棄,防火墻行為的依據(jù)主要是數(shù)據(jù)包的目的地址,端口號(hào)和協(xié)議類型。所有這些都應(yīng)該由管理員指定。

Linux中的包過(guò)濾器引擎在2.4版本內(nèi)核中做了升級(jí)。防火墻工具最初叫做ipchains。取這個(gè)名字的原因在於防火墻將一系列規(guī)則組成一些鏈應(yīng)用到網(wǎng)絡(luò)數(shù)據(jù)包上。iptables則更進(jìn)一步把一些功能相似的鏈組合成一個(gè)個(gè)表。

上面的說(shuō)法有些抽象,現(xiàn)在考慮一個(gè)具體的例子,iptables默認(rèn)使用的表是filter。其中默認(rèn)的包含了三個(gè)鏈。分別是forworld,input和output。forward鏈中定義的規(guī)則作用哪些用於需要轉(zhuǎn)發(fā)到另一個(gè)網(wǎng)絡(luò)接口的數(shù)據(jù)包。input鏈中自定義的規(guī)則作用於發(fā)送到本機(jī)的數(shù)據(jù)包,相對(duì)應(yīng)的。output鏈中定義的規(guī)則作用於從本機(jī)發(fā)送出去的數(shù)據(jù)包。

通常定義filter表就迎合大部分的安全需求,因?yàn)檫@個(gè)表包含了包過(guò)濾的所有內(nèi)容。除了filter,iptables還包含nat和mangle。nat用於網(wǎng)絡(luò)地址轉(zhuǎn)換。mangle則用於修改除了nat和包過(guò)濾之外的網(wǎng)絡(luò)包
1、術(shù)語(yǔ)的解釋
DNATDestination Network Address Translation 目標(biāo)網(wǎng)絡(luò)地址轉(zhuǎn)換。 DNAT是一種改變數(shù)據(jù)包目的ip地址的技術(shù),經(jīng)常和SNAT聯(lián)用,以使多臺(tái)服務(wù)器能共享一個(gè)ip地址連入Internet,并且繼續(xù)服務(wù)。通過(guò)對(duì)同一個(gè) ip地址分配不同的端口,來(lái)決定數(shù)據(jù)的流向。SNATSource Network Address Translation源網(wǎng)絡(luò)地址轉(zhuǎn)換。這是一種改變數(shù)據(jù)包源ip地址的技術(shù), 經(jīng)常用來(lái)使多臺(tái)計(jì)算機(jī)分享一個(gè)Internet地址。這只在IPv4中使用,因?yàn)镮Pv4的地址已快用完了,IPv6將解 決這個(gè)問題。

2. iptable 概述
iptable的鏈和表結(jié)構(gòu)
iptables詳解使用
如上圖可以看出,iptable總體結(jié)構(gòu).

 5個(gè)鏈(chain)

iptables詳解使用
PREROUTING在數(shù)據(jù)包進(jìn)入防火墻之后、路由判斷之前對(duì)數(shù)據(jù)包進(jìn)行修改INPUT在數(shù)據(jù)包被路由到本地之后,但在用戶空間程序看到它之前對(duì)數(shù)據(jù)包進(jìn)行修改OUTPUT用戶空間程序處理數(shù)據(jù)包后,由本地發(fā)出,再次被路由之前更改數(shù)據(jù)包FORWARD在最初的路由判斷之后、最后一次更改包的源地址之前對(duì)數(shù)據(jù)包進(jìn)行修改POSTROUTING在所有路由判斷之后,對(duì)數(shù)據(jù)包進(jìn)行修改

注意: 鏈 是每個(gè)數(shù)據(jù)包流需要經(jīng)過(guò)的不同環(huán)節(jié),你可以在不同的環(huán)節(jié)根據(jù)需要設(shè)置不同的過(guò)濾策略,每個(gè)鏈的默認(rèn)策略都是accept

4個(gè)表(table)
Mangle表這個(gè)表主要用來(lái)mangle包,你可以使用mangle匹配來(lái)改變包的一些屬性,比如 TOS(type OF service),TTL (time TO LIVE),MARK(后續(xù)流量控制TC等)Nat表此表僅用于NAT,也就是轉(zhuǎn)換包的源或目標(biāo)地址。注意,就象我們前面說(shuō)過(guò)的,只有流的第一個(gè) 包會(huì)被這個(gè)鏈匹配,其后的包會(huì)自動(dòng)被做相同的處理(DNAT,SNAT,MASQUERADE)Filter表此表用來(lái)過(guò)濾數(shù)據(jù)包,我們可以在任何時(shí)候匹配包并過(guò)濾它們。 我們就是在這里根據(jù)包的內(nèi)容對(duì)包做DROP或ACCEPT的.

iptalbe中,要用 -t 參數(shù)指定要操作哪個(gè)表,如果沒有 -t 參數(shù),就默認(rèn)對(duì)filter表操作.Raw表優(yōu)先級(jí)最高,設(shè)置raw時(shí)一般是為了不再讓iptables做數(shù)據(jù)包的鏈接跟蹤處理,提高性能

注意: 表 是規(guī)則的集合組,每個(gè)表中的規(guī)則條目是按順序匹配的,你可以在數(shù)據(jù)包經(jīng)過(guò)的不同環(huán)節(jié)設(shè)置規(guī)則,表的處理優(yōu)先級(jí):raw > mangle > nat > filter

詳細(xì)的數(shù)據(jù)包流程
iptables詳解使用
從上圖可以看出,數(shù)據(jù)包流環(huán)節(jié)和表的配合使用方法
iptable應(yīng)用場(chǎng)景
iptables詳解使用
上圖是應(yīng)用場(chǎng)景的簡(jiǎn)單拓?fù)涿枋?下面的應(yīng)用場(chǎng)景舉例,都以上圖為參考.

系統(tǒng)啟動(dòng)的時(shí)候所有的默認(rèn)策略都是ACCEPT,在下面的場(chǎng)景舉例中,我們都是在這種前提下設(shè)定iptable的。下面每個(gè)場(chǎng)景舉例都是獨(dú)立的,沒有相關(guān)聯(lián)性的。

網(wǎng)關(guān)服務(wù)器安全策略
目標(biāo) : 網(wǎng)關(guān)服務(wù)器系統(tǒng)自生安全策略,只對(duì)內(nèi)網(wǎng)用戶開放22端口(sshd服務(wù))

#清空 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

  #設(shè)置默認(rèn)策略(INPUT鏈默認(rèn)為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

  #回環(huán)接口(lo),默認(rèn)accept
  [root@localhost]# iptables -A INPUT -p ALL -i lo -j ACCEPT

  #只對(duì)內(nèi)網(wǎng)用戶開放sshd服務(wù)
  [root@localhost]# iptables -A INPUT -p tcp -s 192.168.138.0/24 --dport 22 -j ACCEPT

說(shuō)明: 防火墻的策略順序一般都是 從 非信任 ==> 信任,默認(rèn)關(guān)閉所有訪問權(quán)限,然后按照需要逐條開放訪問權(quán)限.。

共享上網(wǎng)(nat)
目標(biāo):使局域網(wǎng)的用戶都可以訪問外網(wǎng)的服務(wù)器

 [root@localhost]# echo 1 > /proc/sys/net/ipv4/ip_forward
  [root@localhost]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

說(shuō)明: SNAT 和 MASQUERADE 區(qū)別

SNAT : 不管是幾個(gè)地址,必須明確的指定要SNAT的ip,適合網(wǎng)關(guān)服務(wù)器有固定地址或者是固定地址范圍. MASQUERADE : 是針對(duì)ADSL動(dòng)態(tài)撥號(hào)這種場(chǎng)景而設(shè)計(jì),從服務(wù)器的網(wǎng)絡(luò)接口上,自動(dòng)獲取當(dāng)前ip地址來(lái)做NAT,這樣就實(shí)現(xiàn)了動(dòng)態(tài)SNAT地址轉(zhuǎn)換

內(nèi)網(wǎng)的服務(wù)器對(duì)外服務(wù)(端口映射)
目標(biāo):使外網(wǎng)用戶可以訪問到局域網(wǎng)192.168.138.21這臺(tái)HTTP服務(wù)

 [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

在網(wǎng)關(guān)服務(wù)器進(jìn)行透明代理
目標(biāo): 使局域網(wǎng)用戶,訪問外網(wǎng)web服務(wù)時(shí),自動(dòng)使用squid作web透明代理服務(wù)器。

 [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 
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI