防伪码:天道酬勤,冲向理想的彼岸
简介:
squid 是 Linux系统中最常用的一款开源代理服务软件
(官方网站:http//www.squid-cache.org)
可以很好地实现HTTP和FTP,以及DNS查询、SSL等应用的缓存代理,功能十分强大。
作为应用层的代理服务软件,squid主要提供缓存加速、应用层过滤控制的功能。
代理的工作机制
当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已有客户机需要的页面,则直接将缓存中页面内容反馈给客户机;如果缓存中没有客户机要访问的页面,则由代理服务器向Internet发送访问请求,当获得返回的web页面以后,将网页数据保存到缓存中并发送给客户机
HTTP代理的缓存加速对象主要是文字、图像等静态web元素。当客户机在不同的状态下访问同一网站应用时,或者不同的客户机访问同一网站应用时,可以直接从代理服务器的缓存中获取相应的结果。这样就大大减少了向Internet提交重复的网站web页面请求的过程,提高了客户机的访问响应速度。
由于客户机的web访问请求实际上是由代理服务器来代替完成的,从而可以隐藏用户的真实IP地址,起到一定安全保护作用。
代理的基本类型:
1.传统代理:
必须在客户机通过浏览器、QQ聊天工具、下载应用软件程序中,手动设置代理服务器的IP地址和端口。
才可以使用代理来访问网络应用。
传统代理适用于Internet互联网环境中。
2.透明代理:
和传统代理一样,主要区别在于客户机不需要指定代理服务器的地址和端口号,而是通过默认路由、防火墙策略将访问web请求的80端口重定向到代理服务器的3128端口做映射,重定向的过程对客户机来说是透明的
透明代理使用于局域网环境中。
安装squid服务的相关配置及命令
- squid的版本:3.4.6
- squid的版本:3.4.11 特性:辅助协议扩展、腾讯云SSL证书、Store-ID、交易注释、组播DNS
一、搭建传统代理服务
1.编译安装squid
上述编译模块参数含义如下:
--prefix=/usr/local/squid //安装目录
--sysconfdir=/etc //单独将配置文件修改到其他目录
--enable-arp-acl //可以在规则中直接通过客户端MAC进行管理,防止客户端使用IP欺骗
--enable-linux-netfilter //使用内核过滤
--enable-linux-tproxy //支持透明模式
--enable-async-io=值 //异步I/O提升存储性能
--enable-err-language="Simplify_Chinese" //错误信息的显示语言
--enable-underscore //允许URL中有下划线
--enable-poll //使用poll()模式,提升性能
--enable-gnuregex //使用GNU正则表达式
安装完后,创建链接文件,创建用户和组
2.Squid的配置文件
Squid的配置文件位于/etc/squid.conf,更详细的配置项请参考/etc/squid.conf.documented文件。
3.Squid的运行控制
(1)检查配置文件语法是否正确
(2.)启动、停止Squid
第一次启动squid服务时,会自动初始化缓存目录。在没有可用的Squid服务脚本的情况下,也可以直接调用Squid程序来启动服务,这时需要先进行初始化。
(3.)使用squid服务脚本
为了使squid服务的启动、停止、重载等操作更加方便,并使用chkconfig和service工具来进行管理。
将编写好的脚本受予执行权限,然后再将squid的程序添加为系统服务
在squid服务器上添加一条防火墙规则,允许客户端通过squid代理去访问web网站
客户机的代理配置
注意:如果客户机是一台Linux的话,要想使用代理服务器(如elinks网页浏览器、wget下载工具),必须通过环境变量来指定代理服务器的地址、端口等信息。
传统代理服务的验证方法
(1.)查看squid访问日志的新增记录
tail /usr/local/squid/var/logs/access.log
通过查看squid的服务器的访问日志,可以发现客户机172.16.16.110去访问web网站服务器172.16.16.172的记录消息。
(2.)查看web访问日志的新增记录
tail /var/log/httpd/access_log
在被访问的web服务器中,通过访问日志发现来自代理服务器172.16.16.22的访问记录,说明当使用代理服务器时,web服务器并不知道客户机的真实IP地址,因为实际是由代理服务器替它在访问。
172.16.16.22的IP地址是代理服务器的地址。
二、搭建透明代理服务
- 在Linux网关上,构建squid代理服务为局域网客户机去访问Internet提供服务
- 在所有的局域网客户机上,只需正确配置IP地址、默认网关即可。
1.配置squid支持透明代理
squid服务的默认配置是不支持透明代理的,因此需要修改配置文件。squid2.6以上版本的只需在http_port配置行后面加上一个transparent选项即可。
2.设置iptables的重定向策略
注意:透明代理服务中的squid服务器是构建在Linux网关主机上的,所以要设置防火墙策略将客户机访问外网的数据包交给squid服务器去处理,在防火墙上设置一条REDIRECT(重定向策略),其作用就是将客户机访问互联网的端口映射给squid服务器的3128端口。
注意:REDIRECT也是一种数据包控制类型,只能在nat表的PREROUTING或OUTPUT链以及被调用的链中使用。
注意:此时还要开启路由转发功能,否则数据是过不去的!!!
3.验证透明代理的使用
注意:清除手动代理相关的配置
验证结果:
在squid代理服务器日志发现,客户机192.168.4.110访问过目标网站172.16.16.172的记录信息
在被访问的web网站服务器上发现,来自代理服务器的IP地址为172.16.16.1的访问记录,从而隐藏了真实IP。
三、ACL访问控制
可以针对源地址、目标地址、访问的URL路径、访问的时间等各种条件进行过滤
ACL访问控制通过以下两个步骤来实现:其一,使用acl配置项定义需要控制的条件 其二,通过http_access配置项对已定义的列表做允许 或 拒绝 访问的控制。
1.定义访问控制列表
acl 列表名称 列表类型 列表内容
常用的访问控制列表类型:
src : 源IP地址、网段、IP地址范围
dst : 目标IP地址、网段、主机名
port : 目标端口
dstdomain :目标域,匹配域内所有站点
time : 使用代理服务的时间段
maxcom : 每个客户机的并发连接数
url_regex : 目标资源的URL地址,-i表示忽略大小写
urlpath_regex :目标资源的整个URL路径。
2.设置访问权限
http_access allow或deny 列表名 取反时,加!符号
验证访问控制结果
.