O documento fornece instruções sobre como configurar e usar um servidor proxy Squid em GNU/Linux. Ele explica como instalar e configurar o Squid, bloquear sites e arquivos, configurar cache e regras de acesso com base em IP, URL e horário.
2. Servidor Proxy (Squid)
● Um servidor proxy é um computador intermediário
que fica entre o computador do usuário e a
Internet. Pode ser utilizado para registrar o usuo
da Internet e também para bloquear o acesso a
um site.
● Site do Squid: www.squid-cache.org
● Possui muita documentação e diversos exemplos
3. Servidor Proxy (Squid)
● aptitude install squid3
● Serviço de Proxy mais utilizado em servidores
GNU/Linux
● Diretório de configuração /etc/squid3/
● Arquivo de configuração do servidor squid.conf
● Arquivo todo documentado em
/usr/share/doc/squid3-common/
● Reinicio systemctl reload squid3.service ou squid3 -k
reconfigure
● Diretorio cache /var/spool/squid3
● O Squid trabalha por padrão na porta 3128
4. Servidor Proxy (Squid)
● Como podemos saber se o processo está em
execução? Podemos saber através de alguns
comandos da aula passada:
– $ ps -aux (lista todos os processos do sistema)
– Para fazermos um filtro nesta listagem, podemos
utilizar o comando grep
– $ ps -aux |grep squid
– Assim teremos como resultado somente os
processos com o nome squid
5. Servidor Proxy (Squid)
● Outra forma de testarmos, e vermos se a porta do
serviço 3128 está aberta no sistema através do
comando netstat:
– $ netstat -patun (lista todas as conexões ativas)
– E voltando ao nosso grep para filtrar podemos
fazer assim
– $ netstat -patun |grep 3128
● E claro, a forma padrão de visualização é :
– $ systemctl status squid3.service
– Ou
– $ service squid3 status (forma antiga)
6. Servidor Proxy (Squid)
● Vamos agora editar o arquivo de configuração do squid,
edite o arquivo /etc/squid3/squid.conf
● Procure pelas linhas (1042):
● # acl localnet src …
● E adicione a linha
acl rede src 192.168.32.0/19
● Agora procure pela linha (1211):
● # http_access allow localnet
● E adicione a linha
http_access allow rede
7. Servidor Proxy (Squid)
● Reinicie o squid
– $ systemctl reload squid3.service ou
– $ service squid3 reload ou
– $ squid3 -k reconfigure
● Verifique seu status
● Configure seu navegador para utilizar como proxy o ip de
sua máquina virtual na porta 3128
● Veja seus logs de navegação do seu proxy :
– $ tail -f /var/log/squid3/access.log
● Com isto você começa a consumir recursos do seu
servidor, monitore com o htop e tcptrack -i eth0 por
exemplo.
8. Servidor Proxy (Squid)
● Vamos começar com a parte interessante, vamos bloquear
download de arquivos executáveis (.exe) e arquivos .pif
(possíveis vírus quando o usuario clica em seu e-mail)
● Vamos também bloquear o site da globo.com
● Edite novamente seu arquivo de configuração do squid
em /etc/squid3/squid.conf
● Procure por sua acl rede e adicione as linhas:
acl globo url_regex -i globo.com
acl extensoes url_regex -i .exe(?.*)?$ .pif(?.*)?$
● Agora procure por sua linha http_access allow rede e deixe
ela assim:
http_access allow rede !globo !extensoes
9. Servidor Proxy (Squid)
● Reinicie seu proxy e faça os testes.
● Apenas lembrando...
– $ systemctl reload squid3.service ou
– $ service squid3 reload ou
– $ squid3 -k reconfigure
10. Servidor Proxy (Squid)
● Algumas configurações a mais do proxy
● Procure por cache_mgr e abaixo dos comentários adicione a
linha:
cache_mgr seuemail@dominio.com
● Procure por visible_hostname e abaixo dos comentários
adicione a linha:
visible_hostname debian.unifebe.edu.br (ou suas
informações)
● Procure por dns_nameservers e abaixo dos comentários
adicione a linha:
dns_nameservers 192.168.40.1
● Reinicie e verifique se o serviço funcionou, teste a alteração
da pagina de bloqueio.
11. Servidor Proxy (Squid)
● De um netstat -patun |grep 3128
● Verifique onde o squid está escutando na porta 3128
tcp6 0 0 :::3128 :::* OUÇA 1173/(squid-1)
● Baseado na informação anterior, a porta 3128 está aberta para
qualquer interface de rede.
● Sabemos que servidores proxy possuem no mínimo duas
interfaces de rede, uma que vem a internet e outra que vai para a
rede interna.
● Com esta informação acima, o seu servidor proxy estará “ouvindo”
em qualquer interface de rede que tiver em sua máquina, com isto,
corremos o risco de alguém da internet acessar a porta 3128 caso
você não possua um firewall bloqueando-a.
● Para evitar contratempos, o correto é configurar o squid para
“ouvir” somente nas redes internas.
12. Servidor Proxy (Squid)
● Altere a linha http_port 3128 para:
http_port 10.0.2.15:3128 (onde 10.0.2.15 é o seu IP)
http_port 127.0.0.1:3128
● Com isto seu squid abrirá a porta do proxy apenas na rede
local e no localhost
● De um reload na configuração e faça a verificação novamente
com o comando netstat -patun |grep 3128, deve ficar algo
em torno disto:
tcp 0 0 127.0.0.1:3128 0.0.0.0:* OUÇA 1173/(squid-1)
tcp 0 0 10.0.2.15:3128 0.0.0.0:* OUÇA 1173/(squid-1)
13. Servidor Proxy (Squid)
● Por padrão o squid não faz cache, precisamos habilitar estas
duas linhas no squid.conf:
● Descomente e altere a variável cache_mem 256 MB para:
cache_mem 64 MB
● Descomente a linha
cache_dir ufs /var/spool/squid3 100 16 256
● Pare o squid
● Inicie o squid novamente
● Utilize o comando squid3 -z para criar o cache (caso
necessário)
● Verifique se os arquivos de cache foram criados em
/var/spool/squid3
14. Servidor Proxy (Squid/Calc. Hard.)
● Considerando o seguinte exemplo:
- 100Gb de espaço no cache_dirs
cache_dir ufs /var/spool/squid/ 100000 16 256
- 10Mb por cada giga dos 100Gb do cache_dirs em sistemas 32bits, em
64bits 16Mb por cada giga.
- 256Mb de cache_mem
- 20Mb adicional sugerido para o cálculo.
● Conta:
para sistemas 32bits
100 * 10 = 1000Mb + 256M + 20M = 1276Mb onde você deverá ter de ram
pelo menos o dobro desse valor, ou seja, você teria que ter na máquina 2552
Mb de RAM.
cache_mem = 1276 MB
15. Servidor Proxy (Squid/Calc. Hard.)
● para sistemas 64bits
100 * 16 = 1600Mb + 256M + 20M = 1876Mb onde você deverá ter de ram
pelo menos o dobro desse valor, ou seja, você teria que ter na máquina
3752Mb
cache_mem = 1876 MB
● Para nossa maquina virtual que possui 1 core e 256 mb RAM e 3 gb de
espaço livre para o cache em um sistema 32 bits, as variáveis corretas são:
Invertendo a conta: (256MB – 20MB – (3* 10Mb))/ 2 = 103
cache_mem 103 MB
cache_dir ufs /var/spool/squid3/ 3000 16 256
(lembre que a recomendação é máxima 8 GB por diretório de cache)
16. Servidor Proxy (Squid)
● Mais configurações sobre o cache:
maximum_object_size_in_memory 64 KB
(tamanho dos objetos que ficam na RAM)
maximum_object_size 512 MB
minimum_object_size 0 KB
(tamanho dos arquivos em disco)
● Faça testes e verifique o cache com o ncdu
17. Servidor Proxy (Squid)
● Regras por ip específico:
acl estacao-1 src 192.168.50.10
acl estacao-2 src 192.168.50.11
acl webmail url_regex -i “/etc/squid3/webmails.txt“
http_access allow estacao-1
http_access allow estacao-2 !globo !extensoes
http_access allow rede !globo !webmail !extensoes
● Procure sempre estabelecer as regras de liberações
antes das regras de proibições
● Faça regras de bloqueio de redes sociais
18. Servidor Proxy (Squid)
● Regras por horário
S domingo M segunda-feira T terça-feira
W quarta-feira H quinta-feira F sexta-feira
A sábado
acl almoco time MTWHFA 12:00-14:00
● Faça testes como por exemplo, liberar o acesso ao
webmail no horário do almoço.
19. Servidor Proxy (Squid)
● Para liberar no horário do almoço as regras ficariam
assim:
http_access allow webmail almoco
http_access allow rede !globo !webmail !extensoes
20. Servidor Proxy (Squid)
● Liberação de portas no proxy
● As vezes é necessário acessar algum site utilizando o
proxy que funciona em uma porta fora do padrão, como
por exemplo 8080, 2573, 10000 etc.
● Para liberar este acesso você deve adicionar linhas nas
regras Safe_ports, como por exemplo:
acl Safe_Ports port 8080
acl Safe_Ports port 2573
● Caso a porta 10000 seja SSL (geralmente utilizada no
webmin) adicione a linha assim:
acl SSL_ports port 10000