Squid缓存服务器(缓存机制代理模式ACL访问控制squid用户认证功能等)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Squid缓存服务器(缓存机制代理模式ACL访问控制squid用户认证功能等)相关的知识,希望对你有一定的参考价值。

squid代理服务器概述:

Squid是Linux系统中最常用的一款开元代理服务软件(官方网站:http://www.squid-cache.org) ,可以很好的实现HTTP、FTP、DNS查询,以及SSL等应用的缓存原理,功能十分强大。

squid代理的作用:

1.作为应用层的代理服务软件,通过缓存方式为用户提供Web加速访问。

  1. 对用户的Web访问请求具备进行过滤控制的功能。

squid代理服务器的缓存机制图解:

技术分享图片

squid的两种代理模式:

一、正向代理模式有两种类型:
1.传统正向代理
作用:多见于Internet环境,实现代理上网、可以隐藏本机真实IP地址,为下载工具使用多个代理可以规避服务器的并发连接限制。
2.透明代理
作用:多见于局域网环境,如在Linux网关中启用透明代理后,对控制用户访问网站行为的访问控制列表(ACL)进行限制。局域网主机无需进行额外的设置就可以享受更好的上网速度。
二、反向代理模式:
作用:加快用户访问网站的速度,降低网站资源服务器的负载压力
三、传统正向代理模式与透明正向代理模式的区别:
传统正向代理模式用户需要配置代理服务器的信息。若使用透明代理模式,则用户感知不到代理服务器的存在。
四、正向代理和反向代理的概念理解:
正向代理:代理服务器 代理客户端访问后端web服务器。
应用场景:为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。
安全性:正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。
反向代理:代理服务器 代表后端web服务器响应客户端的访问请求。
应用场景:反向代理还可以为后端的多台服务器提供负载平衡,为后端较慢的服务器提供缓冲服务。另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。
安全性:反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。

ACL访问控制:

Squid提供了强大的代理控制机制,通过合理设置ACL并进行限制,可以针对源地址、目标地址、访问的URL路径、访问的时间等各种条件进行过滤。
在配置文件squid.conf中,ACL访问控制通过两个步骤来实现:
1.使用acl配置项定义需要控制的条件
2.通过http_access配置项对已定义的列表做“允许”或“拒绝”访问的控制**
ACL访问控制列表定义格式:acl 列表名称 列表类型 列表内容
常用的ACL访问控制列表类型:
技术分享图片
注:没有设置任何规则时,squid服务将拒绝客户端的请求,有规则但找不到相匹配的项时,squid将采用与最后一条规则相反的权限,即如果最后一条规则是allow,就拒绝客户端的请求,否则允许该请求,我们要尽量避免找不到规则的情况出现。**

Squid日志分析:

概述:Sarg的全名是Squid Analysis Report Generator,是一款Squid日志分析工具,采用html格式,详细列出每一位用户访问Internet的站点信息、时间占用信息、排名、连接次数和访问量等。

部署 Squid以上所讲的代理服务实验:

实验环境准备:

主机 操作系统 IP地址 软件版本
Win7客户端 Windows7 192.168.138.131 系统自带浏览器
squid代理服务器 centos 7.5 192.168.138.132 squid3.5.20
web服务器 centos 7.5 192.168.138.128 httpd-2.4.6

> Squid主要组成部分:

主程序:/usr/sbin/squid
配置目录:/etc/squid
主配置文件:/etc/squid/squid.conf
监听tcp端口号:3128
默认访问日志文件:/var/log/squid/access.log

实验过程:

yum install -y squid #yum在线安装squid
技术分享图片
systemctl enable squid.service
systemctl start squid.service #开启squid服务
netstat -tunlp | grep squid #查看监听状态
技术分享图片
注:yum安装完成后无需配置即为标准正向代理模式。


在客户端Windows7系统上对IE浏览器进行代理服务器设置:
技术分享图片
技术分享图片


接下来在另外一台centos 7.5 系统上搭建Apache服务,并在win7客户端测试访问,确保实验顺利进行:
yum install -y httpd #直接用yum安装 :
技术分享图片
在客户端进行访问测试(需先关闭之前设置的代理服务器配置):
技术分享图片


> 在客户端浏览器上恢复代理服务器的设置,接下来在传统正向代理模式下列举几种应用场景进行实验

1.只允许IP为192.168.138.131的客户端使用代理上网,禁止其他主机的代理请求:
vim /etc/squid/squid.conf #编辑配置文件
1 #
2 # Recommended minimum configuration:
3 #
4
5 # Example rule allowing access from your local networks.
6 # Adapt to list your (internal) IP networks from where browsing
7 # should be allowed
8 acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
9 acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
10 acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
11 acl localnet src fc00::/7 # RFC 4193 local private network range
12 acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
13
14 acl SSL_ports port 443
15 acl Safe_ports port 80 # http
16 acl Safe_ports port 21 # ftp
17 acl Safe_ports port 443 # https
18 acl Safe_ports port 70 # gopher
19 acl Safe_ports port 210 # wais
20 acl Safe_ports port 1025-65535 # unregistered ports
21 acl Safe_ports port 280 # http-mgmt
22 acl Safe_ports port 488 # gss-http
23 acl Safe_ports port 591 # filemaker
24 acl Safe_ports port 777 # multiling http
25 acl CONNECT method CONNECT
26 acl client src 192.168.138.131 #新增规则
27 #
28 # Recommended minimum Access Permission configuration:
29 #
30 # Deny requests to certain unsafe ports
31 http_access all client # 允许client的规则
32 http_access deny all #拒绝其他所有规则
33 http_access deny !Safe_ports
34
35 # Deny CONNECT to other than secure SSL ports
36 http_access deny CONNECT !SSL_ports
37
38 # Only allow cachemgr access from localhost
39 http_access allow localhost manager
40 http_access deny manager
41
42 # We strongly recommend the following be uncommented to protect innocent
43 # web applications running on the proxy server who think the only
44 # one who can access services on "localhost" is a local user
45 #http_access deny to_localhost
46
47 #
48 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
49 #
技术分享图片
iptables -F #清空防火墙规则
setenforce 0
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
在ip为192.168.138.131的客户端验证:
技术分享图片
新开一台客户端进行验证:
技术分享图片技术分享图片
验证已成功,仅限192.168.138.131客户机访问,其他客户端访问不了。


ACL访问控制还有如下可修改参数:

vim /etc/squid.conf
acl localhost src 192.168.100.1/32 ---(src:针对源一个IP地址访问控制)
acl MYLAN src 192.168.100.0/24 --(针对一个网段访问控制)
acl destionhost dst 192.168.172.130.32--(针对目标地址进行控制)
acl MC20 maxconn 20 ---(最大链接数量,也就是并发数)
acl BURL url_regex -i ^rtsp:// ^emule:// (基于正则表达式,对访问路径比如:以 http:// 开头的)
acl PURL urlpath_regex -i .mp3$ .mp4$ .rmv$ (以MP3 为结尾的路径控制)
** mkdir /etc/squid #启用对象列表管理

vim /etc/squid/dest.list

192.168.138.50
192.168.138.60
192.168.138.70 #目标web
对很多网络的ip进行打包管理

vim /etc/squid.conf
acl destionhostdst "/etc/squid/dest.list"

http_access deny destionhost #拒绝列表(注意事项)

systemctl restart squid.service


> 2.用户认证功能:

vim /etc/squid/squid.conf #编辑配置文件
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd #选择的认证方式为basic,认证程序路径和密码文件路径。
auth_param basic children 5 #认证程序的进程数
auth_param basic realm this is squid server #验证域的提醒字符串
auth_param basic credentialsttl 2 hours #认证有效时间
auth_param basic casesensitive off
acl auth_user proxy_auth REQUIRED #设置允许认证的用户访问

http_access deny !auth_user
http_access allow auth_user
http_access deny all
每次修改完配置文件后记得重启服务。
技术分享图片
接下来yum -y install httpd httpd-devel expect 使用apache的工具htpasswd生成密码文件
技术分享图片
生成密码文件:htpasswd -c /etc/squid/passwd yang:
New password: #输入密码
Re-type new password: #再次确认密码
Adding password for user yang
技术分享图片
创建成功后会生成/etc/squid/passwd密码文件:
cat /etc/squid/passwd #查看
技术分享图片
squid -k parse #检查一下文件参数
技术分享图片
记得重启服务systemctl restart squid.service ;然后在客户端进行访问测试。(需要登录用户密码才能访问)
技术分享图片
技术分享图片


设置内存及硬盘缓冲区大小
cache_mem 64M
cache_dir ufs /var/spool/squid 2000 16 256
技术分享图片
systemctl restart squid.service #重启服务
squid -z #初始化缓存


透明正向代理模式:

将各个主机网卡改为仅主机模式,设置成100段落的ip地址:

主机 ip地址
squid代理服务器 ens33:192.168.100.1
ens36:12.0.0.1
web服务器 12.0.0.12
Windows客户端 192.168.100.12

通过SNAT技术完成数据的转发,让客户端将数据发给Squid代理服务器,再由其转发到外网
//在squid上开启路由转发
echo "1" > /proc/sys/net/ipv4/ip_forward

//清空防火墙策略
iptables -F
iptables -t nat -F
setenforce 0

//修改著配置文件
vim /etc/squid.conf

//修改监听地址,因为是内网需要访问外网,所以监听的是内网 transparent:意思就是透明模式
http_port 192.168.100.1:3128 transparent

//定义防火墙策略:
iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128

iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128

iptables -I INPUT -p tcp --dport 3218 -j ACCEPT

如果要再Linux客户机的命令行界面中使用代理服务器(比如:elinks 网页浏览器、wget 下载工具),必须通过环境变量来指定代理服务器的地址、端口等信息。
[[email protected] ~]# vim /etc/profile #添加如下内容到环境变量中
添加如下内容:
HTTP_PROXY=http:192.168.100.50:3128 #为使用HTTP协议指定代理
HTTPS_PROXY=http:192.168.100.50:3128 #为使用HTTPS协议指定代理
FTP_PROXY=http:192.168.100.50:3128 #为使用FTP协议指定代理
NO_RPOXY=192.168.20.,192.168.30. #对两个局域网段不使用代理
export HTTP_PROXY HTTPS_PROXY FRP_PROXY NO_PROXY

[[email protected] ~]# source /etc/profile #重新加载


下篇详细写squid 日志分析和squid 反向代理。

以上是关于Squid缓存服务器(缓存机制代理模式ACL访问控制squid用户认证功能等)的主要内容,如果未能解决你的问题,请参考以下文章

缓存加速------Squid代理服务器应用(传统代理,透明代理,反向代理,ACL访问控制,日志分析)

Squid 缓存服务器的缓存代理,及配置 Squid 的ACL访问控制策略

Squid缓存服务器之ACL访问控制与反向代理

Squid代理--经典缓存代理服务器(实现正向代理配置ACL各种访问控制日志分析)

squid缓存服务器ACL访问控制

Squid 缓存代理 详解