天天看點

squid反向代理安全控制

squid

Squidcache(簡稱為Squid)是一個流行的自由軟體(GNU通用公共許可證)的代理伺服器和Web緩存伺服器。Squid有廣泛的用途,從作為網頁伺服器的前置cache伺服器緩存相關請求來提高Web伺服器的速度,到為一組人共享網絡資源而緩存網際網路,域名系統和其他網絡搜尋,到通過過濾流量幫助網絡安全,到區域網路通過代理上網。(70年代出現)

nginx

Nginx("enginex")是一個高性能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP代理伺服器。Nginx是由IgorSysoev為俄羅斯通路量第二的Rambler.ru站點開發的,第一個公開版本0.1.0釋出于2004年10月4日。其将源代碼以類BSD許可證的形式釋出,因它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名。2011年6月1日,nginx1.0.4釋出。Nginx作為負載均衡伺服器:Nginx既可以在内部直接支援Rails和PHP程式對外進行服務,也可以支援作為HTTP代理伺服器對外進行服務。Nginx采用C進行編寫,不論是系統資源開銷還是CPU使用效率都比Perlbal要好很多。

varnish

Varnish是一款高性能的開源HTTP加速器,挪威最大的線上報紙VerdensGang使用3台Varnish代替了原來的12台Squid,性能比以前更好(反向代理加速連接配接數目多的多緩存可以放在磁盤,也可以放在記憶體中)

Varnish與一般伺服器軟體類似,分為master(management)程序和child(worker,主要做cache的工作)程序。master程序讀入指令,進行一些初始化,然後fork并監控child程序。child程序配置設定若幹線程進行工作,主要包括一些管理線程和很多woker線程

Squid代理伺服器(正向代理,反向代理安全控制)

正向

Lan-----------interner

1.nat改變頭部資訊同一個資料包改變來源位址

層次網絡層

安全控制網絡傳輸層

網絡層資訊位址(來源目标)

傳輸層協定(tcpudp)端口(源端口目标端口)标志位(tcpsynackfinrst)

隻能對網絡進行控制,

支援應用多nat好用

2.代理伺服器不改變資料包的頭部資訊

Squid3128端口

代理伺服器是有緩存

安全控制層次-------------》應用層isa(internetsecurityaccelerate)

Squid是一款軟體

安全控制網絡傳輸層應用層

網絡層資訊位址來源目标

傳輸層協定(tcpudp)端口号碼(源端口目标端口)标志位(tcpsynackfinrst)

應用層協定(httpftppopsmtp…..p2p)内容(url域名)

---------------》應用層網關代理伺服器防火牆

----支援應用少----------》缺陷httpftpmail

代理伺服器安全

結合nat+代理伺服器

安裝squid

環境:squid-2.6.STABLE21-3.el5.i386.rpm

步驟:

1.rpm–ivhsquid-2.6.STABLE21-3.el5.i386.rpm

2.vim/etc/squid/squid.confsquid的配置檔案

圖1

<a href="http://blog.51cto.com/attachment/201309/151410898.png" target="_blank"></a>

伺服器端口是3128

Cache_dirufs(緩存資料的存儲格式)/var/spool/squid100(為緩存目錄配置設定的磁盤空間)16(緩存空間的一級目錄個數)256(緩存目錄的二級子目錄個數)通過二叉樹來查找

Cache_mem64MB來存放描述符

Maximum_object_size4096KB最大的緩存對象是4096KB

Reply_body_max_size10240000allowall應答給客戶不能超出1G

Access_log/var/log/squid/access.logsquid日志存放位置

Visible_hostnameproxy.test.com傳回給使用者出錯資訊的頁面

squid–kparse測試squid的文法

tail–f/var/log/squid/access.logsquid的日志檔案

TCP_MISS緩存沒有成為丢失

TCP_DENIED拒絕

TCP_HIT緩存存在的命中

安全控制:

在這裡可以應用正規表達式

元素acl元素名稱類型參數

aclaclnamearpmac-address...(xx:xx:xx:xx:xx:xxnotation)可以基于mac來控制

在源碼安裝的時候需要加上--enable-arp-acl,想用得需要源碼安裝才可以使用.

aclaclnamesrcip-address/netmask...(clientsIPaddress)

aclaclnamesrcaddr1-addr2/netmask...(rangeofaddresses)

aclaclnamedstip-address/netmask...(URLhost'sIPaddress)

aclaclnamemyipip-address/netmask...(localsocketIPaddress)

時間限制:

aclaclnametime[day-abbrevs][h1:m1-h2:m2]

h1:m1mustbelessthanh2:m2其實時間必須小于結束時間

aclworktimetime8:00-18:00

aclofftimetime18:01-23.5900:00-07:59或者!8:00-18:00限制使用者時間上網

aclbadpcsrc192.168.2.200/255.255.255.255限制192.168.2.200使用者不能上網

aclbadpcsrc192.168.2.200-192.168.2.210/255.255.255.255限制這個這個網段不能上網

位址控制

aclbadsiturl_regex–Ihttp://www.sina.com.cn拒絕這個網站位址

aclbadsiturl_regex–Ihttp://*.sina.com.cn

内容過濾

aclbadcontenturlpath_regex–I\.jpg$

aclsinadstdomain.sina.com.cn基于域名來進行過濾

aclsinadstdom_regex–I.*sina.*表達式引用

aclaclnamebrowser[-i]regexp...限制用戶端的浏覽器器

政策:http_access動作政策元素

http_accessdenybadpc

http_accessdenybadpcwortime

http_accessdenybadsit

http_accessdenybadcontent

http_accessdenysina

透明代理

公司的内部網絡,在連接配接internet的時候可以自動配置代理伺服器的位址及NAT轉換出去,稱為透明代理.

1.端口重定向-------》代理端口3128

3.DNS解析--------》snat

Prerouting位址前的轉換dnat

Postrouting位址後的轉換snat

首先做nat轉換

1.vim/etc/sysctl.conf

2.圖2

3.iptables-tnat-RPOSTROUTING1-s192.168.2.0/24-pudp--dport53-oeht1-jSNAT--to192.168.1.4當使用者通過192.168.2.0網絡到了伺服器之後,準備把包發出去,需要把源位址更換成192.168.1.4

4.iptables-tnat-L-v--line-number檢視資料包是否有比對的資訊

5.iptables-tnat-APREROUTING-s192.168.2.0/24-ptcp--dport80-jREDIRECT--to-port3128重定向到3128端口

6.vim/etc/squid/squid.conf

7.圖3

8.squid–kparse

9.servicesquidrestart

反向代理

1.用戶端無法去通路你的3128,是以需要改變成80端口,你也可以加入那個端口的位址也可以

2.vhost

<a href="http://blog.51cto.com/attachment/201309/160946203.png" target="_blank"></a>

3.假如後方有許多伺服器,在這裡我們隻需要把這幾行重新複制一下就可以,在這裡也可以使用weight來設定它的權重

4.serversquidstart

本文轉自 only223wym 51CTO部落格,原文連結:http://blog.51cto.com/ymchaofeng/1297813,如需轉載請自行聯系原作者

繼續閱讀