Descrição: Neste artigo serão abordados os principais aspectos para a implantação de um servidor proxy com os serviços de DHCP, Proxy Transparente, Sarg, Samba, exemplos de scripts para automatização de atualização remota, cron e repositórios locais para clientes GNU/Linux.
O Squid é o principal responsável pelo serviço de webproxy com a possibilidade de proxy autenticado ou transparente, entre outras funcionalidades temos a possibilidade de cache, controle de banda, definição de acesso por horário e controle de acesso. Neste roteiro será abordado a criação de um proxy transparente, além da possibilidade da compilação para permitir que o Squid realize a escuta do protocolo HTTPS (porta 443) e a criação e cache de certificados dinâmicos.
Para a implantação do proxy transparente há um exemplo de configurações mínimas, o arquivo alvo da edição está localizado na pasta /etc/squid3 com o nome squid.conf:
# nano /etc/squid3/squid.conf
# Este arquivo provê as configurações básicas do Squid # # Inicio do arquivo # Configuracoes basicas
http_port 3128 transparent
visible_hostname onix.arm
# Configurações do servidor
error_directory /usr/share/squid3/errors/pt-br
acl all src
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563 873
acl Safe_ports port 80 # http
acl Safe_ports port 21 # FTP
acl Safe_ports port 443 563 873 # https,News
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # swat
acl Safe_ports port 1025-65535 # Portas altas
acl purge method PURGE
acl CONNECT method CONNECT
access_log /var/log/squid3/access.log
cache_access_log /var/log/squid3/access.log
cache_log /var/log/squid3/cache.log
cache_swap_log /var/log/squid3/swap.log
logformat squid3 %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
cache_mgr onix.arm@onix.com # Email da página de erro do Squid
# Considerações finais
http_access allow localhost
http_access allow redelocal
http_access deny all
Reinicie o serviço do Squid:
# systemctl restart squid3
Verifique o status do serviços.
# systemctl status -l squid3
● squid3.service - LSB: Squid HTTP Proxy version 3.x
Loaded: loaded (/etc/init.d/squid3)
Active: active (running) since Seg 2015-07-13 23:44:12 BRT; 4s ago
Process: 1531 ExecStop=/etc/init.d/squid3 stop (code=exited, status=0/SUCCESS)
Process: 1554 ExecStart=/etc/init.d/squid3 start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/squid3.service
├─1590 /usr/sbin/squid3 -YC -f /etc/squid3/squid.conf
├─1592 (squid-1) -YC -f /etc/squid3/squid.conf
├─1593 (unlinkd)
└─1594 (pinger)
Jul 13 23:44:12 onix squid3[1554]: 2015/07/13 23:44:12 kid1| Making directories in /var/spool/squid3/06
Jul 13 23:44:12 onix squid3[1554]: 2015/07/13 23:44:12 kid1| Making directories in /var/spool/squid3/07
Jul 13 23:44:12 onix squid3[1554]: 2015/07/13 23:44:12 kid1| Making directories in /var/spool/squid3/08
Jul 13 23:44:12 onix squid3[1554]: 2015/07/13 23:44:12 kid1| Making directories in /var/spool/squid3/09
Jul 13 23:44:12 onix squid3[1554]: 2015/07/13 23:44:12 kid1| Making directories in /var/spool/squid3/0A
Jul 13 23:44:12 onix squid3[1554]: 2015/07/13 23:44:12 kid1| Making directories in /var/spool/squid3/0B
Jul 13 23:44:12 onix squid3[1554]: 2015/07/13 23:44:12 kid1| Making directories in /var/spool/squid3/0C
Jul 13 23:44:12 onix squid3[1554]: 2015/07/13 23:44:12 kid1| Making directories in /var/spool/squid3/0D
Jul 13 23:44:12 onix squid3[1554]: 2015/07/13 23:44:12 kid1| Making directories in /var/spool/squid3/0E
Jul 13 23:44:12 onix squid3[1554]: 2015/07/13 23:44:12 kid1| Making directories in /var/spool/squid3/0F
Com este arquivo base nenhum acesso será negado e a partir dele podemos definir as diretivas através das ACLs.
Access Control List
Com a configuração do Squid funcional é possível definir acessos e seus controles através das ACLs (Access Control List). Antes de tratar das ACLs é necessário o entendimento de algumas regras:
1. Por definição quando a requisição é realizada o Squid analisa o conteúdo do squid.conf do topo para o fim, procurando uma diretiva que se encaixe com o padrão da requisição até o final do arquivo.
2. É interessante definir como última diretiva uma regra para bloquear todas as requisições de acesso no caso do pacote não combinar com nenhuma diretiva anterior. Uma analogia que pode ser realiza é a de que o Squid possui políticas de acesso similares a um firewall.
3. Evite regras desnecessárias ou redundantes.
A sintaxe básica para definição da ACL é:
acl [nome_da_ACL] [Classe da ACL]
Para cada ACL criada é necessário definir se acesso será permitido, allow, ou negado, deny.
Classes de acesso:
SRC - classe baseada na origem da requisição, ou seja, baseia-se no endereço IP do cliente.
DST - classe baseada no destino da requisição, ou seja, baseia-se no endereço IP do servidor requisitado.
SRCDOMAIN - classe de acesso que baseia-se no domínio DNS do cliente.
DSTDOMAIN - classe de acesso que baseia-se no domínio DNS do servidor de destino da requisição.
TIME - classe de acesso que define o acesso por dia da semana e horário da requisição.
URL_REGEX - classe onde é possível utilizar expressões regulares para liberação ou bloqueio das requisições.
PROXY_AUTH - classe que utiliza o login do usuário para definir a liberação ou bloqueio da requisição.
[1] Comentário enviado por wagnerfs em 29/07/2015 - 21:41h
Muito bom mesmo. Parabéns por compartilhar o conhecimento e fico no aguardo do próximo artigo.
_________________________
Wagner F. de Souza
Técnico/Instrutor de Informática
"GNU/Linux for human beings."
LPI ID: LPI000297782
[3] Comentário enviado por l0g1in em 01/08/2015 - 09:35h
Parabéns pelo artigo muito bom mesmo. Gostaria de saber se no quesito segurança o que implica esse certificado gerado pelo Squid quanto ao Certificado dos bancos por exemplo, já o Squid vai pegar todo trafego e passar pelo seu certificado.
[4] Comentário enviado por rbonfim em 03/08/2015 - 09:53h
astsilva,
Muito obrigado pela leitura do artigo. A cerca do certificado, o Squid com estas configurações funciona com o MITM (Man in the middle) recebendo os dados HTTPS, lendo o certificado e comparando com as diretivas de acesso, como você mesmo já citou. As informações arquivadas pelo Squid relacionados aos sites HTTPS referem-se somente aos dados dos certificados, grande parte das informações pessoais não são arquivadas pelo Squid, acredito que a segurança não será comprometida e que para manter a segurança de acesso as diretivas do Firewall devem ser aplicadas principalmente par evitar acessos externos. Na dúvida leia: http://www.squid-cache.org/Doc/config/ssl_bump/
__#$
root@human:/#apt-get install -y brain
"Conhecimento é livre"
[5] Comentário enviado por tiago1 em 03/08/2015 - 15:53h
Cara, muito legal mesmo! Mas tenho uma dúvida: proxy, tipo o Squid, funciona em outras modalidades de acesso a internet, além de ADSL, com modens, como tu disse no artigo? Ou funciona em internet a rádio? Moro numa região onde a maioria das pessoas usa internet a rádio e poucos usam ADSL e estou pensando em mudar a minha pra rádio também.
[6] Comentário enviado por chaplinux em 03/08/2015 - 16:12h
[5] Comentário enviado por tiago1 em 03/08/2015 - 15:53h
Cara, muito legal mesmo! Mas tenho uma dúvida: proxy, tipo o Squid, funciona em outras modalidades de acesso a internet, além de ADSL, com modens, como tu disse no artigo? Ou funciona em internet a rádio? Moro numa região onde a maioria das pessoas usa internet a rádio e poucos usam ADSL e estou pensando em mudar a minha pra rádio também.
Um abraço e parabéns!
Primeiramente Parabens pelo artigo! salvando aqui nos favoritos.!
Respondento o nosso amigo Thiago ai de cima! amigo... o squid server pra qualquer tipo de internet... independe se vem de radio ou ADSL ou qualquer q seja. desde que vc conecte os cabos e defina as rotas! ta valendo.
[7] Comentário enviado por tiago1 em 03/08/2015 - 20:47h
[6] Comentário enviado por chaplinux em 03/08/2015 - 16:12h
[5] Comentário enviado por tiago1 em 03/08/2015 - 15:53h
Cara, muito legal mesmo! Mas tenho uma dúvida: proxy, tipo o Squid, funciona em outras modalidades de acesso a internet, além de ADSL, com modens, como tu disse no artigo? Ou funciona em internet a rádio? Moro numa região onde a maioria das pessoas usa internet a rádio e poucos usam ADSL e estou pensando em mudar a minha pra rádio também.
Um abraço e parabéns!
Primeiramente Parabens pelo artigo! salvando aqui nos favoritos.!
Respondento o nosso amigo Thiago ai de cima! amigo... o squid server pra qualquer tipo de internet... independe se vem de radio ou ADSL ou qualquer q seja. desde que vc conecte os cabos e defina as rotas! ta valendo.
[8] Comentário enviado por rbonfim em 04/08/2015 - 14:31h
Pessoal! Muito obrigado pelos comentários, qualquer contribuição à melhoria do artigo são bem vindas demais!
__#$
root@human:/#apt-get install -y brain
"Conhecimento é livre"
[9] Comentário enviado por tonyhts em 04/08/2015 - 18:59h
Favoritadáááço !!
parabens ! Belo artigo
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.
[11] Comentário enviado por yurifc4 em 19/08/2015 - 09:52h
Muito bom o artigo... tenho uma dúvida no servidor DHCP, é possível eu atribuir um IP para um determinado MAC ADDRESS?? E como ficaria a configuração? Se alguém puder me ajudar... valeu.
[12] Comentário enviado por rbonfim em 19/08/2015 - 10:14h
É possível sim Yuri, no arquivo dhpd.conf faça o seguinte:
host nome_do_computador {
hardware ethernet AA:BB:CC:DD:EE:FF; # Endereço MAC da interface de rede
fixed-address 111.222.333.444; # Endereço IP fixo
}
__#$
root@human:/#apt-get install -y brain
"Conhecimento é livre"
[14] Comentário enviado por chaplinux em 20/08/2015 - 21:31h
Renato, nao daria para implementar na compilação do Squid os parametro p/ cache full?,
para uma possivel controle de banda. ? saberia como ficaria essa implementacao?
[21] Comentário enviado por yurifc4 em 26/08/2015 - 14:16h
Sobre o DHCP novamente, existe alguma maneira de ver as máquinas e os ips que o servidor atribuiu? Dei uma pesquisada antes e tudo que encontrei foi o comando dhclient... no --help não diz muita coisa. Se alguém souber como ver essas informações?! Valeu.
[23] Comentário enviado por yurifc4 em 03/09/2015 - 17:11h
Uma outra coisa... pq será que o isc-dhcp-server não inicia com o sistema? Aqui o meu "servidor" eu preciso desligá-lo e se no outro dia eu esqueço de startar o serviço, fica todo mundo sem conexão... já tentei o "# update-rc.d isc-dhcp-server defaults" mas ele me retorna: "using dependency based boot sequencing". Alguém tem ideia disso? Uso o Debian Wheezy. Abraço!
[25] Comentário enviado por detneto em 30/05/2017 - 17:24h
Pessoal, estou recebendo este erro...
Sou iniciante, alguém poderia me ajudar?
sc-dhcp-server.service - ISC DHCP IPv4 server
Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; enabled; vendor
Active: failed (Result: exit-code) since Ter 2017-05-30 15:05:08 ACT; 2min 22
Docs: man:dhcpd(8)
Process: 1189 ExecStart=/bin/sh -ec CONFIG_FILE=/etc/dhcp/dhcpd.conf;
Main PID: 1189 (code=exited, status=1/FAILURE)
Mai 30 15:05:08 servidor-radio sh[1189]: Configuration file errors encountered -
Mai 30 15:05:08 servidor-radio sh[1189]: If you think you have received this mes
Mai 30 15:05:08 servidor-radio sh[1189]: than a configuration issue please read
Mai 30 15:05:08 servidor-radio sh[1189]: bugs on either our web page at www.isc.
Mai 30 15:05:08 servidor-radio sh[1189]: before submitting a bug. These pages e
Mai 30 15:05:08 servidor-radio sh[1189]: process and the information we find hel
Mai 30 15:05:08 servidor-radio sh[1189]: exiting.
Mai 30 15:05:08 servidor-radio systemd[1]: isc-dhcp-server.service: Main process
Mai 30 15:05:08 servidor-radio systemd[1]: isc-dhcp-server.service: Unit entered
Mai 30 15:05:08 servidor-radio systemd[1]: isc-dhcp-server.service: Failed with
...skipping...