Para a instalação do Squid usaremos o terminal como super-usuário. Podemos fazer isso de diversas maneiras: usando o comando sudo antes de qualquer comando no terminal, usando o comando sudo su para usar o terminal o tempo todo como super-usuário ou ativando o usuário root com o comando sudo passwd root e logar-se como root no terminal. Como não é seguro manter o usuário root ativado, usaremos o comando sudo su para usar poderes de administrador no terminal. Para ter certeza se está logado como superusuário, observe o símbolo no terminal, se for um sustenido (#) está como super-usuário, se for um cifrão ($) está como usuário comum, sem poderes de administrador.
A instalação do Squid é feita com o seguinte comando no terminal:
#apt-get install Squid
Esse comando fará o download e a instalação do serviço Squid.
Os comandos mais usados na manipulação do Squid são:
#service Squid start
Inicia o serviço do Squid.
#service Squid stop
Para o serviço do Squid.
#service Squid restart
Reinicia o serviço do Squid.
#service Squid reload
Recarrega o serviço do Squid sem para a execução.
Após a instalação do Squid, faremos a configuração do arquivo squid.conf que fica localizado na pasta /etc/Squid.
Para isso podemos abrir um editor de texto pelo terminal, que pode ser o gedit (um editor gráfico), o vi, o emacs ou o nano (são editores de linha de comando).
Antes de alterar o arquivo principal, faremos um backup do arquivo original, pois se algo der errado, voltamos o arquivo original.
#mv /etc/Squid/squid.conf /etc/Squid/squid.conf.old
O comando acima renomeia o arquivo principal para squid.conf.old.
Agora vamos editar o arquivo principal propriamente dito:
#gedit /etc/Squid/squid.conf
Ao abrir o arquivo, ele não irá conter nada, podemos fazer uma configuração básica apenas para encaminhamento de requisições, o que na prática não traz nenhum benefício. E podemos fazer uma configuração mais completa, como o exemplo abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
#porta de entrada do Squid com encaminhamento transparente caso #deseje usar autenticação a opção “transparente” deve ser removida. http_port 3128 transparent #nome do servidor (para saber o nome do seu servidor digite hostname #no terminal) visible_hostname mctec_server #colocando os erros em português error_directory /usr/share/squid/errors/pt-br/ #colocando os erros em português error_directory /usr/share/squid/errors/pt-br/ #regra padrão de acesso à rede, não deve ser alterada acl all src 0.0.0.0/0.0.0.0 #Opções de cache acl manager proto cache_object #regra para o localhost (máquina local do servidor) acl localhost src 127.0.0.1/255.255.255.255 #bloqueia e rejeita os acessos externos acl purge method PURGE acl CONNECT method CONNECT #libera o localhost para acesso as portas e manipulação das mesmas http_access allow manager localhost #Bloqueia o restante dos acessos e manipulações http_access deny manager #libera os para o localhost e bloqueio para os demais http_access allow purge localhost http_access deny purge #libera as portas seguras e suas conexões http_access deny !Safe_ports http_access deny CONNECT !SSL_ports #proíbe acesso por palavras (É necessário criar um arquivo texto na #pasta /etc/Squid com o nome “proibidas” e com as palavras que serão #bloqueadas dentro desse arquivo.) acl palavrasproibidas dstdom_regex "/etc/Squid/proibidas" http_access deny palavrasproibidas #Bloqueia por nome de sites (É necessário criar um arquivo texto na #pasta /etc/Squid com o nome “sitesblock.txt” e com os sites que #serão bloqueados dentro desse arquivo.) acl sitesblock url_regex -i "/etc/squid/sitesblock.txt" http_access deny sitesblock #regra para rede local acl redelocal src 192.168.10.0/24 #Obs: o endereço da rede deve ser alterado para sua rede http_access allow localhost http_access allow redelocal #proíbe todo o restante http_access deny all |
Após colocar as informações no Squid, é necessário reiniciá-lo para que as configurações tenham efeito:
#service squid restart
Porém, nesse momento o Squid ainda não estará funcionando, pois o firewall não está configurado para encaminhar as requisições da porta 80 (porta de internet) para a porta 3128 do Squid. Vamos então configurar as regras do firewall de maneira que ele encaminhe as requisições. O Iptables é um firewall complexo, que possui diversas opções de segurança para bloqueio e liberação de portas entre outras opções, no entanto, iremos ver apenas as funções básicas de encaminhamento de pacotes.
O script abaixo possui configurações de rede e informações para o encaminhamento de pacotes, assim como a ativação de módulos usados pelo Iptables.
No script usaremos a variável $rede_interna para que, caso o endereço da rede mudar, possamos alterar apenas o endereço que a variável recebe e não todas as opções do firewall.
Em computadores com mais de uma placa de rede é importante usar o endereço da placa da rede interna e não a placa de rede conectada à internet.
No começo do script repare que são usadas regras para “limpar” o firewall, apagando as regras antigas do iptables. Isso faz com que o firewall funcione corretamente a cada inicialização sem ter interferência de regras anteriores que foram executadas.
O Comando ECHO, assim como no msdos é usado para apresentar mensagens. Neste caso as mensagens são encaminhadas para arquivos, isso ocorre porque está sendo usado o símbolo de maior (>) que é o símbolo de encaminhamento de shell script.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#!/bin/bash ############################# ### Firewall.sh ### ### por Aline Abreu ### ############################# #Limpando as regras do firewall Iptables -F Iptables -t nat -F Iptables -t mangle -F #Endereço da rede rede_interna="192.168.70.0/24" #Informações echo "1" > /proc/sys/net/ipv4/ip_forward echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all #Carregando módulos /sbin/modprobe iptable_nat /sbin/modprobe ip_tables /sbin/modprobe ipt_state /sbin/modprobe ip_conntrack /sbin/modprobe ipt_multiport /sbin/modprobe iptable_mangle #Encaminhando as requisições para o proxy. Iptables -I PREROUTING -t nat -p tcp -s $rede_interna --dport 80 -j REDIRECT --to-port 3128 Iptables -t nat -I POSTROUTING -s $rede_interna -j MASQUERADE |
A linha abaixo contém as informações necessárias para encaminhamento das requisições da rede interna para o proxy.
1 Iptables -I PREROUTING -t nat -p tcp -s $rede_interna --dport 80 -j REDIRECT --to-port 3128
O item Iptables é o comando das regras do firewall.
A opção –I permite que passemos parâmetros de PREROUTING (recebimento) ou POSTROUTING (Envio).
A opção –t permite que eu escolha o tipo de encaminhamento a ser usado. Nesta opção usaremos Nat que é o tipo de encaminhamento mais comum, pois é transparente para o usuário final.
A opção –p permite a escolha do protocolo que o encaminhamento irá usar. O tipo de protocolo mais usado é o tcp. Em alguns casos, como nos bloqueios de “ping mortal”, é passada como parâmetro a opção icmp.
A opção –s permite que passemos o endereço ip da rede. Neste caso usaremos a variável $rede_interna, que recebeu o endereço ip no começo do script. O endereço ip passado pode ser com a máscara de rede completa (192.168.70.0/255.255.255.0) ou em forma de notação (192.168.70.0/24).
A opção –dport indica em qual porta é recebida a solicitação. Neste caso, a porta 80, que é a de solicitação da internet.
A opção –j indica a ação a ser executada> Neste caso, REDIRECT para redirecionar o tráfego da rede.
A opção –to-port indica para qual porta as solicitações serão encaminhadas. Neste caso para a porta 3128, do firewall.
Após o arquivo estar configurado com as opções corretas da rede, devemos salvá-lo na pasta /etc/init.d com o nome firewall.sh
Para que ele seja executado a cada inicialização do sistema sem que seja necessário fazer isso manualmente, após salvar os arquivos, utilizamos o seguinte comando:
1 #update-rc.d firewall.sh defaults
Esse comando coloca qualquer script que estiver salvo na pasta /etc/init.d na inicialização do sistema, basta trocar o nome firewall.sh pelo nome do script desejado.
Após essa configuração, basta reiniciar o computador e o Proxy estará funcionando corretamente.
Caso ainda não possua um servidor DHCP na rede, basta colocar um ip fixo nas máquinas da rede, colocando como gateway padrão o ip do servidor Proxy.
Esse foi mais um post do Blog do Curso de Hardware Microcamp.
Faça um curso completo na melhor escola do Brasil >> microcamp.com.br