溫馨提示×

溫馨提示×

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

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

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

發(fā)布時間:2020-07-17 09:41:27 來源:網(wǎng)絡(luò) 閱讀:768 作者:薩瓦迪卡 欄目:安全技術(shù)

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

Iptables是用linux操作系統(tǒng)作為一個軟件防火墻做到宏觀上的保護(hù),數(shù)據(jù)包要經(jīng)過防火墻首先來到tcp/ip協(xié)議棧,防火墻通過內(nèi)核的一些機(jī)制來做到對數(shù)據(jù)的過濾,內(nèi)核里有這樣五個函數(shù)INPUT、OUTPUTFORWARD、POSTROUTING、PREROUTING,內(nèi)核沒辦法直接修改我們通過使用iptables用戶空間工具來對這五個函數(shù)下發(fā)規(guī)則,從而達(dá)到對流量的過濾,五個函數(shù)的架構(gòu)稱為netfilter,根據(jù)函數(shù)的功能可以分為下面三類:

natpostrouting路由判斷之后也就是snat,prerouting路由判斷之前也就是dnat

filter:實現(xiàn)流量過濾,input流量目標(biāo)位防火墻,output流量從防火墻出,forward流量經(jīng)過防火墻

mangleTOSQOS

下面是五個函數(shù)對流量過濾的方式:

Input過濾進(jìn)入防火墻的流量

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

OUTput過濾來自防火墻的流量

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

Forward過濾從防火墻經(jīng)過的流量

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

Postrouting過濾從某接口出去的流量

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

Prerouting過濾從某接口進(jìn)去的流量

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

為增加iptables防火墻(網(wǎng)絡(luò)層過濾)的功能可以增加L7(七層協(xié)議模塊化)補(bǔ)丁來加強(qiáng)對流量的過濾,另外增加squid(應(yīng)用層過濾)可以使防火墻更加靈活,這樣結(jié)合起來可以使防火墻更加完善

案例:

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

要求:

公司有三個部門:

工程部門192.168.20.10—192.168.20.20

軟件部門192.168.20.21-192.168.20.30

經(jīng)理辦192.168.20.31-192.168.20.40

上班時間(周一---周五 082000

工程部門:上班時間只能訪問192.168.102.10ftp,不允許登錄qq不允許上網(wǎng),下班后無限制。

軟件部門:通過squid可以上網(wǎng),但不允許訪問非法站點(diǎn)sina ,連接數(shù)最多3個,不允許看圖片,下班后無限制。

經(jīng)理辦公室:可以上網(wǎng)可以登錄qq,下班后無限制

dmz區(qū)域:開啟遠(yuǎn)程控制用于外部人員控制訪問。

配置步驟:

iptables增加layer7補(bǔ)丁,實現(xiàn)應(yīng)用層過濾

重新編譯內(nèi)核

1、合并kernellayer7補(bǔ)丁

tar jxvf linux-2.6.25.19.tar.gz2 -C /usr/src/

tar zxvf netfilter-layer7-v2.20.tar.gz -C /usr/src/

cd /usr/src/linux-2.6.25.19/

patch -p1 < /usr/src/netfilter-layer7-v2.20/kernel-2.6.25-layer7-2.20.patch

2、配置新內(nèi)核

cp /boot/config-2.6.18-8.el5 .config//沿用舊的內(nèi)核配置

make menuconfig

//配置內(nèi)核時,在“Networking ---> Networking Options ---> Network Packet filtering framework (Netfilter) ”處主要注意兩個地方:---> Core Netfilter Configuration將“Netfilter connection tracking suport (NEW)”選擇編譯為模塊(M),需選取此項才能看到layer7支持的配置。

//layer7、string、state、timeIPseciprange、connlimit……等編譯成模塊,根據(jù)需要看著辦。---> IP: Netfilter Configuration將“IPv4 connection tracking support (require for NAT)”編譯成模塊。將“Full NAT”下的“MASQUERADE target support”和“REDIRECT target support”編譯成模塊。

3、編譯及安裝模塊、新內(nèi)核

make && make modules_install && make install

編譯安裝成后后,重啟選擇使用新的內(nèi)核(2.6.25.19)引導(dǎo)系統(tǒng)

重新編譯iptables

1、卸載現(xiàn)有iptables

rpm -e iptables iptstat --nodeps

2、合并iptableslayer7補(bǔ)丁

tar jxvf iptables-1.4.2.tar.bz2 -C /usr/src/

cd /usr/src/netfilter-layer7-v2.20/iptables-1.4.1.1-for-kernel-2.6.20forward/

cp libxt_layer7.c libxt_layer7.man /usr/src/iptables-1.4.2/extensions/

3、編譯安裝

cd /usr/src/iptables-1.4.2/

./configure --prefix=/ --with-ksource=/usr/src/linux-2.6.25.19

make && make install

4、安裝l7-protocols模式包

tar zxvf l7-protocols-2008-10-04.tar.gz -C /etc/

mv /etc/l7-protocols-2008-10-04 /etc/l7-protocols

接下來去配置防火墻:

安裝squid

[root@localhost Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm

查看規(guī)則

[root@localhost ~]# iptables -L

Chain INPUT (policy ACCEPT)

targetprot opt sourcedestination

Chain FORWARD (policy ACCEPT)

targetprot opt sourcedestination

Chain OUTPUT (policy ACCEPT)

targetprot opt sourcedestination

保證自己能夠正常連接到防火墻

[root@localhost ~]# iptables -t filter -A INPUT -s 192.168.20.129 -p tcp --dport 22 -j ACCEPT

[root@localhost ~]# iptables -t filter -A OUTPUT -d 192.168.20.129 -p tcp --sport 22 -j ACCEPT

拒絕所有過防火墻的流量

[root@localhost ~]# iptables -P INPUT DROP

[root@localhost ~]# iptables -P OUTPUT DROP

[root@localhost ~]# iptables -P FORWARD DROP

允許內(nèi)網(wǎng)用戶流量通過POSTROUTINGeth3網(wǎng)卡出去

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -o eth3 -j MASQUERADE

允許工程部的人員在上班時間能夠訪問ftp

[root@localhost ~]# iptables -t filter -A FORWARD -m iprange --src-range 192.168.20.10-192.168.20.20 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p tcp --dport 21 -j ACCEPT

接收進(jìn)入內(nèi)網(wǎng)的所有流量

[root@localhost ~]# iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

只允許工程部人員在上班時間訪問192.168.102.10ftp

[root@localhost ~]# iptables -t filter -R FORWARD 1 -m iprange --src-range 192.168.20.10-192.168.20.20 -m time --timestart 08:00 --timestop 20:00 -d 192.168.102.10 -o eth3 --weekdays Mon,Tue,Wed,Thu,Fri -p tcp --dport 21 -j ACCEPT

驗證

[root@localhost ~]# date

Thu May 16 10:00:04 CST 2013

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

不允許工程部人員在上班時間登錄qq

[root@localhost ~]# iptables -t filter -A FORWARD-m iprange --src-range 192.168.20.10-192.168.20.20 -m time --timestart 08:00 --timestop 20:00-o eth3 --weekdays Mon,Tue,Wed,Thu,Fri -m layer7 --l7proto qq-j DROP

[root@localhost ~]# date

Thu May 16 10:06:47 CST 2013

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

下班時間無限制

[root@localhost ~]# iptables -t filter -A FORWARD -s 192.168.20.0/24 -m time --timestart 20:01 --timestop 07:59 -o eth3 -j ACCEPT

[root@localhost ~]# date -s 21:00:00

Thu May 16 21:00:00 CST 2013

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

軟件部訪問外網(wǎng)時使用squid代理

[root@localhost ~]# iptables -t nat -A PREROUTING -m iprange --src-range 192.168.20.21-192.168.20.30 -p tcp --dport 80 -j REDIRECT --to-port 3128

編輯squid配置文件

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

允許流量通過squid端口進(jìn)入防火墻查看緩存

[root@localhost ~]# iptables -t filter -A INPUT -p tcp --dport 3128 -j ACCEPT

[root@localhost ~]# iptables -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT

允許squid使用自己的地址去訪問外部網(wǎng)絡(luò)

[root@localhost ~]# iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT

[root@localhost ~]# iptables -t filter -A OUTPUT -m state --state ESTABLISHED -j ACCEPT

允許軟件部和經(jīng)理辦通過eth3的流量能夠使用外部dns

[root@localhost ~]# iptables -t filter -A FORWARD -m iprange --src-range 192.168.20.21-192.168.20.40 -p udp --dport 53 -o eth3 -j ACCEPT

[root@localhost ~]# vim /etc/resolv.conf 

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

[root@localhost ~]# vim /etc/squid/squid.conf

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

[root@localhost ~]# iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT

[root@localhost ~]# vim /etc/squid/squid.conf

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

[root@localhost ~]# vim /etc/squid/squid.conf

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

[root@localhost ~]# vim /etc/squid/squid.conf

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

經(jīng)理辦上班時間不受限制

[root@localhost ~]# iptables -t filter -A FORWARD -m iprange --src-range 192.168.20.31-192.168.20.40 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p tcp --dport 80 -o eth3 -j ACCEPT

DMZ

允許來自eth3端口的訪問能夠訪問到dmz區(qū)域的192.168.3.2003389端口

[root@localhost ~]# iptables -t nat -A PREROUTING -i eth3 -d 192.168.102.200 -p tcp --dport 3389 -j DNAT --to 192.168.3.200

[root@localhost ~]# iptables -t filter -A FORWARD -d 192.168.3.200 -p tcp --dport 3389 -j ACCEPT

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

Iptables+L7+squid實現(xiàn)完善的軟件防火墻

 

向AI問一下細(xì)節(jié)

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

AI