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.
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
[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!!!
[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
[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.
[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?
[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.
[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
[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
#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.
# 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
# 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.
[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..
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.