Squid + iptables (método ninja)

Depois de pesquisar de montão, resolvi descrever um processo simplificado de configurar um servidor de firewall.

[ Hits: 73.392 ]

Por: Claudio A. Guolo em 26/02/2008


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.2

# 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.255

   pre-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.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Arquivo /etc/network/interfaces
   3. Squid
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Montando regras iptables

Script de Firewall com redirecionamento de portas em Linux Debian

Um pouco sobre IPtables

Entendendo TCP/IP (Parte 6) - Firewall

Firewall invisível com Proxy ARP

  
Comentários
[1] Comentário enviado por exercitobr em 26/02/2008 - 18:19h

Parabéns, bastante didático e prático.

[2] Comentário enviado por kabalido em 27/02/2008 - 01:41h

Cara, parabéns pelo artigo!
Só um pequeno erro:

Na interface de Rede Vermelha eth0, o gateway é 192.168.10.1 e não gateway 192.168.10.2 como vc colocou ae. Pois o ip do modem é 192.168.10.1.

T+

[3] Comentário enviado por py9mt em 27/02/2008 - 07:47h

Opa, isso mesmo, obrigado.

[4] Comentário enviado por abimael_bs em 27/02/2008 - 10:04h

Esse é o cara! Parabéns!!!!

[5] Comentário enviado por snakerj em 27/02/2008 - 23:40h

copiei o mesmo e esta dando esse erro,

* Restarting Squid HTTP proxy squid * Creating squid spool directory structure
2008/02/27 21:31:03| parseConfigFile: line 1 unrecognized: 'httpd_accel_port 80'
2008/02/27 21:31:03| parseConfigFile: line 2 unrecognized: 'httpd_accel_host virtual'
2008/02/27 21:31:03| parseConfigFile: line 3 unrecognized: 'httpd_accel_with_proxy on'
2008/02/27 21:31:03| parseConfigFile: line 4 unrecognized: 'httpd_accel_uses_host_header on'
FATAL: Could not determine fully qualified hostname. Please set 'visible_hostname'

Squid Cache (Version 2.6.STABLE14): Terminated abnormally.
CPU Usage: 0.000 seconds = 0.000 user + 0.000 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 0
Aborted (core dumped)
2008/02/27 21:31:03| parseConfigFile: line 1 unrecognized: 'httpd_accel_port 80'
2008/02/27 21:31:03| parseConfigFile: line 2 unrecognized: 'httpd_accel_host virtual'
2008/02/27 21:31:03| parseConfigFile: line 3 unrecognized: 'httpd_accel_with_proxy on'
2008/02/27 21:31:03| parseConfigFile: line 4 unrecognized: 'httpd_accel_uses_host_header on'
FATAL: Could not determine fully qualified hostname. Please set 'visible_hostname'

Squid Cache (Version 2.6.STABLE14): Terminated abnormally.
CPU Usage: 0.008 seconds = 0.000 user + 0.008 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 0
Aborted (core dumped)

o que pode ser onde esta errado?

[6] Comentário enviado por sigelmann em 28/02/2008 - 00:07h

Comentário para snakerj:
o seu squid é versão mais nova, em vez de usar as regras acima:

httpd_accel_port 80
httpd_accel_host virtual
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

remova e deixe apenas http_port 3128 transparent

[7] Comentário enviado por antonioinfoxx em 28/03/2008 - 23:07h

So que quando eu inicio o squid, com essa configuração minima ela da o seguinte erro ([root@localhost squid]# squid -k reconfigure
2008/03/28 13:12:06| parseConfigFile: line 1 unrecognized: 'httpd_accel_port 80'
2008/03/28 13:12:06| parseConfigFile: line 2 unrecognized: 'httpd_accel_host virtual'
2008/03/28 13:12:06| parseConfigFile: line 3 unrecognized: 'httpd_accel_with_proxy on'
2008/03/28 13:12:06| parseConfigFile: line 4 unrecognized: 'httpd_accel_uses_host_header on'
squid: ERROR: No running copy)
ai eu tirei as linha que estao no erro acima e deixa so as linhas e coloque (http_port 3128 transparent) ai ele deu o seguinte erro (squid: ERROR: No running copy
)

[8] Comentário enviado por claudio252 em 05/07/2009 - 15:07h

Boa tarde olha eu tive olhando seu tutorial achei interessante eu to querendo colocar em minha lan house em um firewall coyote certo
e colocar o ip do squid no firewall sendo assim só o squid vai ter acesso a internete e as estações vai ter acesso apatir do squid para que todas as estaões tenha acesso apartir dele só que quero o squid pra cache web tenho que deixar ele livre pra qualquer sit preciso restringei 1 ou 2 sits

De assim: http_access deny all Para assim:
E assim fica liberado http_access allow all
vc poderia me dá uma dica

se vc poder me ajudar fico agradecido
desculpa é sou iniciante no linux

meu e-mail: claudyo-gt@hotmail.com

[9] Comentário enviado por j4ngo em 16/02/2010 - 15:33h

Cara to tentando fazer isso no CentOS .. porém como é baseado em redhat o arquivos de configuração das placas de rede são distintos por placa (/etc/sysconfig/network-scripts/ifcfg-eth0 e /etc/sysconfig/network-scripts/ifcfg-eth1) dessa forma não sei onde executar o segundo passo em que manda editar o arquivo /etc/network/interfaces com :
pre-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

Onde faço isso nas distribuições RedHat???

[10] Comentário enviado por hbreda em 10/03/2011 - 23:47h

Amigo py9mt muito obrigado! O Firewall do Webmin não estava aplicando as regras setadas. Fiz como vc descreveu no /etc/network/interfaces e deu tudo certinho! Parabéns e Obrigado!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts