您好,登錄后才能下訂單哦!
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、OUTPUT、FORWARD、POSTROUTING、PREROUTING,內(nèi)核沒辦法直接修改我們通過使用iptables用戶空間工具來對這五個函數(shù)下發(fā)規(guī)則,從而達(dá)到對流量的過濾,五個函數(shù)的架構(gòu)稱為netfilter,根據(jù)函數(shù)的功能可以分為下面三類:
nat:postrouting路由判斷之后也就是snat,prerouting路由判斷之前也就是dnat
filter:實現(xiàn)流量過濾,input流量目標(biāo)位防火墻,output流量從防火墻出,forward流量經(jīng)過防火墻
mangle:TOS、QOS
下面是五個函數(shù)對流量過濾的方式:
Input過濾進(jìn)入防火墻的流量
OUTput過濾來自防火墻的流量
Forward過濾從防火墻經(jīng)過的流量
Postrouting過濾從某接口出去的流量
Prerouting過濾從某接口進(jìn)去的流量
為增加iptables防火墻(網(wǎng)絡(luò)層過濾)的功能可以增加L7(七層協(xié)議模塊化)補(bǔ)丁來加強(qiáng)對流量的過濾,另外增加squid(應(yīng)用層過濾)可以使防火墻更加靈活,這樣結(jié)合起來可以使防火墻更加完善
案例:
要求:
公司有三個部門:
工程部門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
上班時間(周一---周五 08:20:00)
工程部門:上班時間只能訪問192.168.102.10的ftp,不允許登錄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、合并kernel+layer7補(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、time、IPsec、iprange、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、合并iptables+layer7補(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)用戶流量通過POSTROUTING從eth3網(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.10的ftp
[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
不允許工程部人員在上班時間登錄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
下班時間無限制
[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
軟件部訪問外網(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配置文件
允許流量通過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
[root@localhost ~]# vim /etc/squid/squid.conf
[root@localhost ~]# iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
[root@localhost ~]# vim /etc/squid/squid.conf
[root@localhost ~]# vim /etc/squid/squid.conf
[root@localhost ~]# vim /etc/squid/squid.conf
經(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.200的3389端口
[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
免責(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)容。