Arquivos históricos do BR-Linux.org apresenta:

Linux in Brazil (IPChains e iplog )

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!


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.