Servidor de rede (PDC - Proxy Transparente - DNS)

cvs

Nesse artigo vou explicar como montar um servidor de rede simples, usando como base a distribuição Slackware. Nesse servidor vamos rodar o Samba como PDC (Primary Domain Controler), Proxy Transparente (iptables + Squid), djbdns com o dnscache para que as estações possam navegar na internet usando o próprio servidor para resolver os nomes.

[ Hits: 155.299 ]

Por: Thiago Alves em 26/04/2005 | Blog: http://www.seeufosseopresidente.com.br


Regras iptables



Vou demonstrar a forma mais simples de se fazer o proxy transparente e compartilhamento de internet, não aprofundando e nem complicando muito.

Essas regras vão liberar a internet e direcionar o que vier na porta 80 para a porta 3128, que é a porta do Squid e assim o proxy transparente estará feito:

#!/bin/sh

# Localização do iptables
IPTABLES=`which iptables`

# Localhost será aceito
$IPTABLES -A INPUT -i lo -j ACCEPT

# Configurando a internet para nossa rede interna
$IPTABLES -A INPUT -i eth0 -j ACCEPT

# Definindo configurações para conexões externas
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 --dport 20 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 --dport 21 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 --dport 25 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 --dport 80 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 --dport 81 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 --dport 110 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 --dport 443 -j ACCEPT
$IPTABLES -A INPUT -p udp -s 0.0.0.0/0 --dport 443 -j ACCEPT
$IPTABLES -A INPUT -p udp -s 0.0.0.0/0 --dport 8080 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 --dport 8080 -j ACCEPT
$IPTABLES -A INPUT -p udp -s 0.0.0.0/0 --dport 8000 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0.0.0.0/0 --dport 8000 -j ACCEPT


# Acesso ao POP3s
$IPTABLES -A INPUT -s 192.168.1.0/24 -p tcp --dport 995 -j ACCEPT
$IPTABLES -A INPUT -s ! 192.168.1.0/24 -p tcp --dport 995 -j DROP

# Acesso ao SQUID
$IPTABLES -A INPUT -s 192.168.1.0/24 -p tcp --dport 3128 -j ACCEPT
$IPTABLES -A INPUT -s ! 192.168.1.0/24 -p tcp --dport 3128 -j DROP


# Liberando conexões para rede interna
$IPTABLES -A FORWARD -s 192.168.1.0/24 -j ACCEPT


# Bloquear MSN
$IPTABLES -A FORWARD -p tcp -d 0.0.0.0/0 --dport 1863 -j REJECT
$IPTABLES -A FORWARD -p udp -d 0.0.0.0/0 --dport 1863 -j REJECT

# Bloqueando SITES MSN
$IPTABLES -A FORWARD -s 0.0.0.0/0 -d webmessenger.msn.com -j REJECT


echo 1 > /proc/sys/net/ipv4/ip_forward

$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE

# Liberando serviços especiais para rede local

$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport ftp -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport ftp-data -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 22 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 23 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 995 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 25 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport whois -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 53 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 110 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport nntp -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport imap2 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport imap3 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 443 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 1353 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 8080 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 113 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 123 -j MASQUERADE


$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p udp --dport 53 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p udp --dport 80 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p udp --dport 123 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p udp --dport imap2 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p udp --dport imap3 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p udp --dport 443 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p udp --dport 8080 -j MASQUERADE


# Liberando ICMP
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -p icmp -j MASQUERADE

# Proxy Transparente
$IPTABLES -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

# Chain POSTROUTING #

# Permite qualquer conexão vinda com destino a lo e rede local para eth0
$IPTABLES -t nat -A POSTROUTING -o lo -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j ACCEPT

Caso ache algum erro, entre em contato e poste o comentário com a solução do erro, por que iptables não é muito minha praia, isso aí saiu com base em um script que o kleber_26 (vive no #linuxajuda da brasnet) me cedeu... claro que o que ele me passou está correto, mas eu mudei para ficar mais simples e assim não sei se ficou correto, mas o que está funcionando aqui no servidor é algo bem semelhante.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Baixando os sources
   3. slackpkg - atualizando pacotes
   4. Instalação Samba
   5. Arquivos de configuração do Samba
   6. Instalação do Squid
   7. Configurando o Squid
   8. Instalando e configurando o djbdns
   9. iptables + patch-o-matic
   10. Regras iptables
   11. rc.samba
   12. rc.squid
   13. addons
   14. Conclusões
Outros artigos deste autor

Montando um PDC com OpenBSD

Virtualização com CentOS e VMware Server

ProFTPD + MySQL - Servidor FTP com usuários em banco de dados

Kernel 2.6 hacks

Compilando Apache 2 com PHP, MySQL, mod_perl e mod_ssl

Leitura recomendada

Conky: Manual traduzido pt-BR

WebCDWrite: O incrível serviço de gravação de CD-R sob demanda via HTTP

SpiderOak - Armazenamento Grátis

Usando o apt-file do Debian

SliTaz GNU/Linux e as ferramentas do sistema

  
Comentários
[1] Comentário enviado por naoexistemais em 26/04/2005 - 20:22h

Caro CVS,

Faltou apenas um aprofundamento melhor sobre segurança, no artigo.

Mas de qualquer forma ficou legal.

Até,

[2] Comentário enviado por leoberbert em 26/04/2005 - 21:00h

Muito bom o artigo... principalmente para quem está começando agora...

Meus parabéns amigo!

Leonardo Berbert Gomes.

[3] Comentário enviado por cvs em 26/04/2005 - 22:44h

Segurança é um tema complicado de se tratar assim e como eu não tenho quase nenhuma experiencia nessa parte eu deixo para os mais entendidos... hehehe... prefiro não passar vergonha por enquanto :D

[4] Comentário enviado por naoexistemais em 27/04/2005 - 01:33h

Sei que em breve você irá implementar esta parte, e parabens...

[5] Comentário enviado por removido em 27/04/2005 - 09:00h

Gostei muito do artigo. Ideal para quem esta começando, *risos*, assim como eu!!!

[6] Comentário enviado por y2h4ck em 27/04/2005 - 09:27h

Pelo pouco que li vc mandou bem CVS ;)
Coloquei aqui no favoritos porque creio que vou ter que montar um PDC em breve, e como sou meio "verde" com samba, isso vai ajudar bastante.

Falow mano !!

Abraços

[7] Comentário enviado por ygorth em 27/04/2005 - 09:33h

Neste script IPTables,

você primeiro nao precisa bloquear as coisas para depois sair liberando ?

## Bloqueios
# Inicialmente bloqueia todos os pacotes destinados a maquina firewall.
iptables -P INPUT DROP

# Inicialmente bloqueia todos os pacotes destinados a rede interna.
iptables -P FORWARD DROP

abracos...

[8] Comentário enviado por removido em 28/04/2005 - 19:10h

Muito bom... só seria mais aconselhavel deixar uam maquina separada para FIREWALL !!

Não é aconselhavel deixar um servidor de arquivos como servidor de firewall tbm.

[9] Comentário enviado por agk em 28/04/2005 - 19:53h

Parabéns pelo artigo, ele trata de diversos servidores e você descreveu com méritos os processos de instalação.
Mas fica aí minha sugestão para detalhar alguma coisas, talvez para um próximo artigo. Talvez um usuário iniciante ache que é um tutorial completo, mas engana-se quem acha que vai configurar um servidor linux sem ter um pouco de conhecimento e seguinte apenas um "passo-a-passo".
Acho que poderia ter detalhado por exemplo o que fazem aqueles opções no ./configure do squid, do samba e porque algumas foram habilitadas e outras desabilitadas. Sempre é bom sabermos o que estamos fazendo e principalmente se tratando de um servidor.
Mais uma vez parabéns pelo artigo, espero que não entenda mal as minhas sugestões, apenas as coloquei porque achei importante e também compreendo que o motivo de não têla-as colocado talvez fosse pela amplitude que tomaria o artigo.

[10] Comentário enviado por cvs em 29/04/2005 - 07:41h

Void, como dispomos apenas de 1 maquina para fazer esse serviço aqui, foi o que tive que fazer, tbm prefiro que o firewall seja uma maquina separa mesmo.

agk, de forma alguma entendi mal, concordo com vc, não havia pensado por este lado, nos proximos eu vou detalhar mais sobre esses parametros e tentar fazer algo mais detalhado.

[11] Comentário enviado por cvs em 29/04/2005 - 07:43h

controlc, pra te falar a verdade, assim como fiz num comentario anterior, eu não mando muito bem nessa parte de firewall e coisas semelhantes e por isso saiu isso ai... hehehe... Mas se quiser pode fazer um script mais detalhado que eu peço pro fabio adicionar ele no tutorial e também colocar vc como o autor do script.

[12] Comentário enviado por jgama em 29/04/2005 - 22:40h

Caro cvs, parabens pelos seus topicos, as carinha aqui em uma maquina com CL 10 este comando abaixo não está dando certo.

# dnscache-conf dnscache dnslog /etc/dnscache 192.168.0.1
[root@servlinux djbdns-1.05]# dnscache-conf dnscache dnslog /etc/dnscache 192.168.0.1
dnscache-conf: fatal: unknown account dnslog
[root@servlinux djbdns-1.05]#

Vc saberia porque, já que os comandos anteriores não tive problema.

Abraço





[13] Comentário enviado por wertson em 16/05/2005 - 15:37h

Muito excellente, estava precisando de um artigo assim, show de bola, 10

[14] Comentário enviado por pe360graus em 06/02/2006 - 16:45h

Gostaria saber do amigo, se esta configuração do squid se aplica também ao Slacware 10.2, pois terei que montar um servidor de internet que tenha que resolver nomes, e jogar o link da telemar para todos os clientes da rede interna do provedor de internet viá rádio da minha cidade usando o proxy squid.

[15] Comentário enviado por angeloo em 04/08/2006 - 20:01h

ESSE ARTIGO É ÓTIMO, (Servidor de rede (PDC - Proxy Transparente - DNS), EU GOSTARIA DE MONTAR MAIS OU MENOS A MESMA COISA SO QUE É PRA LAN HOUSE, SÓ QUE EU QUERO MONTAR COM DEBIAN, O PROCEDIMENTO É O MESMO???

[16] Comentário enviado por celsolp em 16/05/2007 - 20:08h

To com um trabalho da facu!!!!
e tenho q instalar um servidor de DNS,
queria q um passo a passo, como montar um servidor de DNS...

flws..................

[17] Comentário enviado por leooliveira em 17/12/2012 - 02:46h

Cara otimo artigo, sou iniciante no mundo linux e este artigo me ajudou muito.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts