如何通過(guò)iptables配置URL過(guò)濾黑名單?
時(shí)間:2023-02-19 03:28:01 | 來(lái)源:建站知識(shí)
時(shí)間:2023-02-19 03:28:01 來(lái)源:建站知識(shí)
如何通過(guò)iptables配置URL過(guò)濾黑名單?:
正文共:1555 字 16 圖,預(yù)估閱讀時(shí)間:2 分鐘
我們前面曾經(jīng)簡(jiǎn)單介紹過(guò)URL過(guò)濾功能
(URL過(guò)濾功能了解一下?),并且以H3C VFW為例簡(jiǎn)單配置了一下URL過(guò)濾功能。
首先回顧一下,URL過(guò)濾,英文全稱為URL Filter,一般簡(jiǎn)稱為URLF,從字面上理解,是指對(duì)用戶訪問(wèn)的URL進(jìn)行控制,對(duì)用戶訪問(wèn)的Web資源執(zhí)行允許或禁止操作。
URL(Uniform Resource Locator,統(tǒng)一資源定位符)是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址,用來(lái)完整、精確地描述互聯(lián)網(wǎng)上的網(wǎng)頁(yè)或者其他共享資源的地址。
在前面測(cè)試的時(shí)候,我們使用的是黑名單的方式,也就是默認(rèn)放通所有,然后拒絕被匹配的請(qǐng)求。域名使用文本方式匹配域名中的關(guān)鍵字段,還區(qū)分了HTTP和HTTPS的服務(wù)區(qū)別。
前面我們也說(shuō)過(guò),URL過(guò)濾的原理上整體都是相似的,所以我前面又整理了一下iptables的用法
(iptables命令簡(jiǎn)介),還包括match擴(kuò)展項(xiàng)
(iptables擴(kuò)展項(xiàng)之match擴(kuò)展)和target擴(kuò)展項(xiàng)
(iptables擴(kuò)展項(xiàng)之target擴(kuò)展)的使用說(shuō)明。今天我們就用iptables來(lái)簡(jiǎn)單測(cè)試一下URL的過(guò)濾效果。
首先我們確認(rèn)一下域名字段,需要使用string模塊通過(guò)某種模式匹配策略來(lái)匹配給定的字符串。模式匹配策略可選為
bm(Boyer Moore)或
kmp(Knuth Pratt Morris),此部分的語(yǔ)法為:
-m string --string guotiejun.com --algo kmp-m string --string guotiejun.com --algo bm
然后就是匹配協(xié)議,一般常用的是HTTP或者HTTPS。在iptables中,可以使用-p來(lái)匹配協(xié)議,但是這里的協(xié)議僅限于tcp、udp、udplite、icmp、icmpv6、esp、ah、sctp、mh或特殊關(guān)鍵字“all”中的一個(gè)。我們要匹配HTTP或者HTTPS,就要結(jié)合--sport或者--dport來(lái)指定端口或端口范圍,這里就可以配置服務(wù)名稱或端口號(hào)了,端口范圍可以使用first:last格式來(lái)指定。此部分的語(yǔ)法為:
-p tcp --dport 443-p tcp --dport 80-p tcp --dport http-p tcp --dport https
再就是動(dòng)作類型,這部分適用于-j參數(shù)來(lái)匹配target擴(kuò)展,一般常用的參數(shù)包括ACCEPT(接受)、DROP(丟棄)、RETURN(返回)和reject(AUDIT下,同DROP)。此部分的語(yǔ)法為:
-j ACCEPT-j DROP-j RETURN-j AUDIT --type accept-j AUDIT --type drop-j AUDIT --type reject
最后就是確定規(guī)則下發(fā)到哪個(gè)鏈或者表了。-I命令用于在選定的鏈中插入一個(gè)或多個(gè)規(guī)則。如果沒(méi)有通過(guò)-t選項(xiàng)指定轉(zhuǎn)發(fā)表,則默認(rèn)下發(fā)到filter表;也可以通過(guò)-t選項(xiàng)指定到nat、mangle、raw或者security表,不過(guò)一般都是配置到默認(rèn)的filter表下面。
filter表下面包含預(yù)定義鏈INPUT(用于發(fā)往本地套接字的數(shù)據(jù)包)、FORWARD(用于通過(guò)設(shè)備路由的數(shù)據(jù)包)以及OUTPUT(用于本地生成的數(shù)據(jù)包),一般常用的就是FORWARD和OUTPUT。此部分的語(yǔ)法為:
-I FORWARD-I OUTPUT-t filter -I FORWARD-t filter -I OUTPUT
如果有其他需求,也可以進(jìn)行進(jìn)一步的條件限制,比如通過(guò)-s選項(xiàng)限定源地址信息,通過(guò)-i選項(xiàng)指定接收數(shù)據(jù)包的接口名稱,通過(guò)-o選項(xiàng)指定發(fā)送數(shù)據(jù)包的接口名稱。
接下來(lái),我們搭個(gè)環(huán)境測(cè)試一下。
結(jié)合前面介紹的文章
(如果把Linux主機(jī)作為路由器轉(zhuǎn)發(fā)流量,性能可靠嗎?),我們將一臺(tái)CentOS主機(jī)作為客戶機(jī)的網(wǎng)關(guān)設(shè)備,并在CentOS主機(jī)上配置URL過(guò)濾。
首先,我們嘗試直接訪問(wèn)一個(gè)HTTP頁(yè)面。
然后,我們組合前面的各部分配置,可以得到禁止訪問(wèn)
http://guotiejun.com相關(guān)的HTTP的頁(yè)面命令如下:
iptables -I FORWARD -p tcp --dport 80 -m string --string guotiejun.com --algo bm -j DROP
這里我們也可以看到匹配TCP80端口被自動(dòng)識(shí)別成了HTTP協(xié)議。配置過(guò)后再次測(cè)試頁(yè)面的訪問(wèn)情況。
可以看到頁(yè)面已經(jīng)無(wú)法訪問(wèn)了。在CentOS上查看報(bào)文匹配情況,可以看到共匹配到了47個(gè)報(bào)文,共29328字節(jié)。
現(xiàn)在過(guò)濾的是HTTP報(bào)文,我們?cè)僭囈幌翲TTPS頁(yè)面是否訪問(wèn)正常。
可以看到,當(dāng)前的HTTPS頁(yè)面訪問(wèn)不受影響。我們?cè)偌右粭l禁止訪問(wèn)
http://sdwan.guotiejun.com的HTTPS頁(yè)面的命令:
iptables -I FORWARD -p tcp --dport https -m string --string sdwan.guotiejun.com --algo bm -j DROP
再次測(cè)試頁(yè)面的訪問(wèn)情況。
可以看到頁(yè)面已經(jīng)無(wú)法訪問(wèn)了。在CentOS上查看報(bào)文匹配情況,可以看到共匹配到了76個(gè)報(bào)文,共43802字節(jié)。
現(xiàn)在所有帶有
http://guotiejun.com的HTTP頁(yè)面都無(wú)法訪問(wèn)了,帶有
http://sdwan.guotiejun.com的HTTPS頁(yè)面也無(wú)法訪問(wèn)了,其他的帶有
http://guotiejun.com的HTTPS頁(yè)面訪問(wèn)應(yīng)該是不受影響的。測(cè)試一下訪問(wèn)個(gè)人黃頁(yè)。
如果要禁用所有帶有
http://guotiejun.com的HTTPS頁(yè)面,用以下命令就可以了。
iptables -I FORWARD -p tcp --dport 443 -m string --string guotiejun.com --algo bm -j DROP
然后,所有的頁(yè)面就都不能訪問(wèn)了。
最后,我們?cè)僖园俣群捅貞?yīng)為例,測(cè)試一下這個(gè)方法對(duì)公共站點(diǎn)是否生效。配置命令如下:
iptables -I FORWARD -p tcp --dport 443 -m string --string baidu.com --algo bm -j DROPiptables -I FORWARD -p tcp --dport 443 -m string --string bing.com --algo bm -j DROP
測(cè)試一下訪問(wèn)情況,可以看到雖然域名可以正常解析、也可以ping通,但是HTTPS頁(yè)面是無(wú)法訪問(wèn)到的。
iptables的報(bào)文統(tǒng)計(jì)情況如下:
可以看到,有成功轉(zhuǎn)發(fā)的報(bào)文統(tǒng)計(jì),還有每條拒絕規(guī)則對(duì)應(yīng)的報(bào)文統(tǒng)計(jì),一目了然。
怎么樣,用iptables做URL黑名單過(guò)濾,你學(xué)會(huì)了嗎?
長(zhǎng)按二維碼
關(guān)注我們吧
iperf命令簡(jiǎn)介
iptables擴(kuò)展項(xiàng)之match擴(kuò)展
iptables擴(kuò)展項(xiàng)之target擴(kuò)展
H3C防火墻RBM主備模式+靜態(tài)路由方案驗(yàn)證
Debian通過(guò)NetworkManager配置雙網(wǎng)卡
NetworkManager管理工具nmcli命令簡(jiǎn)介
79.55 Gbps!已經(jīng)初步測(cè)得VMWare ESXi 6.7的vSwitch轉(zhuǎn)發(fā)性能
還得是華為,OpenEuler打流能到37 Gbps
羨慕!大佬的VPP能達(dá)到180G性能,而我的卻只有13.5G
Windows Server2012 R2搭建NFS服務(wù)器
CentOS 7搭建NFS服務(wù)器
關(guān)鍵詞:過(guò)濾,黑名單,配置,通過(guò)