Upload
marlon-willrich
View
237
Download
1
Embed Size (px)
Citation preview
GNU/Linux Básico Proxy
Aula 2
- Servidor Proxy (Squid)
Marlon [email protected]úcleo de Informática - UNIFEBE
29/10/2015
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
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
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
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)
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
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.
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
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
Servidor Proxy (Squid)● Algumas configurações a mais do proxy
● Procure por cache_mgr e abaixo dos comentários adicione a linha:
cache_mgr [email protected]
● 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.
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.
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)
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
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
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)
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
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
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.
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
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
Dúvidas?