Linux e banda larga
Aproveite melhor seu serviço de ADSL ou Cable Modem com o Linux
Uma das boas novidades que a flexibilização do setor de telefonia trouxe para os usuários brasileiros de Internet foi a relativa facilidade de acesso aos provedores de banda larga. Em pouco mais de 5 anos, os usuários das maiores cidades do país passaram das minguadas conexões discadas a 9,6 Kbps para conexões ADSL, Cable ou rádio de 256 Kbps (ou mais!). Embora o preço deste tipo de serviço ainda seja alto, e a acessibilidade esteja restrita às maiores cidades, o fato é que já é bastante comum o uso deste tipo de serviço.
O Linux é um excelente parceiro do usuário de banda larga. Em primeiro lugar, pelo aspecto segurança: máquinas ligadas a um sistema de banda larga são alvos valorizados para invasão pelos crackers e script kiddies, que sempre encontram uso para a alta velocidade disponível neste tipo de serviço. Segundo: pela estabilidade ter uma conexão disponível 24h não é tão efetivo se você precisa dar reboot no seu sistema operacional a cada vez que ele opta por exibir uma tela azul de erro, e o Linux não sofre deste mal.
E finalmente, pelas características extras que o sistema de rede do Linux fornece, permitindo que você compartilhe o acesso à Internet com todos os micros do seu escritório, defina um filtro de pacotes (firewall) e tenha total controle sobre o que pode e o que não pode trafegar em sua rede, sem instalar software adicional e sem custo extra.
Lembre-se de que para utilizar os comandos deste artigo, você precisará estar utilizando uma distribuição de Linux com kernel 2.4.x ou superior. Todas as distribuições recentes fornecem esta versão - se você tem dúvidas quanto à versão do seu kernel, utilize o comando uname -r.
Compartilhando o acesso
A maior parte dos provedores de banda larga para uso doméstico ou em pequenos escritórios fornece um plano padrão onde a conexão é feita através de um único micro - se você tem uma rede local, terá que pagar adicionais para pontos extras ou instalar roteadores ou softwares específicos de compartilhamento de conexão.
Entretanto, se este micro conectado ao provedor de banda larga estiver rodando Linux, é muito simples fazer com que ele compartilhe a conexão com o restante da rede. Vamos assumir que seu micro Linux já está funcionando e conectado ao provedor através de uma placa de rede (reconhecida pelo Linux como a interface de rede eth0). O que você precisa é simples. Comece por acrescentar uma segunda placa de rede ao seu computador (em geral, basta plugar uma segunda placa similar à que você já tem, mas não se esqueça de seguir as recomendações do fabricante do equipamento) e conecte-a à sua rede local normalmente (em geral, basta plugá-la no hub).
Em seguida, utilize as ferramentas de configuração da sua distribuição de Linux para definir os parâmetros da nova placa, que devem ser compatíveis com a sua rede local. As instruções variam de distribuição para distribuição, e os parâmetros variam de rede para rede - se você não sabe qual é a sua máscara de sub-rede, ou qual a faixa de endereçamento utilizada em sua rede local, tenha à mão o telefone de quem a instalou e configurou para você. Por exemplo, na minha rede local doméstica, a segunda placa de rede do micro que tem o cable modem utiliza o endereço IP 192.168.1.106 e a máscara de sub-rede 255.255.0.0 - tudo configurado através do YaST, ferramenta padrão do SuSE Linux.
Como cada distribuição utiliza ferramentas de configuração diferentes - sorte que todas são documentadas - você vai ter que encontrar o seu próprio caminho. Mas vale a dica: prefira distribuições recentes, pois elas estão cada vez mais automatizadas e farão a você apenas o mínimo de perguntas necessário.
Quando a segunda placa de rede estiver adequadamente configurada, é hora de testar. Utilize o comando ping para verificar se as demais estações de sua rede local conseguem acessar o seu micro (que está prestes a se transformar em um gateway). Não importa se são máquinas Linux ou Windows: vá a um prompt de comando e digite ping 192.168.1.106 - se houver erro, refaça os passos acima, contando com o apoio da documentação adicional sugerida no quadro “Para saber mais”.
Funcionou? Agora é só ativar o recurso de NAT ou Masquerading. O nome pode assustar, os comandos também, mas não há muito que errar. Digite no seu editor favorito os comandos da listagem 1 e salve-os como /usr/bin/ativa_nat.sh (dica: você precisará estar como usuário root para poder gravar algo no /usr/bin).
Após digitar e salvar, transforme seu arquivo em um programa executável, digitando chmod a+rx /usr/bin/ativa_nat.sh. Agora, para ativar o compartilhamento, tudo o que você tem a fazer é digitar (como root) o comando /usr/bin/ativa_nat.sh - e seu micro se transformará em um gateway.
Mas ainda não estamos prontos - você precisa informar aos demais computadores da sua rede que eles podem acessar a Internet utilizando o computador recém-configurado como gateway. Se os outros computadores da sua rede estiverem rodando Linux, tudo o que você precisa é executar (como root) o comando route add default gw 192.168.1.106. Caso sejam Windows, acesse as propriedades do ambiente de rede, localize a opção Gateway padrão e preencha 192.168.1.106. Em ambos os casos, substitua o 192.168.1.106 pelo endereço IP que você utilizou para configurar a segunda placa de rede do micro que está sendo usado como gateway.
Aproveite o momento para cadastrar os endereços de servidores DNS em todos os micros de sua rede. Eles podem utilizar os mesmos servidores cadastrados na máquina gateway - se você não souber quais são, verifique no arquivo /etc/resolv.conf, ou ligue para o suporte do seu provedor de banda larga.
Agora (ou após um reboot em todas as máquinas Windows, se for o caso), todos os micros da sua rede local devem estar aptos a navegar sem maiores problemas. Até que foi fácil, não? A tarefa de automatizar os comandos para execução automática a cada novo boot fica como dever de casa. E não se esqueça de olhar as indicações da seção Para Saber Mais, para descobrir como ir além do básico no que diz respeito ao compartilhamento de conexão.
Um firewall simples
Há muito que você pode fazer para garantir a segurança da sua rede local. Os passos básicos são:
- Não rodar serviços de rede desnecessários
- Manter o sistema sempre atualizado
- Não usar senhas óbvias
- Manter-se sempre informado sobre falhas, e corrigí-las
Destes, o primeiro é um dos mais cruciais: os serviços de rede que você habilita são as possíveis portas de entrada através das quais um eventual invasor poderá tentar comprometer a sua segurança.
Normalmente os administradores de redes domésticas ou de escritórios não têm nenhum interesse em prover serviços de rede (exemplo: telnet, web, mail) para usuários externos, mas acabam habilitando-os durante testes, ou por aceitar sugestões default dos sistemas de instalação, ou até porque querem prover estes serviços para os usuários internos, mas não sabem como fazer para permitir acesso apenas aos usuários autorizados.
O ideal é que você simplesmente desative todos os serviços de rede (exemplos: samba, apache, sendmail, sshd, inetd...) das máquinas acessíveis a partir da Internet. Não sendo possível, um bom paliativo é a instalação de um filtro de pacotes simples: uma mini-firewall, por assim dizer.
Existem muitos softwares que ajudam a construir uma configuração de firewall adaptada às suas necessidades (experimente o alfandega: alfandega.sourceforge.net). Mas se você não domina arte, talvez valha a pena partir de uma abordagem mais genérica: configurar uma firewall que bloqueie as conexões externas a todos os serviços de rede do seu servidor, sem bloquear nenhum tipo de acesso proveniente dos micros da sua rede interna.
O script da listagem 2, sugerido para usuários domésticos pelo próprio autor das características de firewall do Linux, faz exatamente isso: impede que conexões iniciadas fora da sua rede sejam aceitas. Usuários internos podem fazer conexões onde quiserem, e nenhum usuário externo pode iniciar uma conexão com a sua rede.
A rotina já é familiar: digite a listagem no seu editor de texto preferido, salve-a como /usr/bin/bloqueia.sh e torne-a executável através do comando chmod a+rx /usr/bin/bloqueia.sh. Aí, quando quiser ativar as regras de bloqueio, basta digitar /usr/bin/bloqueia.sh (sempre como root). As mudanças ficam ativas até o próximo boot.
Este script simples apenas arranha a superfície das capacidades do iptables, que é o subsistema de filtro de pacotes do Linux. Há muito mais o que explorar: redirecionamento de portas, logs avançados, bloqueio a portas ou máquinas específicas, etc. Cada um destes temas justificaria seu próprio tutorial, mas você encontra muita informação sobre eles nos documentos citados na seção Para Saber Mais (comece pelos How-Tos!).
Dicas para usuários de banda larga
Se você é marinheiro de primeira viagem em conexões de alta velocidade e alta disponibilidade, atenção para os 10 mandamentos da conexão segura.
1- Instale e ative apenas os pacotes
de software dos quais você necessita
Se você pretende utilizar sua máquina apenas como estação de trabalho, para que instalar um servidor de e-mail? Da mesma forma, se você precisa instalar um servidor web local para fazer testes do site que está desenvolvendo, que tal bloquear os acessos externos a ele? Quanto menos portas de entrada, menos vulnerabilidades reais e potenciais você terá.
2 - Sempre instale as atualizações
de segurança da sua distribuição
Não basta ter o CD-ROM! Todas as distribuições sérias de Linux lançam regularmente atualizações de pacotes, e muitas destas contêm soluções de problemas de segurança. Confira regularmente o website de sua distribuição e atualize! Você tem banda larga, os downloads não vão ser tão trabalhosos assim.
3 - Habilite todos os tipos de log e saiba consultá-los
A maior parte dos subsistemas do Linux grava informações detalhadas sobre tudo o que acontece com eles, inclusive tentativas de violação de segurança, nos seus logs. Consulte a documentação de todos os serviços que você deixar habilitado e saiba que arquivos monitorar. Programas como o logsurfer (www.cert.dfn.de/eng/logsurf/) podem ajudar.
4 - Mantenha backups
Se você tem qualquer informação importante armazenada em um computador exposto à Internet, é essencial ter cópias dela armazenadas em um local separado - seja um CD-ROM, fitas ou qualquer outro meio.
5 - Cuidado com as senhas
Não use senhas simples, nem permita que outros usuários as tenham. Não divulgue suas senhas, troque-as regularmente e não tenha a mesma senha em vários computadores.
6 - Use serviços modernos
A maior parte das distribuições recentes já desabilita por default serviços antigos e sem características de segurança como o telnet e o FTP. Se você precisa mesmo ter acesso remoto à sua máquina com banda larga, habilite o ssh, que permite login e transferência de arquivos e é totalmente criptografado.
7 - Se usar o FTP, tenha cuidado
O melhor é desabilitar (ver mandamento número 6), mas se precisar dele, não permita o acesso do root, restrinja cada usuário ao seu próprio diretório, tenha cuidado com os acessos anônimos (não dê direitos de escrita aos anônimos!) e tenha muita atenção com a política de senhas.
8 - Habilite filtros de pacotes
Seja uma firewall simples, como a exposta neste artigo, ou regras complexas configuradas por um especialista ou obtidas em sites de segurança, você precisa definir que tipo de conexão pode entrar e sair de sua máquina ou rede.
9 - Informe-se
Os potenciais invasores de sua máquina estão atentos às descobertas de novas vulnerabilidades, ao lançamento de pacotes corrigidos e a todas as informações relativas ao tema. O mínimo que você pode fazer é assinar as listas de anúncios de segurança mantidas pela sua distribuição Linux e consultar regularmente (no mínimo diariamente) sites especializados no assunto, como o linuxsecurity.com.br.
10 - Teste as vulnerabilidades da sua rede
Utilizando ferramentas como o Nessus (www.nessus.org), você pode criar um retrato fiel das vulnerabilidades de sua máquina ou rede. Lembre-se de que a versão do Nessus tem que ser a mais recente possível, e que você deve testar a partir de uma máquina externa à sua rede local, caso contrário os resultados não serão os mesmos que um potencial invasor veria.
Listagem 01
#!/bin/sh
# /usr/bin/ativa_nat.sh - ativa compartilhamento
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
Acesso remoto
Se a sua máquina vai ficar ligada 24 horas por dia e se você tomar todas as precauções de segurança necessárias, pode ativar o recurso de acesso remoto e aí abrir sessões nela a partir de qualquer computador conectado à Internet. Resista à tentação de instalar o tradicional (leia-se antigo, inseguro e praticamente obsoleto) sistema telnet e ative o SSH. Em muitas distribuições ele já vem instalado por default, e na maior parte das outras tudo o que você tem que fazer é instalar o pacote sshd e ativá-lo com as ferramentas de configuração da própria distribuição (como o LinuxConf, Yast, ntsysv, etc.).
Para acessar sua máquina remotamente, você vai precisar de um cliente ssh (openssh.com). Se você estiver no Linux, após verificar que o cliente ssh está instalado, tudo o que você precisa é saber o endereço IP de sua máquina e digitar ssh -l seu-login endereço.ip.da.máquina. Responda às perguntas que aparecerem, incluindo a sua senha, e pronto! Você estará em uma sessão shell (modo texto) de sua máquina.
Se você não dispuser de uma máquina Linux no local onde se encontrar, existem versões do cliente ssh para Windows também. Faça o download do PuTTY (www.chiark.greenend.org.uk/~sgtatham/putty/) e instale-o. É muito simples e intuitivo, e logo você poderá abrir sua sessão shell.
Mas não se esqueça de que você precisará sempre saber o endereço IP da sua máquina! Se o seu provedor utiliza o sistema de IPs dinâmicos, considere a possibilidade de utilizar um serviço de hostname dinâmico gratuito como o do DNS2Go (dns2go.deerfield.com), e registre um nome para a sua máquina - ele será atualizado automaticamente, através de um sistema fornecido pelo próprio site, sempre que você mudar de endereço IP.
Listagem 02
#!/bin/sh
# /usr/bin/bloqueia.sh
insmod ip_conntrack
insmod ip_conntrack_ftp
iptables -N block
iptables -A block -m state —state ESTABLISHED,RELATED -j ACCEPT
iptables -A block -m state —state NEW -i ! eth0 -j ACCEPT
iptables -A block -j DROP
iptables -A INPUT -j block
iptables -A FORWARD -j block
Saiba mais:
HOW-TOs: netfilter.samba.org/documentation/
Iptables HOW-TO em português: - netfilter.samba.org/documentation/HOWTO/pt/packet-filtering-HOWTO.html
NAT HOW-TO em português: netfilter.samba.org/documentation/HOWTO/pt/NAT-HOWTO.html
Segurança, questão de bom senso: www.linux.matrix.com.br/segur_intro.htm
Checklist de segurança: www.linux.matrix.com.br/rede_sec1.htm
Tudo sobre iptables: www.linuxguruz.org/iptables/
Masquerading made simple: linuxdoc.org/HOWTO/Masquerading-Simple-HOWTO/index.html
Augusto Campos - brain@matrix.com.br