Iptables+l7+squid的應用

 Iptables+l7+squid的應用

    Iptables是網絡層防火牆 ,主要用於網絡層、傳輸層的過濾,對應用層的過濾較少,但是支持的應用比較多,如NAT轉換

    Layer7  能使iptables基於應用層過濾

    Squid 是一個應用層代理服務器,不僅可以過濾網絡層、還可以過濾應用層,就是支持的應用比較少。

    所以iptables+l7+squid不愧是一個完美組合。下面就通過一個小案例來說明一下

     一個公司有兩個部門和一個經理部,要求對他們在上班時間(週一到週六 08:00--20:00)做如下的上網限制:

技術部:可以使用ftp來上傳和下載資料 ,不允許使用QQ聊天,不允許瀏覽網頁,不允許使用迅雷下載東西。

市場部:可以瀏覽網頁,但不允許訪問一些非法站點,如sina ,也不允許使用迅雷,和QQ聊天,不允許使用pplive,不允許瀏覽圖片,每個用戶的最大連接數爲5

經理辦  http qq 都可以使用

下班後,沒用任何限制。

公司還要發佈自己的www服務器

Linux防火牆的eth0網卡連接內網,eth1網卡連接外網,eth2網卡連接DMZ

Eth0  192.168.101.166

Eth1  192.168.2.253

Eth2  192.168.3.253

技術部ip範圍  192.168.2.1----192.168.2.100

市場部ip範圍  192.168.2.101-----192.168.2.200

經理辦ip範圍  192.168.2.201---192.168.2.210

www服務器ip地址爲 192.168.3.66

拓撲圖就不畫了

分析:

ftp的控制我們使用iptables ,對於QQ的聊天、迅雷下載控制我們用L7控制,對於網頁瀏覽、禁止瀏覽非法站點,圖片信息我們用squid控制。

1、首先開啓數據包轉發功能
vim /etc/sysctl.conf  

net.ipv4.ip_forward = 1  --修改爲1即開啓轉發

sysctl -p              --立即生效

2、設置默認拒絕所用

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

3、配置SNAT,使內網用戶可以上網

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth1 -j MASQUERADE 

4、控制

(1) 允許ftp

iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.1-192.168.2.100 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p tcp --dport 21 -j ACCEPT

iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT

--允許轉發的通過

(2)禁用QQ 、迅雷(不寫規則也是可以的,默認是拒絕的,加強一下)

iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.1-192.168.2.200 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -m layer7 --l7proto qq  -j DROP

iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.1-192.168.2.200 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -m layer7 --l7proto xunlei  -j DROP

(3)squid的控制

Vim  /etc/squid/squid.conf  修改和添加如下幾行如下:

919   http_port 3128  transparent

2994  visible_hostname 192.168.2.253

4134  dns_nameservers 222.88.88.88 222.85.85.85

重啓squid,以上是squid的基本配置,下面的是控制配置

(4) iptables控制

iptables -t nat -A PREROUTING  -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri  -m connlimit --connlimit-above 5  --connlimit-mask 32 -p tcp --dport 80 -j REDIRECT --to-port 3128 

--80端口重定上到3128,來實現透明代理

iptables -t filter -A OUTPUT -m state  --state EASTABLISHED -j ACCEPT

iptables -t nat -A POSTROUTING -m iprange --src-range 192.168.2.101-192.168.2.210 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p udp --dport 53 -j MASQUERADE --DNS解析進行NAT(這一條規則好像沒用流量匹配)

iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.101-192.168.2.210 -m time --timestart 08:00 --timestop 20:00 --weekdays Mon,Tue,Wed,Thu,Fri -p udp --dport 53 -j ACCEPT  --

iptables -t filter -A OUTPUT -p tcp --dport 80 -s 192.168.101.166 -j ACCEPT

iptables -A INPUT -m state --state  ESTABLISHED -j ACCEPT

iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT  --允許squid代理的查詢

iptables -t filter -A FORWARD -m iprange --src-range 192.168.2.101-192.168.2.200 -m layer7 --l7proto pplive -j DROP

市場部的squid控制

重啓squid

iptables -t filter -R FORWARD 8  -m iprange --src-range 192.168.2.201-192.168.2.210 -o eth1 -j ACCEPT

服務器發佈

iptables -t nat -A POSTROUTING -s 192.168.3.66/32 -o eth1 -j SNAT --to 192.168.101.166

5)下班後無限制

iptables -t filter -A  FORWARD   -m iprange --src-range 192.168.2.201-192.168.2.210 -o eth1 -j ACCEPT

(星期六、日不允許的是。)功能以實現!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章