Pular para o conteúdo

Squid + iptables (método ninja)

Depois de pesquisar de montão, resolvi descrever um processo simplificado de configurar um servidor de firewall.
Claudio A. Guolo py9mt
Hits: 74.570 Categoria: Linux Subcategoria: Firewall
  • Indicar
  • Impressora
  • Denunciar

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.

   1. Introdução
   2. Arquivo /etc/network/interfaces
   3. Squid
Nenhum artigo encontrado.

Incremente o iptables com patch-o-matic

Servidor Firewall-Proxy utilizando CentOS, IPtables, Squid, DHCP, DNS e outros

Slackware 11 + kernel-2.6.18 + Layer7 + iptables

Firewall para o dia a dia

Um pouco sobre IPtables

#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

Entre na sua conta para comentar.