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

squid代理服务器概述:

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

squid代理的做用:

1.做为应用层的代理服务软件,经过缓存方式为用户提供Web加速访问。正则表达式

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

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

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

squid的两种代理模式:

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

ACL访问控制:

Squid提供了强大的代理控制机制,经过合理设置ACL并进行限制,能够针对源地址、目标地址、访问的URL路径、访问的时间等各类条件进行过滤。
在配置文件squid.conf中,ACL访问控制经过两个步骤来实现:
1.使用acl配置项定义须要控制的条件
2.经过http_access配置项对已定义的列表作“容许”或“拒绝”访问的控制**
ACL访问控制列表定义格式:acl 列表名称 列表类型 列表内容
经常使用的ACL访问控制列表类型:
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)
注:没有设置任何规则时,squid服务将拒绝客户端的请求,有规则但找不到相匹配的项时,squid将采用与最后一条规则相反的权限,即若是最后一条规则是allow,就拒绝客户端的请求,不然容许该请求,咱们要尽可能避免找不到规则的状况出现。**vim

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.logcentos

实验过程:

yum install -y squid #yum在线安装squid
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)
systemctl enable squid.service
systemctl start squid.service #开启squid服务
netstat -tunlp | grep squid #查看监听状态
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)
注:yum安装完成后无需配置即为标准正向代理模式。浏览器


在客户端Windows7系统上对IE浏览器进行代理服务器设置:
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)缓存


接下来在另一台centos 7.5 系统上搭建Apache服务,并在win7客户端测试访问,确保实验顺利进行:
yum install -y httpd #直接用yum安装 :
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)
在客户端进行访问测试(需先关闭以前设置的代理服务器配置):
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)安全


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

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 #
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)
iptables -F #清空防火墙规则
setenforce 0
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
在ip为192.168.138.131的客户端验证:
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)
新开一台客户端进行验证:
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)
验证已成功,仅限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
每次修改完配置文件后记得重启服务。
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)
接下来yum -y install httpd httpd-devel expect 使用apache的工具htpasswd生成密码文件
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)
生成密码文件:htpasswd -c /etc/squid/passwd yang:
New password: #输入密码
Re-type new password: #再次确认密码
Adding password for user yang
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)
建立成功后会生成/etc/squid/passwd密码文件:
cat /etc/squid/passwd #查看
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)
squid -k parse #检查一下文件参数
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)
记得重启服务systemctl restart squid.service ;而后在客户端进行访问测试。(须要登陆用户密码才能访问)
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)


设置内存及硬盘缓冲区大小
cache_mem 64M
cache_dir ufs /var/spool/squid 2000 16 256
Squid缓存服务器(缓存机制、代理模式、ACL访问控制、squid用户认证功能等)
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 下载工具),必须经过环境变量来指定代理服务器的地址、端口等信息。
[root@localhost ~]# 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

[root@localhost ~]# source /etc/profile #从新加载


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

相关文章
相关标签/搜索