squid反向代理安全控制

餘二五發表於2017-11-15

squid

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

對於Web使用者來說,Squid是一個高效能的代理快取伺服器,可以加快內部網瀏覽Internet的速度,提高客戶機的訪問命中率。Squid不僅支援HTTP協議還支援FTPgopherSSLWAIS等協議。和一般的代理快取軟體不同,Squid用一個單獨的、非模組化的、I/O驅動的程式來處理所有的客戶端請求。主要資料存放在磁碟

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.rpmivhsquid-2.6.STABLE21-3.el5.i386.rpm

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

圖1

151410898.png

伺服器埠是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返回給使用者出錯資訊的頁面

squidkparse測試squid的語法

tailf/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

aclbadsiturl_regex–Ihttp://*.sina.*

內容過濾

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

160757295.png

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

160837632.png

8.squidkparse

9.servicesquidrestart

反向代理

1.客戶端無法去訪問你的3128,因此需要改變成80埠,你也可以加入那個埠的地址也可以

2.vhost

160946203.png

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

161543602.png

4.serversquidstart

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


相關文章