A última parte do tutorial será exclusiva ao iptables.
Veja aqui:
Parte 01 - GUI, VNC e FTP
Parte 02 - Compartilhando a conexão
Parte 04 - Firewall com IPTables
SQUID - Servidor Proxy
O Squid é um servidor proxy que suporta HTTP, HTTPS, FTP e outros.
Ele reduz a utilização da conexão e melhora os tempos de resposta fazendo cache de requisições freqüentes de páginas web numa lan.
Um dos principais problemas de usar um proxy é que você precisa configurar manualmente cada micro da rede para utilizá-lo, o que é um trabalho cansativo e tedioso, sobretudo em grandes redes.
O Squid responde a este desafio com a possibilidade de criar um proxy transparente, onde o proxy se integra a uma rede já existente, acelerando a conexão, mas sem precisar de qualquer configuração nos clientes.
No meu caso, foi instalado apenas para cuidar da agilidade na conexão com a internet, já que terei poucas restrições na minha rede.
Para maiores detalhes, consulte o site da criança: www.squid-cache.org
Instalação
Vamos começar a instalação com os principais pacotes, digitando no terminal:
sudo apt-get install squid squidclient squid-cgi logcheck-database resolvconf
Agora vem o principal: a edição do arquivo de configuração.
Este arquivo é o /etc/squid/squid.conf. Entrando no terminal como root digite:
gedit /etc/squid/squid.conf
Ao abrir o arquivo, você poderá se assustar com a quantidade de linhas. Calma, a maioria delas é comentário.
O arquivo é auto-explicativo e funciona como um manual.
Aqui é a parte em que você pode fazer uma cópia de segurança desse arquivo, para consultas futuras e tals, e utilizar minhas configurações.
Minhas configurações são mínimas e garantem um cache para otimização da navegação à internet e bloqueia alguns sites, tirando assim esse trabalho do iptables.
http_port 3128 transparent visible_hostname fire mail_from felipe@colmeiasis.com.br cache_mem 64 MB maximum_object_size 160 MB maximum_object_size_in_memory 128 KB cache_swap_low 85 cache_swap_high 95 cache_dir ufs /home/squid_files 2048 16 256 cache_access_log /var/log/squid/access.log cache_store_log /var/log/squid/store.log acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 21 280 443 488 563 591 777 1000 1025-65535 acl purge method PURGE acl CONNECT method CONNECT acl server src 10.10.16.242 acl bloqueados url_regex -i "/etc/squid/proibidos/sites_proibidos" http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access deny bloqueados http_access allow server http_access deny all
Vamos às explicações pertinentes:
A primeira linha indica a porta utilizada pelo Squid (por padrão, 3128) e que ele deve operar em modo transparente (transparent).
A segunda linha indica o nome do servidor (fire) que você deve substituir pelo nome do seu.
A terceira linha indica o email que será mostrado no caso do bloqueio de uma página.
As próximas linhas cuidam das configurações do cache.
O "cache_mem 64 MB" indica o tamanho do cache na memória RAM (é recomendável que você utilize no máximo 1/3 da memória total instalada).
A linha "cache_dir ufs /home/squid_files 2048 16 256" merece uma atenção especial:
/home/squid_files - indica o local que será armazenado o cache,
2048 - indica o tamanho do cache que será feito no HD, em megabytes,
16 - quantos diretórios serão armazenados
256 - quantos arquivos serão aceitos por diretório
Notas:
Se você alterar o diretorio padrão do swapp, não esquecer de dar permissao de leitura e escrita com o comando:
sudo chmod 777 /home/squid_filesOnde "/home/squid_files" é o diretório à ser alterado.
Após a alteração das permissões, você precisa "ativar" a pasta de swapp com o comando:
sudo squid -z
As duas linhas subsequentes cuidam dos logs.
Todas as linhas que começam com ACL (Listas de Controle de Acesso) são regras de bloqueio/permissão.
Todas são regras padrões, menos:
acl server src 10.10.16.242 acl bloqueados url_regex -i "/etc/squid/proibidos/sites_proibidos"
Note que nessa primeira linha, eu criei uma regra chamada "SERVER" e estipulei o endereco 10.10.16.242 à ela.
Aqui você pode criar uma regra com os endereços de sua rede local para aplicá-los às suas regras.
Por exemplo, se você não estará ligado diretamente a uma máquina e sim à sua rede local, pode criar uma acl da seguinte forma:
acl redelocal src 192.168.1.0/24
Note que o /24 equivale à mascara 255.255.255.0.
Na segunda linha, foi criada uma regra chamada "BLOQUEADOS" e teve como parâmetro o arquivo "sites_proibidos".
Esse é o arquivo que indicaremos palavras e/ou endereços que não serão permitidos.
A estrutura desse arquivo é muito importante para que ele seja um arquivo válido para o Squid. Ele só pode conter um site ou nome por linha, jamais coloque mais de um site por linha ou nome.
Basta criar um arquivo vazio, com o conteudo que siga esse exeplo:
sexo playboy pornografia www.youtube.com
Quando você coloca palavras, ele bloqueará toda url que a contenha, inclusive quando é passada como parâmetro a uma requisição (pesquisa no google por exemplo).
Esta regra pode ser vista, em sua aplicação, nas linhas:
http_access deny bloqueados http_access allow server http_access deny all
O Squid resolve as linhas ordenadamente. Portanto, nessa primeira linha ele aplica a regra "bloqueados" a todas as requisições que passarem por ele.
Logo após, ele permite o acesso à minha regra "server" (ou redelocal, no exemplo acima) e com a última linha, ele bloqueia tudo que não foi citado anteriormente.
Cuidado com essa última linha, ela precisa necessariamente ser a última.
Nesse ponto, seu Squid já deve estar configurado e operante! Simples assim!
Para maiores explicações sobre ACLS e HTTP_ACCESS consulte os links indicados nas minhas referências.
Existem muitas coisas legais que podem ser feitas com o Squid, incluindo balanceamento de carga e regras aplicadas em determinados horários.
Existem interfaces graficas para configuração do squid, que podem ajudar (ou atrapalhar) um pouco esse trabalho.
Uma delas, que já foi citada anteriormente, é o GADMIN.
Pode ser baixado aqui: http://debian.cs.binghamton.edu/debian/pool/main/g/gadmin-squid/
Link direto: http://debian.cs.binghamton.edu/debian/pool/main/g/gadmin-squid/gadmin-squid_0.1.3-1_i386.deb
Dicas:
Para verificar o log do squid, digite no terminal:
sudo tail -f /var/log/squid/cache.log
Para encerrar o servico do squid:
sudo squid -k shutdown
Para iniciar o servico:
sudo squid start
Para carregar alterações no squid.conf:
sudo squid -k reconfigure
PROXY TRANSPARENTE
Agora precisamos adicionar a seguinte regra no Iptables, isso irá redirecionar todo tráfego da porta 80 para a porta 3128 automaticamente, sem precisarmos setar manualmente em todas as máquinas clientes:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Para testar, você pode rodar essa linha de comando através do terminal, caso não aguente esperar a última parte do tutorial, que tratará do iptables. ;)
Apenas não se esqueça de rodar como root, com o comando "sudo" antes.
Pretendo postar a última parte depois do feriado.
Até lá!
Veja também:
Parte 01 - GUI, VNC e FTP
Parte 02 - Compartilhando a conexão
Parte 04 - Firewall com IPTables
Nenhum comentário:
Postar um comentário