![]() |
IPChains e iplog
| Linux in Brazil Documentação original e de qualidade em bom português |
Augusto C. Campos - brain@matrix.com.br
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
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.
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.
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!