Mandriva 2006 - Configurando servidor proxy transparente completo

Esse artigo ensinará a montar um servidor proxy completo com o Mandriva 2006. Instalação e configuração do proxy Squid transparente com cache, bloqueio de páginas e downloads impróprios, DNS para sua rede local, firewall simples e funcional com iptables, SSH e Webmin para acesso remoto.

[ Hits: 110.832 ]

Por: Tiago André Geraldi em 09/05/2006


Configurando firewall



Iremos configurar o um firewall neste servidor proxy para bloquear acessos externos na sua rede, as conexões pela rede local serão todas permitidas. Deixaremos aberto apenas algumas portas para que seja feito acesso remoto. Caso necessário você poderá personalizá-lo, abrindo por exemplo a porta 80, caso hospede algum site. Comece criando um arquivo firewall no diretório /etc:

# vi /etc/firewall

e cole dentro dele o seguinte conteúdo (script de firewall disponível no Kurumin Linux de Carlos Morimoto):

#!/bin/bash

firewall_start(){

# Essa linha abre a rede local, ajuste-a conforme a sua classe de IPs
iptables -A INPUT -s 10.1.0.0/255.255.255.0 -j ACCEPT

# Portas abertas para a Internet
# Aqui estão abertas as portas 22777 e 10000 que usaremos
# para acesso remoto por SSH e por Webmin.
# Você pode adicionar portas copiando a linha e alterando o número.

iptables -A INPUT -p tcp --destination-port 22777 -j ACCEPT
iptables -A INPUT -p tcp --destiantion-port 10000 -j ACCEPT

# Descomente a linha abaixo para impedir 'ping' para seu servidor
# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
iptables -A INPUT -p udp --dport 33435:33525 -j DROP
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
iptables -A FORWARD -m unclean -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -N VALID_CHECK
iptables -A VALID_CHECK -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags ALL ALL -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags ALL FIN -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A VALID_CHECK -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

# Fecha as portas udp de 1 a 1024, abre para o localhost
iptables -A INPUT -p udp -s 127.0.0.1/255.0.0.0 -j ACCEPT
iptables -A INPUT -p udp --dport 1:1024 -j DROP
iptables -A INPUT -p udp --dport 59229 -j DROP

iptables -A INPUT -p tcp --syn -j DROP

/etc/skel-fix/firewall-msg

}
firewall_stop(){
iptables -F
iptables -X
iptables -P INPUT   ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT  ACCEPT
}

case "$1" in
"start")
firewall_start
        ;;
"stop")
        firewall_stop
echo "O kurumin-firewall está¡ sendo desativado"
sleep 2
echo "ok."
        ;;
  "restart")
echo "O kurumin-firewall está¡ sendo desativado"
sleep 1
echo "ok."
        firewall_stop; firewall_start
        ;;
      *)
        iptables -L -n
esac

Salve e saia do arquivo. Agora é necessário darmos permissão de execução do arquivo e adicioná-lo na inicialização da máquina:

# chmod +x /etc/firewall
# vi /etc/rc.d/rc.local


Adicione a seguinte linha antes da execução do transp:

/etc/./firewall

Salve e saia. Agora reexecute o rc.local para ativarmos o firewall:

# /etc/rc.d/./rc.local

O passo seguinte é a configuração do SSH.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução e instalação de componentes básicos
   2. Configurando Squid
   3. Configurando firewall
   4. Configurando acesso remoto
   5. Configurando DNS para rede local
   6. Encerramento e conclusão
Outros artigos deste autor

Samba - PDC com Debian e Clamwin antivírus sincronizado nas estações

Ubuntu, simplesmente poderoso

Backup de arquivos das estações de sua rede com Samba PDC

Leitura recomendada

ECache - O cache efetivo

Limitando download com Squid

Squid autenticando em base Active Directory

Squid balanceado com LVS

Instalando natACL no Debian Etch (proxy autenticado)

  
Comentários
[1] Comentário enviado por thelinux em 09/05/2006 - 10:02h

Rapaz, parabéns pelo ótimo tuto. E, eu que sou fã de Mandriva/Conectiva fiquei feliz em ver teu artigo. VAleu!

[2] Comentário enviado por Vilmar Silva em 10/05/2006 - 18:50h

Olá pessoal!
Tenho o Kurumin 6.0 instalado no meu computador. Mas não estou conseguindo fazer funcionar os seguintes equipamentos:
Impressora Epson LX 300+ ;
Scanner Genius 1200 XE.
Gostaria que alguém me ajudasse.
Obrigado!

[3] Comentário enviado por Maycon Pires em 13/05/2006 - 02:19h

Parabéns pelo excelente artigo Virgulla, você explicou de uma forma bem completa, pois, explicou diversos serviços muito utéis em qualquer servidor, novamente parabens pela matéria!!!

Vlw galera da VOL!!!

[4] Comentário enviado por virgulla em 19/05/2006 - 08:42h

obrigado a todos que votaram e comentaram, também aqueles me mandaram e-mails, espero ter ajudado, e estar melhorando nos próximos artigos.

[5] Comentário enviado por rintruder em 06/08/2006 - 03:55h

Parabens, ficou otimo muito bem explicado e bem dedutivo.. falo isso pq tenho uma base em linux, mas nao seria capaz de fazer sozinho.... mas com suas orientções foi facil e rapido .... Obrigado

[6] Comentário enviado por mayconmarangoni em 24/08/2006 - 17:48h

mano o meu squid não inicia deixei o meu conf de acordo com o seu e nada ....falha no squid

so mudei os endereços ips

[root@wwplinux ~]# service squid start
init_cache_dir /var/spool/squid... Iniciando squid: [FALHOU]
[root@wwplinux ~]#

o que faço?

[7] Comentário enviado por virgulla em 25/08/2006 - 09:14h

Verifique a linha "cache_effective_user ..." veja qual é o ususário definido. Veja se este usuário existe no sistema, se não adicione-o. Depois transforme-o em dono da pasta onde será armazenado o chache:
# chown -R usuario /var/spool/squid

Agora crie o cache e inicie o squid:
# squid -z
# service squid start

Se não funcionar poste aqui, para pensarmos em outra solução.

[8] Comentário enviado por atroz em 10/11/2006 - 23:58h

este artigo serve para slackware 10.1?

[9] Comentário enviado por removido em 26/06/2007 - 13:34h

mtu bom o tuto...
me ajudo bastante na montagem do meu server linux!!!..

[10] Comentário enviado por Ov3rk1ll em 26/06/2007 - 17:31h

opa
fiz tudo aki e ta beleza
agora eu fiz o comando urpmi ntsysv e nao acha o pacote
diz q nao tem nenhum nome de pacote
e quando eu do um squid -z e squid -D ele da a seguinte mensagem
ParseconfigFile: line 74 unrecognized httpd_accel_host virtual
ParseconfigFile: line 75 unrecognized httpd_accel_port 80
ParseconfigFile: line 76 unrecognized httpd_accel_with_proxy on
ParseconfigFile: line 77 unrecognized httpd_accel_uses_host on
o que pode ser?

[11] Comentário enviado por Ov3rk1ll em 26/06/2007 - 17:43h

resolvi do ntsysv
agora o mesmo problema do nosso amigo maycommarangony
e jah fiz tbm e nao deu certo
coloquei usuario root
teria q coloar outro ?

[12] Comentário enviado por virgulla em 26/06/2007 - 23:19h

Olá pessoal, devido as atualizações do Mandriva, muitas coisas neste meu artigo estão ultrapassadas, principalmente a questão do squid. Essas quatro linhas referente ao proxy transparente não são mais utilizadas na versão 2.6 em diante, voces devem apagá-las. Para ativar o proxy transparente agora, adicionem "transparent" no final da primeira linha (a configuração da porta 3128).
Provavelmente irá resolver o problema.
Obrigado a todos pelos comentários.

[13] Comentário enviado por virgulla em 26/06/2007 - 23:23h

caro Ov3rk1ll...
qto ao usuário, nao recomendo colocar root, irá abrir uma grande brecha na segurança do seu servidor. Verifique a configuração "transparent" que deverá resolver o seu problema.

Estarei a disposição,
abraço.

[14] Comentário enviado por brunosalmito em 27/06/2007 - 14:12h

Amigo só uma dica acho que fica mais fácil.
Ao inves de ter que digitar "acl exe url_regex -i .exe
acl zip url_regex -i .zip
acl rar url_regex -i .rar
acl scr url_regex -i .scr
acl msi url_regex -i .msi
acl wmv url_regex -i .wmv
acl pif url_regex -i .pif
acl avi url_regex -i .avi"
você poderia ter feito assim:
"acl block_down url_regex -i .exe .mov .mp3 .msi . rar .zip"
depois
http_access block_down deny block_down

Mas ai manim você está de parabens ficou muito bom :)

[15] Comentário enviado por rodrigoadachi em 22/09/2007 - 10:39h

Ola, quando eu digito squid -z ele me retorna:
aclParseAclLine: WARNING: empty ACL: acl excecoes url_regex "/etc/squid/excecoes"

e as configurações do proxy transparente tb derão erro ai eu coloquei estas mas tb ñ funcionou:
icp_access allow all
visible_hostname on
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
httpd_accel_port 80
httpd_accel_host virtual

Utilizo o CentOs 5

Obrigado...

[16] Comentário enviado por zecacoelho em 11/02/2008 - 15:47h

Na configuração do squid na linha

acl localhost src 127.0.0.1/255.255.255.255

O ip da minha rede é fixo e o endereço do modem é 10.10.1.1, qual é o ip que eu coloco?

Obrigado

[17] Comentário enviado por removido em 07/03/2008 - 09:24h

e ae galera estou tendo problemas na hora de dar o start no squid...

/etc/init.d/squid start
Starting squid: [FAILED]

ja executei o chown -R usuario /var/spool/squid e tambem nada...

deem uma olhada no meu codigo:

# a porta que o squid usa, 3128 é padrão
http_port 3128 transparent
# proxy é nome do micro na rede
visible_hostname proxy
#usuário anônimo para ftp (indiferente)
ftp_user asdf@asdf.com

######### para quem não sabe, cache é o armazenamento das páginas
# CACHE # abertas pelos usuários, afim de acelerar uma nova visita,
######### aumenta consideravelmente a velocidade de navegação

# quantidade da cache usada na memória ram,
############## recomendo o uso de 1/4 da memória disponível
############## a não ser, que o micro seja utilizado para outras
############## funções.
cache_mem 64 MB

maximum_object_size_in_memory 64 KB
maximum_object_size 700 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95

#abaixo, o diretório onde o cache será armazenado em disco,
#recomendo a utilização deste diretório abaixo que é o padrão
# o número 5000 porque serão disponibilizados 5GB de espaço
# altere conforme as suas possibilidades.

cache_dir ufs /var/spool/squid 5000 16 256

refresh_pattern ^ftp: 15 2% 2280
refresh_pattern ^gother: 15 0% 2280
refresh_pattern . 15 20% 2280

cache_effective_user squid

########
# LOGS #
########
cache_access_log /var/log/squid/access.log


#########
# ACLs ##
#########

acl all src 0.0.0.0/0.0.0.0

# A acl permitidos são os IPs que não terão sua navegação restrita
acl permitidos src 192.168.0.20

acl localhost src 127.0.0.1/255.255.255.255

# A acl redelocal, são os demais micros, que terão a navegação restrita
# ajuste-a conforme a sua classe, se usa IPs 192, altere para 192.168.0.0/24
# O "/24" significa máscara 255.255.255.0

acl redelocal src 192.168.0.0/24

http_access allow localhost
http_access allow permitidos

# Abaixo vem a indicação para o arquivo que conterá as palavras
# que não poderão conter nos sites que os usuários visitar.
# No arquivo exceções, haverá palavras que que anulam a proibição
# com por exemplo sexoesaude.

acl proibidos url_regex "/etc/squid/proibidos"
http_access deny proibidos

# As ACLs a seguir, bloqueiam downloads pelas extensões dos arquivos.
# você adicionar novas extensões da mesma forma.

acl sem_download url_regex -i .exe .mov .mp3 .msi . rar .zip
http_access deny sem_download

http_access allow redelocal
http_access deny all


a parte do squid -z , squid -D e chmod +x /etc/transp
estao indo normal.. sem erros... mas na hora que vai dar start aparece aquilo...[FAILED]

o que eu faço ????

[18] Comentário enviado por michelcsouza em 29/05/2008 - 05:25h

Mano estou no mesmo dilema.... se alguem poder ajudar.. para resolvermos isso....

[19] Comentário enviado por barbino em 22/06/2008 - 19:59h

[root@localhost rc.d]# service squid restart
Stopping squid: [FAILED]
Starting squid: .................... [FAILED]
[root@localhost rc.d]# service squid status
squid is stopped
squid: ERROR: No running copy

Ola amigo..ja fiz tudo que foi postado....agora meu squid ta assim, me ajuda ai..

[20] Comentário enviado por gersonst em 03/12/2008 - 18:07h

Sobre

[root@localhost rc.d]# service squid restart
Stopping squid: [FAILED]
Starting squid: .................... [FAILED]


Eu estava tendo este problema...
no meu caso, eu havia refeito as páginas de erro em /usr/share/squid/errors/Portuguese e não percebi que as permissões estavam erradas. Modifiquei para " -rw-r--r-- ", conforme estão nos arquivos de outras línguas. Para mim, resolveu.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts