Squid簡介:
Squidcache(簡稱為Squid)是一個流行的自由軟體(GNU通用公共許可證)的代理伺服器和Web緩存伺服器。Squid有廣泛的用途,從作為網頁伺服器的前置cache伺服器緩存相關請求來提高Web伺服器的速度,到為一組人共享網絡資源而緩存網際網路,域名系統和其他網絡搜尋,到通過過濾流量幫助網絡安全,到區域網路通過代理上網。Squid主要設計用于在Linux一類系統運作。
正向代理:區域網路通路外網
1、snat模式
網絡層次:網絡層
如果區域網路的使用者通路外網走snat模式,同一個資料包,改變資料標頭部的來源位址,再把資料包發到internet。
安全控制:基于網絡層傳輸層
網絡層安全:來源位址目标位址
傳輸層安全:協定:tcp、udp端口号:來源端口、目标端口标志位:syn、ack、finrst
2、代理伺服器模式
不改變資料標頭資訊,把資料包代理給internet的伺服器
網絡層次:應用層
基于應用層的過濾:微軟開發的軟體防火牆ISAinternetsecurityaccelerate
Linux系統的squid伺服器
安全控制:網絡層傳輸層應用層
網絡層安全:來源位址目标位址
傳輸層安全:協定:tcp、udp端口号:來源端口、目标端口标志位:syn、ack、finrst
應用層安全:協定:http、ftp、pop、smtp、p2p内容過濾url過濾、域名過濾
代理伺服器的缺陷:基于少量的應用協定,支援的應用少。
反向代理:internet使用者通路區域網路伺服器
Squid做反向代理伺服器,把使用者的請求轉發到後方的真實的伺服器,可以做到負載均衡的效果。
squid正向代理拓撲圖:
Squid的應用
一:實作正向代理
二:安全控制
三:透明代理
四:反向代理
一:實作正向代理
準備工作:
1、設定内網接口eth0接口,和外網接口eth1的ip位址
安裝squid伺服器的rpm包
rpm-ivhsquid-2.6.STABLE21-3.el5.i386.rpm
打開squid的配置檔案
919http_port3128
2994visible_hostname192.168.2.100#當通路出錯時,squid将會傳回一個出錯頁面,這個出錯頁面是由192,。168.2.100(這裡可以是任意名稱)提示産生的。
啟動squid服務
切換到/var/spool/squid目錄将會看到16個一級子目錄
每一個子目錄下面将會形成256個二級子目錄,切換到00目錄下
做簡單的測試:内網通路外網
設定區域網路中的一台主機的浏覽器屬性--連接配接--區域網路設定--代理伺服器,添加代理伺服器的ip位址和端口
通路失敗得到一個出錯頁面是由192.168.2.100産生的
因為squid的預設政策是除了他自己可以通路外網外,其他拒絕所有
打開squid的配置檔案,定義允許内網使用者上網的元素,添加政策
重新開機squid服務
打開浏覽器再次測試上網成功
第一次通路頁面傳回類型是TCP_MISS,說明還沒有被緩存
再次通路将是:TCP_IMS_HIT說明資料已經被緩存,是從squid的緩存目錄中得到的資料
二:安全控制
1,拒絕192.168.2.200這台主機上網,定義政策,建立通路控制清單。
aclbadpcsrc192.168.2.200/255.255.255.255
http_accessallowlocalhost
http_accessdenybadpc
http_accessallowall
測試通路http://www.sina.com,将不能通路到出現錯誤。
2,控制一個位址段,拒絕192.168.2.200-192.168.2.210這台主機上網,定義政策,建立通路控制清單。
測試通路http://www.sina.com,将不能通路到出現錯誤
換一個位址比如說192.168.2.220,測試一下,就可以上網了
3,定義基于時間控制的政策,初試時間要小于結束時間,被拒絕的主機上班時間不能上網,下班可以
aclworktimetime06:00-20:00
http_accessdenybadpcworktime
Ip位址改為192.168.2.200,現在的時間為
root@localhost~]#date102509252013
FriOct2509:25:00PDT2013
上班時間
測試通路http://www.sina.com,将是拒絕的
修改時間為下班時間再次通路
[root@localhost~]#date102521252013
FriOct2521:25:00PDT2013
用!取反也可以
http_accessallowlocalhost
http_accessallowbadpc!worktime
http_accessdenyall
下班時間允許通路
4,基于URL的安全控制,定義通路政策元素,基于url的控制元素是url_regex。
aclbadsiteurl_regex-ihttp://www.sina.com.cn
http_accessdenybadsite
http_accessallowall
http_accessdenyall
通路新浪網測試,被拒絕
結合通配符*号使用,在url中任何以.sina.com.cn為結尾的網站都是被拒絕的
aclbadsiteurl_regex-ihttp://.*.sina.com.cn
http_accessdenybadsite
http_accessallowall
http_accessdenyall
5,基于url的控制,任何中間出現.sina,兩邊是任意字元的網站都是被拒絕的
aclbadsiteurl_regex-ihttp://.*.sina.*
http_accessdenybadsite
http_accessallowall
http_accessdenyall
6,基于網頁内容圖檔的過濾,政策元素類型是urlpath_regex,
aclbadcontenturlpath_regex-i\.jpg$
aclbadcontenturlpath_regex-i\.png$
aclbadcontenturlpath_regex-i\.gif$
http_accessdenybadcontent
7、基于域名的控制,政策元素類型是dstdomian,禁止發往sina.com.cn與baidu.com這兩個域的任何主機的任何請求。
aclsinadstdomain.sina.com.cn
aclbaidudstdomain.baidu.com
http_accessdenysina
http_accessdenybaidu
http_accessallowall
http_accessdenyall
三:squid做透明代理
透明代理的原理:
當内網的使用者,不知道代理伺服器的代理端口和ip位址時,要想上網就不能走正向代理。
使用者的網管指向代理伺服器的内卡位址192.168.2.100,當發送一個資料包到達代理伺服器的内卡位址時,在系統内部,代理伺服器會把原資料包端口80替換為代理伺服器的端口3128端口,然後資料包到達代理伺服器,代理伺服器有緩存就直接發給使用者,如果沒有,把資料包發往外網,端口的替換需要靠iptables的nat表的PREROTING鍊路由判斷之前來實作的。
但是,代理伺服器的代理功能有限僅限于httpftp等協定,而資料標頭部的目标ip位址的解析需要靠dns協定,dns是不能被代理伺服器代理的,是以nds的解析需要靠SNAT技術,而snat的實作,需要linux的軟體防火牆netfilter的iptables架構。
要做nat轉換,打開linux的資料包轉發功能/etc/sysctl.conf
net.ipv4.ip_forward=1
Sant的實作是靠iptables架構中的nat表中的POSTROUTING鍊
iptables-tnat-APOSTROUTING-s192.168.2.0/24-pudp--dport53-oeth1-jSNAT--to192.168.1.4
端口實作是重定向靠iptables的nat表的路由判斷之前PREROUTING鍊
[root@localhost~]#iptables-tnat-APREROUTING-s192.168.2.0/24-ptcp--dport80-jREDIRECT--to-port3128
告訴squid要實作透明代理打開配置檔案
931http_port3128transparent
打開内網使用者在浏覽器取消代理功能,測試dns請求,以及上網
四:squid做反向代理伺服器
反向代理伺服器的原理:
反向代理伺服器的工作原理是DNAT技術,外網使用者通路内網中的伺服器時,使用者通路的代理伺服器的外卡接口位址,代理伺服器把請求轉發給後方内網真是的伺服器。
Squid做反向代理伺服器的拓撲圖:
Squid做反向代理伺服器實作後方web伺服器的通路
1,定義虛拟主機代理位址和端口
http_port192.168.1.4:80vhost
2,設定反向代理功能
1196行cache_peer192.168.2.210parent800originserver
注釋:cache_peer指的是後方真是web伺服器
Parent指的是代理伺服器的類型,代理伺服器與後方真是伺服器之間的關系
80指的是代理端口
0指的是後方伺服器的任意端口
Originserver指的是原始伺服器,也就是代理伺服器
測試一下通路http://192.168.1.4/index.html