IPChains e iplog

Linux in Brazil

Documentação original
e de qualidade
em bom português

O texto abaixo foi publicado no BR-Linux antes de 2005, e está mantido aqui por razões históricas. Veja o material atualizado diariamente do BR-Linux em http://br-linux.org
Dúvidas comuns | Perguntar no Fórum | Notícias | Mais documentos | Contato
 
Destaques de hoje:
  • Vídeo e fotos: Boot do Linux nas urnas eletrônicas
  • Boot do Linux nas urnas eletrônicas: mais fotos, e um vídeo
  • Podcast conta a verdade sobre os bastidores do BR-Linux e do Efetividade ;-)
  • A semana no BR-Linux: 17 anos de Linux, Debian Lenny postergado, Stallman contra as nuvens, foto do Tux nas urnas eletrônicas
  • Monitorando a conexão

    Augusto C. Campos - brain@matrix.com.br

    Apresentação

    Este texto apresenta maneiras práticas de monitorar o que ocorre na sua conexão discada à Internet. Aprenda a instalar e usar o iplog, e veja algumas dicas de restriçao de acesso com o ipchains

    iplog

    O uso de loggers e sniffers para monitorar as conexões de rede é uma técnica bastante eficaz e difundida, embora deva ser apenas um complemento a uma política bem-estruturada de segurança. Existem literalmente dezenas de softwares neste estilo (veja alguns deles aqui), mas poucos deles reunem ao mesmo tempo a facilidade de uso e a abrangência do iplog, em minha opinião a ferramenta ideal para acompanhamento de conexões domésticas.

    A grande vantagem do iplog, principalmente para o usuário sem grande experiência ou conhecimento sobre o funcionamento da rede, é que ele por default não exibe tudo o que ocorre no seu link - ele se limita às exceções, tais como tentativas de conexões ao seu micro, port scans, probes e todo tipo de tráfego ICMP não causado por você - você saberá quando alguém der ping em você.

    Por default, o iplog envia todas as suas mensagens para o syslog, que em geral irá gravá-las imediatamente no arquivo /var/log/messages (embora isto possa ser configurado de maneira diferente). Portanto, para acompanhar as mensagens do iplog, você pode abrir uma sessão de root (com o comando su -) em uma janela ou console e a partir dela emitir o comando tail -f /var/log/messages para exibir todas as linhas que forem sendo adicionadas ao arquivo de log. Ou use soluções criativas como o root-tail - mas lembre-se de verificar bem as permissões dos arquivos, em geral usuários comuns não têm (e nem devem, nem precisam ter) acesso aos logs.

    A interpretação das mensagens do iplog fica por sua conta, mas elas são relativamente claras. Por exemplo, eu estou usando um serviço online neste mmomento, e alguém enviou uma sequência de PINGs (ICMP) para o meu computador. Eis o que aparece no log:

    Jan 4 15:14:35 playcenter iplog[6912]: ICMP: echo from xim.yatech.com.br (40 bytes)
    Jan 4 15:14:36 playcenter last message repeated 3 times

    Note que é informado o tipo de acesso (no caso, ICMP echo, que é o popular ping), a origem (xim.yatech.com.br) e o número de bytes. Se ao invés de um acesso ICMP, o usuário estivesse tentando verificar se eu tenho o NetBus (um popular trojan que afeta apenas usuários de Windows) instalado, eu veria algo similar a:

    Jan 4 15:59:05 playcenter iplog[6989]: TCP: port 12345 connection attempt from xim.yatech.com.br (200.215.12.183):64647

    Já se o potencial invasor tentasse acesso a um serviço padronizado (os que geralmente constam no seu arquivo /etc/services), você verá claramente o nome do serviço, como no caso abaixo, onde a tentativa foi na porta 110 (pop3):

    Jan 4 15:24:29 playcenter iplog[7147]: TCP: pop3 connection attempt from xim.yatech.com.br (200.215.12.183):64000

    Finalmente, em caso de portscans você poderia ver mensagens como as que seguem, registradas em momentos diferentes:

    Jan 4 16:03:11 playcenter iplog[6989]: TCP: port scan detected [ports 1,2,3,4,5,6,7,8,9,10,...] from 200.193.7.174
    Jan 4 16:05:00 playcenter iplog[6990]: TCP: port scan mode expired for firewall.globalite.com.br (200.237.241.34) - received a total of 447 packets (10728 bytes).

    São informações úteis principalmente para usuários de serviços online como ICQ, IRC e jogos, muitas vezes vítimas inocentes de usuários mal-intencionados cujo objetivo é "derrubar" ou "invadir" a conexão alheia. Caso você detecte algo estranho, entre em contato com o seu provedor ou com o responsável pelo serviço online que você frequenta para saber o que fazer a respeito.

    Instalar o iplog é bastante simples: faça o download no site oficial, descompacte, e siga a rotina tradicional (explicada na documentação do pacote): configure, make e make install. Lembre-se de que você precisará ter a biblioteca libpcap corretamente instalada antes de compilar o iplog - mas a maior parte das distribuições comerciais já a inclui, e se não for o seu caso, a documentação do iplog explica onde encontrá-la.

    O iplog tem muitas opções de linha de comando. Eu costumo rodá-lo da seguinte forma:

    /usr/local/sbin/iplog -dew

    Onde a sequência de parâmetros me garante que o tráfego de DNS com o meu servidor será ignorada, sempre que possível será estabelecido o ident (RFC 1413) do possível ofensor, o IP será logado juntamente com o hostname. Note que você não precisa acrescentar opções para definir que tipos de ataques logar, ou outras regras típicas de outros sistemas de monitoramento: o padrão do iplog é registrar tudo que possa ser útil para a sua análise. Mesmo assim, dê uma olhada na documentação, pois algumas opções específicas podem ser úteis para o seu caso em particular.

    Uma dica extra é chamar o iplog (com a linha de comando acima) a partir do arquivo /etc/ppp/ip-up (ou /etc/ppp/ip-up.local, preferencialmente), pois assim o próprio pppd se encarregará de executar o iplog quando a conexão se completar. Similarmente, acrescente um comando /usr/local/sbin/iplog -k ao arquivo /etc/ppp/ip-down.local para desativá-lo sempre que a conexão se encerrar. Usuários de conexões permanentes (cable, etc.) precisam acrescentar o comando a um dos scripts de inicialização.

    IPChains

    O que vimos acima é apenas uma forma de acompanhar o que está acontecendo com a sua conexão, mas em geral você também vai querer impedir que algumas coisas aconteçam, antes mesmo de detectá-las. Uma das maneiras de fazer isto é através do IPChains (saiba tudo sobre ele aqui).

    Não tenho a pretensão de escrever um tutorial de IPChains aqui, mas algumas regras básicas podem ser ativadas a partir do mesmo arquivo /etc/ppp/ip-up.local que vimos acima, e impedir uma série de surpresas desagradáveis. A sequência de comandos é a que segue (troque todas as ocorrências de ppp0 para eth0 para utilizar em conexões via cable ou ADSL):

    # seta firewall simples para rede ppp
    # augusto Campos - 30/3/2000
    PATH="/sbin"
    # esvazia a cadeia
    ipchains -F input
    ipchains -F output
    # permite identd, mas nega todas as demais portas priv.
    ipchains -A input -i ppp0 -p tcp -d 0/0 auth -y -l -j ACCEPT
    ipchains -A input -i ppp0 -p tcp -d 0/0 :1023 -y -l -j DENY
    # loga exploits comuns de windows
    ipchains -A input -i ppp0 -p tcp -d 0/0 31337 -y -l -j DENY
    ipchains -A input -i ppp0 -p tcp -d 0/0 12345 -y -l -j DENY
    

    Note que esta sequência é muito simples, e basicamente impede que usuários da internet (através da sua porta ppp) acessem todos os serviços privilegiados (portas inferiores a 1024; exemplo: web, imap, pop, telnet, ftp, smtp...) da sua máquina - ele "fecha as portas", como se diz. Usuários da sua rede local (se você estiver em uma) poderão acessar seus serviços normalmente, caso você os tenha. Acrescentei uma exceção para o serviço auth (identd) pois este em geral é do interesse de usuários domésticos.

    Bloqueei também as portas 31337 (Back Orifice) e 12345 (Netbus) porque, embora estes dois trojans possam infectar apenas máquinas Windows, em geral você vai ter interesse em saber quem anda tentando descobrir se você está infectado.

    Você pode fazer muitas outras coisas interessantes com o IPChains - não deixe de ler o IPChains-HOWTO, e lembre-se de que o IPChains será substituído pelo IPTables no kernel 2.4.

    Conclusão

    A segurança é um processo que nunca acaba. É uma questão de confiança e de atitude. Se você seguir os passos acima, sua máquina doméstica estará mais segura do que antes. Mas não deixe de continuar se preocupando com o assunto: não aceite doces de estranhos, e olhe para os dois lados antes de atravessar a rua!