本帖目的:
1、了解代理服务的常见类型
2、学会构建传统代理、透明代理服务
3、学会配置Squid的访问控制策略
一、缓存代理概述
一)缓存代理服务器的使用意义
Web代理的工作机制:缓存网页对象,减少重复请求。
使用代理的好处:
- 实现访问控制(ACL)
- 提高Web访问速度
- 隐藏客户机的真实IP地址
二)代理基本类型
传统代理:适用于Internet,需明确指定服务端(在浏览器是指定代理服务器地址和端口)
透明代理:适用于共享上网网关,不需指定服务端
二、编译安装
1、编译安装Squid 3.4.6
2、Squid配置文件
3、Squid的运行控制
4、如何使用服务脚本
二)源码安装squid
1、解压包:
tar xf squid-3.4.6.tar.gz -C /usr/src
切换到目录下:
cd /usr/src/squid-3.4.6/
2、配置squid
./configure --prefix=/usr/local/squid \
--sysconfdir=/etc \
--enable-arp-acl \
--enable-linux-netfilter \
--enable-linux-tproxy \
--enable-async-io=100 \
--enable-err-language="Simplify_Chinese" \
--enable-underscore \
--enable-poll \
--enable-gnuregex
参数解释
prefix=/usr/local/squid //指定安装路径
sysconfdir=/etc/ //指定主配置文件存放路径
enable-arp-acl //启动ACL访问控制列表,实现mac地址过滤,防止IP欺骗
enable-linux-netfilter //开启内核过滤
enable-linux-tproxy //支持透明模式
enable-async-io=100 //i=input o=output 提高输入输出的性能
enable-err-language="Simplify_Chinese" //出现错误时使用简体中文提示
enable-underscore //允许url路径中出现下划线_
enable-poll //打开poll模式,提示缓存的性能
enable-gnuregex //可以针对网站内容进行限制,比如限制某个网站,下载某个软件等
3、编译并安装
make && make install
三)运行控制
1、安装后环境:
squid服务默认端口是:TCP 3128端口
启动squid使用/usr/local/squid/sbin/squid
配置文件:/etc/squid.conf
默认用nobody运行。
2、创建软件链接:
安装完成后,which squid 查找不到,需要建立链接:
ln -s /usr/local/squid/sbin/* /usr/local/sbin/
再次which squid
3、编辑配置文件,以squid账户来运行服务):
vim /etc/squid.conf
/3128(搜索),找到后在其下面添加:
cache_effective_user squid #设置运行squid服务的用户及
cache_effective_group squid #用户组账号
保存退出
4、创建账户:
useradd -M -s /sbin/nologin squid #-M不创建宿主目录,-s指定登录SHEll。
chown -R squid:squid /usr/local/squid #更改属组和属主。
chmod 777 -R /usr/local/squid #赋予上传下载的权限
5、squid命令:
squid --help #查看帮助
squid #启动squid代理服务
squid -k reconfigure #修改配置文件后,配置立即生效执行的命令。
squid -k shutdown #关闭服务
squid -k parse #检查语法错误(可以先检查语法错误)
6、启动服务及验证:squid
开启服务:squid
验证服务是否开启:netstat -anpt | grep 3128
三、案例——传统代理配置
案例环境说明
1、主机B提供Web代理服务
2、主机C通过代理访问主机A的网站
- 基本实现过程
- 1. 配置并启用squid服务(主机B)
- 2. 设置代理客户端(主机C)
- 3. 测试代理Web访问(主机C)
一)传统代理:
1、客户机C
1)配置IP地址:ifconfig ens33 192.168.0.1
2)浏览器代理服务器配置:
打开火狐浏览器:编辑->首选项->高级->网络->配置Firefox如何连接到因特网->设置:手动配置代理:代理服务器IP及端口号(192.168.0.100,端口3128)
访问测试时,清除缓存,查看web服务访问日志,验证是否是网关服务在访问web服务器。(传统代理)
3)squid代理服务器和WEB服务器配置完成后,使用浏览器访问192.168.0.200
2、网关B(squid代理服务器,仅需配置一块网卡)
1)配置IP地址:192.168.0.100
2)启动代理服务:squid
3、服务器C:
1)配置IP地址:192.168.0.200
2)安装并开启web服务器:systemctl start httpd
3)编写首页:echo "12345" > /var/www/html/index.html
4)客户端访问后,查看访问日志:tail -f /var/log/httpd/access_log
保证各主机互通。
四、案例——构建透明代理
(一)环境说明
实验目的:
适用于共享上网网关,不需指定服务端;
局域网通过代理访问Internet中的网站;
实验环境:
准备工作:
代理服务器添加一块网卡;客户机配置网关为代理服务器IP。
客户机和代理服务器网卡ens36用仅主机模式;
代理服务器ens33和外网服务器用NAT模式。
- 基本实现过程
- 1. 配置Squid支持透明代理
- 2. 设置iptables重定向策略
- 3. 验证透明代理的使用
(二)实现过程:
1、配置Squid支持透明代理
vim /etc/squid.conf
http_port 3128 transparent #透明代理,编译时必须打开此功能。
squid -k reconfigure
2、设置iptables 重定向策略:
iptables -F
iptables -t nat -I PREROUTING -i ens36 -s 192.168.X.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
3、验证透明代理的使用.
内网浏览器不设置代理。
清空浏览器缓存,再访问外网。
五、ACL访问控制方式
1、概念
ACL,access control list,访问控制列表,是squid控制访问的一种技术。
2、ACL访问控制配置步骤:
1)定义列表:
根据源地址、目标URL、文件类型等定义列表
格式:acl 列表名称 列表类型 列表内容 ...
如:acl jifang src 192.168.43.0/24 192.168.1.0/24 #两个网段是或的关系。
2)应用acl:针对已定义的acl列表进行限制
http_access allow或deny 列表名称 ...
如:http_access allow jifang
3、常用的ACL列表类型:
src 源IP地址
dst 目标IP地址
port 目标端口
dstdomain 目标域名
time 访问时间
maxconn 最大并发连接
url_regex 目标URL地址
Urlpath_regex 整个目标URL路径
1、禁止任何客户机使用此代理服务
vim /etc/squid.conf
acl all src 0.0.0.0/0.0.0.0
http_access deny all
定义一条名为 all 的列表,匹配来自任意源地址的代理访问;然后拒绝此列表
2、允许多个局域网段在工作时间上网
vi /etc/squid.conf
acl all src 0.0.0.0/0.0.0.0
acl MYLAN src 192.168.1.0/24 192.168.4.0/24
acl WORKTIME time MTWHF 08:30-17:30
http_access allow MYLAN WORKTIME
http_access deny all
3、通过黑名单限制目标网站
vi /etc/squid/ipblock.list
61.135.167.36
60.28.14.0/24
vi /etc/squid/dmblock.list
.qq.com
.msn.com
vi /etc/squid.conf
acl IPBLOCK dst "/etc/squid/ipblock.list"
acl DMBLOCK dstdomain "/etc/squid/dmblock.list"
http_access deny IPBLOCK
http_access deny DMBLOCK
http_access allow MYLAN WORKTIME #两个ACL之间是and关系。
http_access deny all
注:定义ACL中,如果有多个条件,则条件之间是或者关系(如MYLAN中的两个网段)。
在应用ACL中,如果有多个ACL,中间用空格分隔,则ACL之间是并且关系(如上上句中的MYLAN WORKTIME之间)。如果需要取消,则在其前面加!。另外,应用多个ACL受应用顺序影响。
应用ACL时,如果前的应用与后面的冲突,前面的应用生效。
4、常用的ACL列表类型
课堂实验1:
ACL限制访问:
在透明代理实验基础之上完成下面实验:
1、编辑配置文件:
vim /etc/squid.conf
acl badclient src 192.168.43.10
http_access deny badclient #此名必须放在 http_access allow localnet之前。
squid -k reconfigure
客户机再次访问测试:
客户机更换IP,添加网关后,再次访问测试。(注:客户机更换新IP后,原有网关将消失)
2、基于目标地址限制:
acl badserver dst 2.2.2.2
http_access deny badserver
squid -k reconfigure
客户端测试
服务器修改IP后,客户端再次测试
3、基于时间的ACL测试:
acl badtime time W 10:00-11:00 #基于的代理服务器的时间
http_access deny badtime
客户端测试
4、测试文件类型:
**限制访问文件类型:
acl mmxfile url_regex \.mp3 \.mp4
六、Squid日志分析工具:Sarg
一)安装Sarg
1)配置光盘YUM源
2)安装gd图形库和apache:yum -y install gd httpd
3)安装Sarg:
tar xf sarg-2.3.7.tar.gz -C /usr/src
cd /usr/src/sarg-2.3.7
配置:
./configure --prefix=/usr/local/sarg \
--sysconfdir=/etc/sarg \
--enable-extraprotection
安装:
make && make install
4)建立软链接:
ln -s /usr/local/sarg/bin/* /usr/local/bin/
5)验证:
which sarg
二)配置sarg
sarg原理:根据squid日志定期生成网页,用于访问分析。
配置项:
修改/etc/sarg/sarg.conf
access_log /usr/local/squid/var/logs/access.log
title "Squid User Access Reports" #网页标题
output_dir /var/www/html/sarg #分析日志输出目录,放到apache目录中。
user_ip yes #在报告中使用IP地址来代替用户ID,no指使用用户名。
topuser_sort_field BYTES reverse #内容排序字段,reverse降序排序,根据连接数或字节数降序排序。
user_sort_field CONNECT reverse #用户字段排序字
overwrite_report no #报告已存在,再次生成是否覆盖原有报告。
charset UTF-8 #采用字符集
www_document_root /var/www/html #生成网页存储位置
三)启动apache
systemctl start httpd
ls /var/www/html #可以看到一个sarg-php目录。
不记录日志分析的站点,不记录自己的日志:
touch /usr/local/sarg/noreport
sarg #生成报告。
sarg --help #查看sarg命令的帮助信息。
设置定时任务生成新的日志