Introdução
Sem ter a menor idéia de como funcionava e de revirar o Google procurando, finalmente consegui configurar um servidor com iptables + Squid (transparente). Descobri que é mais fácil do que imaginava. Estou escrevendo aqui um artigo pressupondo que quem for utilizá-lo tenha conhecimentos mínimos de Linux e saiba exatamente onde quer chegar.Não vou entrar em detalhes sobre configuração de máquina, só vou descrever as placas de rede e desse ponto em diante é só software mesmo.
Use duas placas de rede:
* ETH0 - interface vermelha ligada ao modem ADSL);
* ETH1 - interface verde (ligada à rede interna).
A distribuição que uso é o Debian (lógico) Etch 4.0.
Baixe o ISO do netinst, pois não usaremos gráfico.
Como editor de textos use o mcedit (depois do sistema básico instalado um simples “apt-get install mc”), pois pra salvar o arquivo que se está editando basta apertar ESC e já aparece uma telinha, muito simples (aprendi essa com o Rogério), mas qualquer editor também serve.
Não instale o Squid por enquanto, primeiro vamos configurar as interfaces.
Arquivo /etc/network/interfaces
O arquivo interfaces é bem interessante, pode se fazer muitas coisas legais nesse arquivo, para o mais leigo entender, nesse arquivo pode-se fazer bloqueio de MSN, syn-flood, orkut, ping etc.Mas o que proponho aqui é uma configuração simples pra fazer a coisa funcionar.Faça o seguinte, supondo que o servidor DHCP está em outra máquina, coloque tanto o IP da interface verde como da vermelha estáticos (FIXO) exemplo:
* A placa vermelha como 192.168.10.2 ligada no modem 192.168.10.1.
* A placa verde como 192.168.1.254 ligada no switch.
O /etc/network/interfaces básico fica assim:
# Interface de Rede Vermelha auto eth0
iface eth0 inet static
address 192.168.10.2
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
gateway 192.168.10.1# Interface de rede Verde
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255pre-up iptables -F
pre-up iptables -X
pre-up iptables -F -t nat
pre-up iptables -X -t nat
pre-up iptables -F -t filter
pre-up iptables -X -t filter
# Essa Parte faz com que o sinal da interface Vermelha passe para a Verde
# e vice-versa
pre-up iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j REDIRECT –to-port 3128
pre-up iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
pre-up echo 1 > /proc/sys/net/ipv4/ip_forward
Pronto, agora você tem que colocar algo ligado na placa vermelha através de um hub ou cabo cross e a interface vermelha ligada no modem, e tente pingar o modem, se pingar o modem, tente pingar também algum site ou o ip de algum site.
É possível que você consiga pingar um site por ip, mas não por URL, nesse caso é necessário adicionar o endereço dos servidores DNS do seu provedor de ADSL no arquivo /etc/resolv.conf.
Squid
Pronto, podemos dizer que já temos um servidor de firewall funcionando, isso é, se o processo do tópico anterior deu certo, se não deu certo pare de ler esta parte e volte pro tópico anterior, me mande e-mail py9mt@yahoo.com.br, me telefone 65-8402-0253, me add no msn claudioguolo@hotmail.com. Sinal de fumaça, rádio-amador, qualquer coisa, porque não adianta continuar se o processo anterior não deu certo.Pra você continuar e instalar o Squid, o sinal de rede tem que estar passando de uma placa pra outra (NAT), senão não adianta.Se está funcionando então agora pode usar um “apt-get install squid”.
Pronto, agora você tem Squid instalado.
Faça um teste, abra o /etc/squid/squid.conf e coloque assim:
httpd_accel_port 80
httpd_accel_host virtual
httpd_accel_with_proxy on
httpd_accel_uses_host_header onhttp_port 3128 transparent # essa linha se o squid for uma versão mais atual, pode apagar as outras 4 linhas acima.
error_directory /usr/share/squid/errors/Portuguese# Criando as ACL´s
acl all src 0.0.0.0/0.0.0.0
acl safe_ports port 80 21 22#dizendo se as ACL´s estão ou não liberadas
http_access allow safe_ports
http_access deny all
Um Squid ultra magrinho. o que acontece é que quando você der um “/etc/init.d/squid restart”, se você estava acessando a internet via proxy vai parar de acessar, então você vai ter que modificar a permissão da ACL:
De assim:
http_access deny all
Para assim:
http_access allow all
Novamente reinicie o Squid:# /etc/init.d/squid restartAgora teste novamente, se acessar é porque seu Squid está funcionando perfeitamente, bloqueado e desbloqueando as ACLs.
Não vou entrar em detalhes de como criar ACLs porque disso o VOL está cheio, é só googlar um pouco que você acha os mais variado tipo de acl, por ip, por url-regex, por IP, por marca de desodorante que o usuário está usando etc.
Sem ter a menor idéia de como funcionava e de revirar o Google procurando, finalmente consegui configurar um servidor com iptables + Squid (transparente). Descobri que é mais fácil do que imaginava. Estou escrevendo aqui um artigo pressupondo que quem for utilizá-lo tenha conhecimentos mínimos de Linux e saiba exatamente onde quer chegar.Não vou entrar em detalhes sobre configuração de máquina, só vou descrever as placas de rede e desse ponto em diante é só software mesmo.
Use duas placas de rede:
* ETH0 - interface vermelha ligada ao modem ADSL);
* ETH1 - interface verde (ligada à rede interna).
A distribuição que uso é o Debian (lógico) Etch 4.0.
Baixe o ISO do netinst, pois não usaremos gráfico.
Como editor de textos use o mcedit (depois do sistema básico instalado um simples “apt-get install mc”), pois pra salvar o arquivo que se está editando basta apertar ESC e já aparece uma telinha, muito simples (aprendi essa com o Rogério), mas qualquer editor também serve.
Não instale o Squid por enquanto, primeiro vamos configurar as interfaces.
Arquivo /etc/network/interfaces
O arquivo interfaces é bem interessante, pode se fazer muitas coisas legais nesse arquivo, para o mais leigo entender, nesse arquivo pode-se fazer bloqueio de MSN, syn-flood, orkut, ping etc.Mas o que proponho aqui é uma configuração simples pra fazer a coisa funcionar.Faça o seguinte, supondo que o servidor DHCP está em outra máquina, coloque tanto o IP da interface verde como da vermelha estáticos (FIXO) exemplo:
* A placa vermelha como 192.168.10.2 ligada no modem 192.168.10.1.
* A placa verde como 192.168.1.254 ligada no switch.
O /etc/network/interfaces básico fica assim:
# Interface de Rede Vermelha auto eth0
iface eth0 inet static
address 192.168.10.2
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
gateway 192.168.10.1# Interface de rede Verde
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255pre-up iptables -F
pre-up iptables -X
pre-up iptables -F -t nat
pre-up iptables -X -t nat
pre-up iptables -F -t filter
pre-up iptables -X -t filter
# Essa Parte faz com que o sinal da interface Vermelha passe para a Verde
# e vice-versa
pre-up iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j REDIRECT –to-port 3128
pre-up iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
pre-up echo 1 > /proc/sys/net/ipv4/ip_forward
Pronto, agora você tem que colocar algo ligado na placa vermelha através de um hub ou cabo cross e a interface vermelha ligada no modem, e tente pingar o modem, se pingar o modem, tente pingar também algum site ou o ip de algum site.
É possível que você consiga pingar um site por ip, mas não por URL, nesse caso é necessário adicionar o endereço dos servidores DNS do seu provedor de ADSL no arquivo /etc/resolv.conf.
Squid
Pronto, podemos dizer que já temos um servidor de firewall funcionando, isso é, se o processo do tópico anterior deu certo, se não deu certo pare de ler esta parte e volte pro tópico anterior, me mande e-mail py9mt@yahoo.com.br, me telefone 65-8402-0253, me add no msn claudioguolo@hotmail.com. Sinal de fumaça, rádio-amador, qualquer coisa, porque não adianta continuar se o processo anterior não deu certo.Pra você continuar e instalar o Squid, o sinal de rede tem que estar passando de uma placa pra outra (NAT), senão não adianta.Se está funcionando então agora pode usar um “apt-get install squid”.
Pronto, agora você tem Squid instalado.
Faça um teste, abra o /etc/squid/squid.conf e coloque assim:
httpd_accel_port 80
httpd_accel_host virtual
httpd_accel_with_proxy on
httpd_accel_uses_host_header onhttp_port 3128 transparent # essa linha se o squid for uma versão mais atual, pode apagar as outras 4 linhas acima.
error_directory /usr/share/squid/errors/Portuguese# Criando as ACL´s
acl all src 0.0.0.0/0.0.0.0
acl safe_ports port 80 21 22#dizendo se as ACL´s estão ou não liberadas
http_access allow safe_ports
http_access deny all
Um Squid ultra magrinho. o que acontece é que quando você der um “/etc/init.d/squid restart”, se você estava acessando a internet via proxy vai parar de acessar, então você vai ter que modificar a permissão da ACL:
De assim:
http_access deny all
Para assim:
http_access allow all
Novamente reinicie o Squid:# /etc/init.d/squid restartAgora teste novamente, se acessar é porque seu Squid está funcionando perfeitamente, bloqueado e desbloqueando as ACLs.
Não vou entrar em detalhes de como criar ACLs porque disso o VOL está cheio, é só googlar um pouco que você acha os mais variado tipo de acl, por ip, por url-regex, por IP, por marca de desodorante que o usuário está usando etc.