一.squid(代理服务器)的作用:
1. 通过缓存的方式为用户提供WEB服务加速
2. 对用户的WEB访问做访问控制
二.代理服务器分为以下三类:
1. 普通代理服务
2. 透明代理服务
3. 方向代理服务
三squid的基本配置:
1. 安装squid的软件包为:squid-2.6.STABLE21-3.el5
2. squid的运行进程为:squid
3. 运行squid的二进制文件为:/etc/init.d/squid
4. squid的监听端口为:3128(tcp)
5. squid的主配置脚本为:/etc/squid/squid.conf
6. squid的日志记录存放:/var/log/squid/access.log
四. squid主配置文件常用的配置项
1. http_port 定义squid的监听端口的,默认为3128
2. cache_mem 定义为squid分配内存的大小,默认为64M
3. visible_hostname 定义配置为可见的主机名,默认没有此项,需手动添加
4. cache_dir 定义缓存存放的目录
5. cache_mgr 定义管理员的邮箱
6. error_directory 定义错误提示的语言
7. reply_body_max_size 定义用户传输的最大数据
五.普通代理服务(为内网用户代理上网)
实验环境:内网的网卡eth1:192.168.23.23,内网的客户机ip:192.168.23.25
外网卡eth0:192.168.0.43 ,web服务器的地址为:192.168.0.254
(这里的实验环境为实验室,如有需要,可根据实际情况进行改动)
1. 修改主配置文件:
(1)visible_hostname定义为: proxy.test.com
(2)用户的最大传输数据位:10M
(3)访问控制列表定义为allow all
(4)监听端口定义为内网卡的8080端口:
(5)定义错误提示的语言为中文
(6)定义管理员的邮箱地址:
2. 初始化squid的缓存目录:
3.分析是否有语法错误:
3.启动squid服务:
4. 做客户端的设置,这里以Firefox为例:
(1) 打开工具栏中的"编辑"-----》"首选项"-----》"高级"-----》"网络"----》"设置"-----》"手动配置代理"
设置代理地址为内网卡的ip:192.168.23.23,代理端口为8080,然后点击"确定"退出。
5. 我们去做一下测试:
,可以看到我们能正常的访问到远程服务器。
6. 我们去下载大于10M的文件:
可以看到,被拒绝,在图中也可以看到我们刚刚做的设置
六. ACL的访问控制
1. 应用访问控制的方式:
定义acl列表:
acl 列表名称 列表类型 列表内容
针对列表进行限制
http_access allow或deny 列表名
2. 常用的acl的列表类型
src 基于源地址的控制
des 基于目的地址的控制
port 基于来目的端口的控制
srcdomain 基于源域名的控制
desdomain 基于目的域名的控制
time 基于时间的控制
proto 基于协议的控制,只能控制http和ftp协议
maxconn 基于一个ip最大的连接数的控制
url-regex 基于全路径中字符的控制
urlpath_regex 基于非必须全路径的控制
3. 访问控制规则的匹配顺序:
每一次客户端请求代理服务器都会产生组合(源地址src,目标地址dst,目标域名dstdomain,时间time,等等....),服务器端拿着此组合,按http_access的顺序进行匹配(只匹配相同的类型),直到第一次匹配到allow或deny的http_access,如果是allow,则允许访问,不再匹配;如果是deny,则禁止访问,不再匹配。
注意:如果一条组合匹配到最后都没有匹配到allow或deny,那么如果它最后进行匹配的http_access是allow,则deny此次请求;否则allow此次请求。
4. 设置不能下载以.pdf结尾的文件:
然后重新读取一下配置文件;
我们试着下载一个pdf格式的文件:
如图,访问遭到拒绝。
5. 设置基于协议的控制
重新读取一下配置文件
6. 然后我们再去访问远程主机:
可以看到访问被拒绝。
7. 设置基于时间的访问控制(注意:设置基于时间的访问控制的时候,起始时间必须小于结束时间)
我现在的时间为:
再重新去读一下配置文件,然后再去做验证:
可以看到访问被拒绝。
七. 配置透明代理:
现在的企业上网大部分采用的就是这种方法,客户机浏览器
不需要在浏览器中指定代理服务器的地址、端口
配置要求:
(1)代理服务程序能够支持透明代理
(2)设置防火墙规则,将客户机的Web访问数据自动重定向给代理服务程序处理
1.修改主配置文件,设置监听的地址和监听的端口号:
禁用刚才我们做的ACL,重新读取配置文件
2. 配置iptables的规则:
iptables –t nat –A PREROUTING –i eth1 –s 192.168.23.0/24 –p tcp –dport 80 –j REDIRECT –to-port 8080
3. 然后我们取消刚才Forefox浏览器中的代理:
4. 再设置本地的网关为 192.168.23.23
5. 我们再去验证一下:
可以看到,我们能正常的访问远程主机。