Esta noticia veio de SecForum http://www.secforum.com.br O Link desta história é: http://www.secforum.com.br/article.php?sid=874 este documento foi copiado em 01/08/2002 de: http://www.secforum.com.br/print.php?sid=874 Compartilhando a Internet com segurança no Linux, Parte 1 Data: Segunda, julho 29 @ 22:20:25 BRT Tópico: Artigos Primeira parte da série escrita por mim sobre como compartilhar sua conexão Internet (ADSL, Cable, etc) utilizando o sistema operacional Linux aplicando conceitos de segurança. Nesta primeira parte, mostrarei como compartilhar uma conexão com sua rede interna utilizando o iptables. Confira o artigo a seguir. Com o constante crescimento das conexoes de banda larga(ADSL, Cable e etc), a procura por softwares e manuais de como compartilhar as mesmas cresceu gradativamente. Como 90% dos artigos encontrados por ai apenas demonstram como compartilhar, resolvi escrever este para mostrar como é possivel fazer este tipo de procedimento no Linux, mantendo a segurança do mesmo. - Primeiramente, é necessario que você tenha um kernel >= 2.4.0 com suporte ao netfilter ativado, os modulos gerados ligados(caso voce tenha optado por modulos na compilaçao do kernel), e o software iptables instalado no seu servidor. OBS: Não serao detalhados neste artigo como compilar o iptables, kernel e etc. Presume-se que os mesmos ja estejam preparados para os procedimentos que aqui serão listados. - Compartilhando: Definiçoes: Interface da Internet: eth0 Interface da Rede Interna: eth1 Rede Interna: 192.168.0.0/24 IPT=/sbin/iptables -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- echo 1 > /proc/sys/net/ipv4/ip_forward -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Ligar o IP Forwarding, que é a base do compartilhamento. Lembrando que esta opçao deve estar habilitada no kernel na hora da compilaçao. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- /sbin/modprobe ip_conntrack /sbin/modprobe ipt_MASQUERADE /sbin/modprobe ipt_LOG /sbin/modprobe iptable_nat /sbin/modprobe iptable_nat_ftp -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Modulos do kernel necessarios para o uso deste script. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- $IPT -F $IPT -Z $IPT -t nat -F -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Estes comandos servem para limpar todas as regras que possam ter na tabela do iptables. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- $IPT -t filter -P FORWARD DROP -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Politica padrao para repassar pacotes: DROP. Isto faz com que nada seja repassado a nao ser o que for listado neste script, o que vem a ser uma forma de tornar mais seguro. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- $IPT -t filter -A INPUT -i lo -s 0/0 -d 0/0 -j ACCEPT $IPT -t filter -A OUTPUT -o lo -s 0/0 -d 0/0 -j ACCEPT -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Permite que a interface LoopBack (lo) tenha trafego livre. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- $IPT -t filter -A INPUT -i eth1 -m state --state NEW -j ACCEPT $IPT -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Aqui, deduz-se que voce confia na sua rede interna e permite que ela faça novas conexoes para qualquer lugar, assim como aceitar as conexoes ja estabelecidas (Stateful Inspection). -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- $IPT -t filter -A FORWARD -d 0/0 -s 192.168.0.0/24 -o eth0 -j ACCEPT $IPT -t filter -A FORWARD -d 192.168.0.0/24 -s 0/0 -i eth0 -j ACCEPT $IPT -t nat -A POSTROUTING -o eth0 -j MASQUERADE $IPT -t filter -A INPUT -s 192.168.0.0/24 -d 0/0 -j ACCEPT $IPT -t filter -A OUTPUT -s 192.168.0.0/24 -d 0/0 -j ACCEPT $IPT -t filter -A OUTPUT -p icmp -s 192.168.0.0/24 -d 0/0 -j ACCEPT -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Estas linhas fazem com que a internet seja compartilhada para sua rede interna. As duas primeiras fazem com que os pacotes da rede interna repassados(FORWARD) atraves da internet(eth0) sejam aceitos. A proxima linha ativa o MASQUERADE na interface da Internet. As ultimas três linhas permitem que a redeinterna va para onde quiser, tanto internamente como externamente. - Script de compartilhamento: ------------------------- #!/bin/bash IPT='/sbin/iptables' NET_IFACE='eth0' LAN_IFACE='eth1' LAN_RANGE='192.168.0.0/24' /sbin/modprobe ip_conntrack /sbin/modprobe ipt_MASQUERADE /sbin/modprobe ipt_LOG /sbin/modprobe iptable_nat /sbin/modprobe iptable_nat_ftp echo 1 > /proc/sys/net/ipv4/ip_forward $IPT -F $IPT -Z $IPT -t nat -F $IPT -t filter -P FORWARD DROP $IPT -t filter -A INPUT -i lo -s 0/0 -d 0/0 -j ACCEPT $IPT -t filter -A OUTPUT -o lo -s 0/0 -d 0/0 -j ACCEPT $IPT -t filter -A INPUT -i $LAN_IFACE -m state --state NEW -j ACCEPT $IPT -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -t filter -A FORWARD -d 0/0 -s $LAN_RANGE -o eth0 -j ACCEPT $IPT -t filter -A FORWARD -d $LAN_RANGE -s 0/0 -i eth0 -j ACCEPT $IPT -t nat -A POSTROUTING -o $NET_IFACE -j MASQUERADE $IPT -t filter -A INPUT -s $LAN_RANGE -d 0/0 -j ACCEPT $IPT -t filter -A OUTPUT -s $LAN_RANGE -d 0/0 -j ACCEPT $IPT -t filter -A OUTPUT -p icmp -s $LAN_RANGE -d 0/0 -j ACCEPT Críticas, sugestões e outros, mandem um email ou postem comentários. Eles são bem-vindos. Por Daniel M. Santana, ou dms.