Servidor proxy Squid - controle de acesso ACL, análise de registro Sarg e prática de configuração de proxy reverso
Um: acesso de controle ACL
1.1: Método de controle de acesso ACL
- Defina a lista de acordo com o endereço de origem, URL de destino, tipo de arquivo, etc.
acl 列表名称 列表类型 列表内容...
- Restrições na lista ACL definida
http_access allow或deny 列表名称 ...
1.2: prioridade da regra ACL
- Quando um usuário acessa o servidor proxy, o Squid irá corresponder sequencialmente todas as listas de regras definidas no Squid. Assim que a correspondência for bem-sucedida, a correspondência irá parar imediatamente
- Quando nenhuma das regras corresponder, o Squid usará a regra oposta à última
1.3: Tipos de lista ACL comumente usados
src | Endereço de Origem |
---|---|
DST | Endereço de destino |
porta | porta |
dstdomain | Domínio alvo |
Tempo | hora da entrevista |
maxconn | Máximo de conexões simultâneas |
url_regex | Endereço de URL de destino |
Urlpath_regex | Todo o caminho do URL de destino |
- Por exemplo
acl localhost src 20.0.0.20/32
acl MYLAN src 20.0.0.0/24
acl destionhost dst 20.0.0.52/32
acl MC20 max-conn 20
acl BURL url_regex -i ^rtsp:// ^emule://
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$
acl work time MTWHFAC 08:30-17:30
1.4: Configuração Experimental
1.4.1: Meio Ambiente
- Software VMware
- Uma máquina virtual centos7 como servidor squid, o endereço IP é: 20.0.0.51
- Uma máquina virtual centos7 como servidor web, o endereço IP é: 20.0.0.52
- Uma máquina virtual win7 como máquina de teste cliente, o endereço IP é: 20.0.0.20
1.4.2: Finalidade experimental
- Permitir e negar acesso ao host por meio do controle de acesso ACL
1.4.3: Procedimento Experimental
-
Para construir o squid, baseado no modelo tradicional, você pode ler meu blog anterior
-
Link: https://blog.csdn.net/m0_47219942/article/details/108433500 .
-
Método 1: definir regras de acesso ACL (quando não houver muitos endereços IP)
[root@squid ~]# vim /etc/squid.conf
# should be allowed
acl localhost src 20.0.0.20/32 '添加,监控client客户端的主机(20.0.0.20/32)取名为hostlocal'
# Deny requests to certain unsafe ports
http_access deny hostlocal '添加,调用hostlocal,设置拒绝访问'
[root@squid ~]# service squid restart
- Método 2: definir regras de acesso ACL (quando vários endereços IP)
mkdir /etc/squid '启用对象列表管理'
vim dest.list
20.0.0.52 '目标WEB'
vim /etc/squid.conf
acl destionhost dst "/etc/squid/dest.list"
http_access deny destionhost 拒绝列表(注意置顶)
[root@squid ~]# service squid restart
- O cliente tenta acessar a web, o cliente primeiro limpa os dados do navegador
Dois: ferramenta de análise de registro de lula Sarg
2.1: Implantar sarg no servidor squid
[root@squid ~]# yum install -y gd gd-devel
[root@squid ~]# mkdir /usr/local/sarg
[root@squid ~]# tar zxvf sarg -C /opt
[root@squid ~]# cd /opt/sarg-2.3.7/
[root@squid sarg-2.3.7]# ./configure --prefix=/usr/local/sarg \
> --sysconfdir=/etc/sarg \
> --enable-extraprotection
[root@squid sarg-2.3.7]# make && make install
2.2: Modifique o arquivo de configuração Sarg
[root@squid sarg-2.3.7]# vim /etc/sarg/sarg.conf
'配置文件中所有的都被注释了,我们需要取消注释一下内容'
access_log /usr/local/squid/var/logs/access.log '指定访问日志文件'
title "Squid User Access Reports" '网页标题'
output_dir /var/www/html/squid-reports '报告输出目录'
user_ip no '使用用户名显示'
exclude_hosts /usr/local/sarg/noreport '不计入排序的站点列表文件'
topuser_sort_field connect reverse
'top排序中有连接次数,访问字节,降序排列,升序是normal'
overwrite_report no '同名日志是否覆盖'
mail_utility mailq.postfix '发送邮件报告命令'
charset UTF-8 '使用字符集'
weekdays 0-6 'top排行的时间周期'
hours 0-23 'top排行的时间周期'
www_document_root /var/www/html '网页根目录'
[root@squid sarg-2.3.7]# touch /usr/local/sarg/noreport '添加不计入站点文件,添加的域名将不被显示'
[root@squid sarg-2.3.7]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/ '创建sarg命令的软连接'
[root@squid sarg]# sarg '生成报告'
SARG: 纪录在文件: 158, reading: 100.00%
SARG: 成功的生成报告在 /var/www/html/squid-reports/2020Sep07-2020Sep07'提示报告生成在这个目录,我们进入这个目录查看一下'
[root@squid sarg-2.3.7]# cd /var/www/html/squid-reports/ '进入目录'
[root@squid squid-reports]# ls
2020Feb08-2020Feb08 images index.html
[root@squid squid-reports]# yum install httpd -y '安装httpd'
[root@squid squid-reports]# systemctl start httpd '开启httpd'
[root@squid squid-reports]# systemctl stop firewalld.service '关闭防火墙'
[root@squid squid-reports]# setenforce 0
2.3: Use o cliente cliente para acessar o log do sarg
-
Visite 20.0.0.51/squid-reports
-
Execute tarefas agendadas periódicas e gere relatórios todos os dias
[root@squid squid-reports]# sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/squid-reports/ -z -d $(date -d "1 day ago" +%d/%m/%Y)-$(date +%d/%m/%Y)
- Verifique novamente
Três: proxy reverso do Squid
3.1: Adicionar um servidor web e definir o conteúdo da página inicial
- Adicione um servidor web2 com um endereço IP de 20.0.0.47
'原本的web服务器修改一下主页内容用来和新添加的web2服务器区分'
[root@web ~]# cd /var/www/html
[root@web html]# vim index.html '修改首页内容'
<h1>this is web01</h1>
'web2服务器设置'
[root@web2 ~]# yum install httpd -y '安装httpd服务'
[root@web2 ~]# vim /var/www/html/index.html '修改首页内容'
<h1>this is web02</h1>
[root@web2 ~]# systemctl stop firewalld.service '关闭防火墙'
[root@web2 ~]# setenforce 0
[root@web2 ~]# systemctl start httpd '开启httpd服务'
- Configurar proxy reverso
[root@squid squid-reports]# vim /etc/squid.conf
http_port 20.0.0.51:80 accel vhost vport '监控本机80端口'
cache_peer 20.0.0.47 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1 '节点服务器1最大访问30,权重1,别名web1'
cache_peer 20.0.0.52 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2 '节点服务器2最大访问30,权重1,别名web2'
cache_peer_domain web1 web2 www.yun.com '访问www.yun.com匹配web1,web2节点'
[root@squid squid-reports]# service squid restart '重启服务'
正在关闭 squid...
正在启动 squid...
[root@squid sarg]# netstat -ntap |grep squid '查看80端口是否被squid使用'
tcp 0 0 20.0.0.51:80 0.0.0.0:* LISTEN 53968/(squid-1)
3.2: O cliente configura a resolução do nome de domínio e proxy squid e testa
- Configure a resolução do nome de domínio (faça login como usuário administrador)
- Localização: unidade C-Windows-system32-drivers-etc-hosts
- Defina o proxy do navegador: como você está usando o Google Chrome, use o Google Chrome como exemplo
- O cliente visita www.yun.com para verificar se o proxy foi bem-sucedido
- O cliente implementa o acesso de pesquisa e o proxy reverso é bem-sucedido