21
GNU/Linux Básico Proxy Aula 2 - Servidor Proxy (Squid) Marlon Willrich [email protected] Núcleo de Informática - UNIFEBE 29/10/2015

Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

Embed Size (px)

Citation preview

Page 1: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

GNU/Linux Básico Proxy

Aula 2

- Servidor Proxy (Squid)

Marlon [email protected]úcleo de Informática - UNIFEBE

29/10/2015

Page 2: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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

Page 3: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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

Page 4: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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

Page 5: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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)

Page 6: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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

Page 7: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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.

Page 8: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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

Page 9: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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

Page 10: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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.

Page 11: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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.

Page 12: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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)

Page 13: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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

Page 14: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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

Page 15: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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)

Page 16: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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

Page 17: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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

Page 18: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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.

Page 19: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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

Page 20: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

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

Page 21: Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNIFEBE

Dúvidas?