天天看点

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,如需转载请自行联系原作者

继续阅读