Compartilhando a conexão

Depois de configuradas as duas interfaces de rede, ativar o compartilhamento da conexão é bastante simples. No Linux o trabalho é feito pelo iptables, o firewall padrão do sistema, que incorpora a função de compartilhamento através do módulo “iptable_nat”. Para ativar o compartilhamento, precisamos apenas carregar o módulo, ativar o roteamento de pacotes e em seguida executar o comando que ativa o compartilhamento propriamente dito. Explicando assim pode parecer difícil, mas na prática isso é feito usando apenas 3 comandos:

# modprobe iptable_nat
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

O “eth0” no terceiro comando indica a placa onde está a conexão com a Internet. Não se esqueça de indicar a interface apropriada ao executar o comando (na dúvida você pode checar a configuração da rede usando o ifconfig). Se você acessa via ADSL, usando o pppoeconf ou o adsl-setup (com o modem configurado como bridge) será criada a interface “ppp0”.

A partir daí, todas as requisições recebidas na interface de rede local serão mascaradas e roteadas usando a interface especificada e as respostas serão devolvidas aos PCs da rede local.

É possível compartilhar qualquer tipo de conexão, incluindo conexões discadas, wireless, conexões via celular e assim por diante. O servidor simplesmente passa a rotear os pacotes dos demais micros da rede, transmitindo todas as requisições através da conexão que possui. Você precisa apenas configurar os demais PCs da rede para o utilizarem como gateway.

Nem todas as distribuições instalam o executável do iptables por padrão. No Mandriva, por exemplo, ele é instalado ao marcar a categoria “firewall” durante a instalação. Para instalá-lo posteriormente, use o comando “urpmi iptables“.

Os três comandos devem ser colocados em algum dos arquivos de inicialização do sistema para que passem a ser executados automaticamente durante o boot. No caso do Ubuntu e outras distribuições derivadas do Debian, você pode utilizar o arquivo “/etc/rc.local“. No Fedora, Mandriva e outras distribuições derivadas do Red Hat, use o arquivo “/etc/rc.d/rc.local“.

Você pode aproveitar para proteger o servidor usando um firewall simples, que bloqueie as portas de entrada, deixando passar apenas pacotes de respostas e conexões em portas indicadas manualmente. Com isso, o firewall garante um bom nível de proteção, com um mínimo de efeitos colaterais.

Para isso, utilizaremos o próprio iptables, complementando os três comandos anteriores. Estes comandos podem ser incluídos no arquivo /etc/rc.local ou /etc/rc.d/rc.local, logo abaixo dos comandos para compartilhar a conexão:

iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state –state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -p tcp –syn -j DROP

O primeiro comando faz com que o seu servidor deixe de responder a pings. Muitos ataques casuais começam com uma varredura de diversas faixas de endereços de conexões domésticas, enviando um ping para todas as máquinas. Responder ao ping indica não apenas que a máquina está online, mas também que provavelmente ela está com o firewall desativado, o que estimula o atacante a continuar o ataque, lançando um portscan e iniciando o ataque propriamente dito. Deixando de responder aos pings, o volume de ataques ao servidor cai bastante.

Os dois comandos seguintes protegem contra IP spoofing (uma técnica usada em diversos tipos de ataques, onde o atacante envia pacotes usando um endereço IP falseado como remetente, tentando assim obter acesso a PCs da rede interna) e contra pacotes inválidos, que são comumente utilizados em ataques DoS e ataques de buffer overflow.

As três últimas linhas autorizam pacotes provenientes da interface de loopback (lo), juntamente com pacotes provenientes da rede local e descartam novas conexões na interface de Internet, deixando passar apenas pacotes de resposta. Não se esqueça de substituir o “eth1” pela interface de rede local correta, caso contrário você vai acabar fazendo o oposto, ou seja, bloqueando as conexões dos PCs da rede local e deixando passar as provenientes da Internet :).

Se você quiser abrir portas específicas adicione a regra “iptables -A INPUT -p tcp –dport 22 -j ACCEPT” (onde o “22” é a porta e o “tcp” é o protocolo) antes da regra que bloqueia as conexões. Você pode repetir a regra caso necessário, abrindo assim todas as portas desejadas.

No final, incluindo os comandos para compartilhar a conexão e regras para abrir as portas 22 (SSH) e 6881 (bittorrent), os comandos a adicionar no script de inicialização seriam:

#!/bin/sh
# Compartilha a conexão
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Bloqueia pings e protege contra IP spoofing e pacotes inválidos
iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state –state INVALID -j DROP
# Abre para a interface de loopback e para a interface de rede local
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
# Abre para as portas especificadas
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -p tcp –dport 6881 -j ACCEPT
# Bloqueia as demais conexões, deixando passar apenas pacotes de resposta
iptables -A INPUT -p tcp –syn -j DROP

Você pode também criar um filtro simples de conteúdo indicando manualmente endereços que devem ser bloqueados, usando o comando “iptables -A FORWARD -d dominio.com -j DROP”. Isso faz com que o servidor se recurse a encaminhar pacotes destinados aos endereços citados, impedindo que eles sejam acessados a partir dos micros da rede local. Você só precisa adicionar uma regra para cada domínio a ser bloqueado no seu script de firewall, como em:

iptables -A FORWARD -d orkut.com -j DROP
iptables -A FORWARD -d msn.com -j DROP
iptables -A FORWARD -d myspace.com -j DROP

Usada dessa forma, a regra bloqueia o acesso aos domínios especificados usando qualquer protocolo. Ou seja, se você adicionar uma regra bloqueando um tracker bittorrent, por exemplo, os clientes bittorrent rodando nas máquinas da rede não conseguirão se conectar a ele para fazerem download dos arquivos. Praticamente qualquer programa que precise se conectar a um servidor central, com um endereço fixo, pode ser bloqueado usando esta regra, desde que você saiba indicar o endereço correto.

A limitação é que esta regra se aplica apenas ao servidor relacionado ao domínio, por isso ela não bloqueia subdomínios hospedados em servidores diferentes. Por exemplo, você pode bloquear o domínio “uol.com.br”, mas isso não bloqueará o “tvuol.uol.com.br”, que é hospedado em um servidor separado. Em casos como este, a única solução é bloquear ambos.

Outra dica é que, ao compartilhar uma conexão discada ou uma conexão via celular (que também é uma forma de conexão discada, já que você precisa usar o kppp ou o gnome-ppp), você pode fazer com que o sistema execute o script de compartilhamento ao efetuar a conexão usando a aba “Executar” nas propriedades da conexão.

Adapte o script de compartilhamento para compartilhar a interface ppp0 e coloque o comando que executa o script no campo “Ao conectar”:

index_html_m99498e7

Com isso o compartilhamento é automaticamente ativado ao conectar. A principal observação é que para usar o script de compartilhamento dessa forma você deve abrir o kppp como root, ou modificar o script de forma que ele use o sudo em todos o comandos que precisarem ser executados como root, de forma que ele possa ser executado usando seu login de usuário.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X