Psionic Portsentry 1.1, o defensor das portos

ArticleCategory: [Choose a category for your article]

System Administration

AuthorImage:[Here we need a little image form you]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in en Georges Tarbouriech 

en to pt Bruno Sousa 

AboutTheAuthor:[A small biography about the author]

O George � j� um utilizador do Unix de h� longa data. Acredita que a seguran�a dos computadores � um dos maiores desafios deste s�culo.

Abstract:[Here you write a little summary]

O Psionic portsentry faz parte do conjunto de utilit�rios do projecto Abacus (al�m do portsentry, o conjunto tamb�m oferece o logcheck e o hostsentry). � um IDS (Sistema de Detec��o de Intrusos) dedicado � detec��o de portos e defesa activa. Trabalha em muitos sabores do Unix incluindo o Mac OS X. A principal caracter�stica de um IDS � a de informar o administrador de sistema acerca da tentativa de intrus�o. A Portsentry vai ainda mais longe visto que pode mesmo reagir a um ataque. A �ltima vers�o deste utilit�rio (1.1) est� dispon�vel em http://www.psionic.com, e al�m disso, a vers�o 1.0 j� faz parte da maioria das distribui��es de Linux (Debian, RedHat...).

ArticleIllustration:[This is the title picture for your article]

[illustration]

ArticleBody:[The article body]

Porqu� utilizar o portsentry ?

Durante a �ltima d�cada, as redes cresceram a uma velocidade incr�vel. O objectivo era o de permitir a comunica��o entre m�quinas usando diferentes Sistemas Operativos. Al�m disso os sistemas propriet�rios de redes foram lentamente, substitu�dos pelo TCP/IP. A Internet fez o resto ! Hoje muitas das redes assentam no TCP/IP e o TCP/IP assenta em portos. Para ser breve, os portos est�o associados a programas (clientes ou servidores). O servidor escuta at� que um cliente o contacte para estabelecer uma liga��o. Os servi�os (programas acima referenciados) s�o mapeados para uma porto espec�fico. Nos Sistemas Unix, o mapa com este sistema encontra-se no ficheiro /etc/services. Ou seja, toda a gente sabe a correspond�ncia entre as portos e os servi�os. Se toda a gente sabe, os piratas ainda o sabem melhor ! Se considerarmos um porto como uma porta, quando um porto est� aberto (� escuta), � como uma porta destrancada. E como � que entra dentro de casa ? Normalmente atrav�s da porta (a n�o ser que prefira a janela, mas isso � consigo !). E os de "chap�u preto" fazem o mesmo para entrar dentro do seu computador...
A primeira coisa a fazer para reduzir o risco � fechar o m�ximo de portos quanto poss�vel, ou seja parar os servi�os. Quanto menos melhor. Mas muito dificilmente consegue fechar todas as portos numa m�quina em rede : a mesma n�o comunicaria mais, o que seria uma pena !
Como limitar o n�mero de servi�os activos ou como fechar as portos est� para al�m do alcance deste artigo. Encontrar� muita informa��o acerca do assunto, se for por exemplo at� ao Linux Documentation Project ou procurando atrav�s das edi��es da LinuxFocus (por exemplo, Bastille Linux ou Utilit�rios de Seguran�a). Ent�o para os diferentes modos de proteger uma m�quina, uma rede aplica-se o mesmo. No Linux considere de refer�ncia obrigat�ria Bastille Linux.
E � aqui que o portsentry entra. O Portsentry pode monitorizar portos e � capaz de bloque�-los se lhe pedir para o fazer. Providencia-lhe diferentes modos de opera��o, alguns espec�ficos de alguns SO. Por acaso, SO significam Linux aqui.
O Portsentry � capaz de beneficiar da filtragem de pacotes feita pelo ipfwadm, ipchains ou iptables segundo o Kernel de Linux que possuir. Isto tamb�m � verdade para outros sabores de Unix usando diferentes utilit�rios (falaremos disto mais tarde). Aqui estamos : o portsentry possui, uma caracter�stica essencial � "auto-bloqueador".
Como � que ele consegue ? Onde vamos n�s !

Como instalar o portsentry ?

O Portsentry vem como um pequeno ficheiro tar. Depois de descomprimir o arquivo, voc� obt�m o c�digo fonte, os v�rios ficheiros de configura��o e os ficheiros README. Obviamente que � recomend�vel l�-los. Visto que estamos a falar de seguran�a, n�o se esque�a de obter os ficheiros PGP (assinatura e chave).
A instala��o do portsentry � �bvia: make (o vosso sistema) e make install. Mas, antes da instala��o, deve prepar�-la. Ou seja, deve ler a documenta��o, alterar o ficheiro portsentry.conf para satisfazer as suas necessidades e verificar o Makefile bem como o ficheiro portsentry.h.
Para o portsentry ser mais eficaz, precisa de, pelo menos, TCPWrappers. Pelo menos, porque a sua utiliza��o em conjunto seria melhor como utilit�rio de filtragem de pacotes. Claro, que se utiliza o Linux, j� tem tudo o que precisa. E acerca dos outros Unices ?
Como test�mos o portsentry em plataformas diferentes, falemos dos requisitos.
No MAC OS X, � como o Linux : est� tudo l�. Voc� tem TCPWrappers, e ipfw (a vers�o BSD). Ent�o digitando "make osx" far� a instala��o.
No Solaris 2.6 (SPARC), n�o tem TCPWrappers. Pode obt�-lo a partir de ftp://ftp.porcupine.org/pub/security. Pode, tamb�m tentar o IPFilter dispon�vel em ftp://coombs.anu.edu.au/pub/net/ip-filter/ip-fil3.4.9.tar.gz (mas s� se tiver um compilador Solaris !!!).
No Irix 6.5, tamb�m n�o tem TCPWrappers. Pode obt�-lo como um pacote a partir de http://freeware.sgi.com/index-by-alpha.html Para a filtragem de pacotes voc� tem o ipfilterd, que vem com o Irix mas n�o instalado por omiss�o.
Por �ltimo, mas n�o o menos importante, a n�o ser que encontre um vsnprintf() a trabalhar n�o conseguir� instalar o portsentry no pr�ximo passo... e eu n�o encontrei nenhum !
Contudo, mais uma vez, voc� devia configurar o portsentry antes do instalar. Bem, mas � consigo, mas seria melhor entender a sua filosofia antes de fazer todo o resto... mas � s� uma opini�o !

Como � que o portsentry trabalha ?

Muito bem, obrigado !
Mais seriamente, o portsentry assenta em ficheiros de configura��o. O mais importante � o ficheiro portsentry.conf. Este diz ao portsentry como reagir contra os seus advers�rios.
Antes de lidar com este ficheiro, voc� precisa de conhecer os diferentes modos de opera��o que existem e o que s�o.
O Portsentry pode utilizar seis modos diferentes, segundo a op��o que d� ao arranque.
- A primeira � a "-tcp" e � o modo b�sico. Com esta op��o o portsentry restringir� os portos TCP encontrados no ficheiro de configura��o na sec��o de "configura��o de portos". Pode restringir at� um limite de 64 portos.
- A segunda � a "-udp" e faz o mesmo que anterior mas para os portos UDP.
- A terceira � a "-stcp", o "s" significa stealth (dif�cil de detectar). A op��o e as pr�ximas s� est�o dispon�veis para Linux. Com a op��o "-stcp", o portsentry utiliza sockets para monitorizar os pacotes de entrada, ou seja os portos n�o est�o reservados para nada.
- A quarta � a "-sudp" e faz o mesmo que a anterior mas para os portos UDP.
- A quinta e sexta s�o "-atcp" e "-audp". S�o as op��es mais eficazes ("a" significa avan�ado). Utilizando estas op��es o portsentry faz uma lista dos portos que est�o � escuta, TCP e UDP, se seleccionar ambos ele bloqueia a m�quina que se ligar a estes portos, excepto se a m�quina est� presente no ficheiro portsentry.ignore.
Isto est� mais bem explicado nos ficheiros README que v�m com o portsentry. Assim, n�o queremos reinventar a roda, ao rescrever a documenta��o. A leitura dos ficheiros README � obrigat�ria (como habitualmente, sejamos um pouco fascistas !).

Como � que o portsentry reage ?

� �bvio, que o portsentry pode criar logs. Se � do tipo de administrador de sistema que n�o l� os logs (azar o seu!), pode utilizar o logcheck em conjunto com o portsentry. Deste modo, o portsentry envia um email para o informar acerca de uma tentativa de intrus�o.
Ele pode utilizar o ficheiro /etc/hosts.deny para escrever as m�quinas de destino, para utilizar com os TCPWrappers.
A m�quina local � capaz de rotear o tr�fego da rede para uma m�quina "morta".
Por �ltimo, a m�quina local pode "eliminar" os pacotes atrav�s de um utilit�rio de filtragem local.
Agora sabe mais um pouco acerca da filosofia do portsentry, pode ent�o, come�ar a escrever o ficheiro portsentry.conf.
- A primeira sec��o do ficheiro de configura��o diz respeito aos portos. Aqui pode escolher os portos a que quer proteger. Lembre-se, que isto � ignorado quando utiliza os modos avan�ados para o Linux. Tenha cuidado com os portos que n�o quer proteger (n�o protega o porto 6000 se utilizar o X, por exemplo).
- A pr�xima sec��o, � para op��es avan�ados de detec��o. Por omiss�o s�o monitorizadas todas os portos abaixo de 1024, quer TCP e UDP. Aqui, pode tamb�m excluir os portos que quer ignorar. Isto � bastante importante para evitar falsos alarmes e obviamente a cria��o de logs grandes, especialmente se utilizar m�quinas Windos na sua rede. Por exemplo, proteger o porto 111 quando o portmap � utilizado e as m�quinas n�o est�o discriminadas no ficheiro portsentry.ignore, seria, obviamente, loucura, pois o portmap tem por significado servidores RPC, como o NFS, mas foi avisado. Ou seja, o NFS n�o � assim t�o seguro nas m�quinas Unix ent�o imagine-se nas m�quinas Windos.
Aqui vem, normalmente a sec��o fora de contexto: quando escrevo "Windos", n�o � um tipo : � s� para insistir no facto de que o Windows � um ambiente por cima do Dos (D de dirty ? -sujo)... e � menos um caracter a digitar (que maluco eu sou !). Desculpem a digress�o.
- A sec��o dos ficheiros de configura��o diz respeito aos ficheiros utilizados pelo portsentry para definir o seu hist�rico ou para definir as m�quinas a ignorar. Se fizer uma instala��o por omiss�o, n�o altere isto.
- A sec��o de configura��o "miscellaneous" permite-lhe activar, desactivar as procuras por DNS.
- A sec��o com as op��es de resposta � o cora��o da configura��o. � aqui que define como � que o portsentry reagir�.
Primeiro, as op��es a ignorar. Pode escolher para bloquear ou n�o bloquear os "scans" ou para correr um comando externo.
A seguir, na sec��o de routeamento, diz ao portsentry como eliminar o routeamento ou como beneficiar de um utilit�rio de filtragem utilizado na sua m�quina. H� muitos exemplos para variadas plataformas. Escolha uma (e s� uma !) que se adeq�e �s suas necessidades.
- A sec��o dos TCPWrappers indica se quer escrever para o ficheiro /etc/hosts.deny.
- A sec��o dos comandos externos permite-lhes definir o comando a correr quando uma m�quina se liga.
- A sec��o de valor do "scan trigger" permite-lhe definir o tempo de reac��o. Por omiss�o � "0" sendo o mais r�pido logo que � enviado uma alarme na primeira tentativa de liga��o.
- A �ltima sec��o � apresentar uma mensagem no caso da tentativa de intrus�o. N�o trabalha com os modos "stealth".
Quando terminar com esta parte, est� j� quase tudo feito. De novo para evitar falsos alarmes ou logs enormes, verifique o ficheiro portsentry.ignore. Adiciona aqui o endere�o da sua rede local com a respectiva m�scara, ou os endere�os IP de algumas m�quinas.
E � isto! Pode agora fazer "make yoursystem" e "make install". A script de instala��o faz todo o trabalho visto que d� permiss�es restritivas ao direct�rio e aos ficheiros. Agora, � o suficiente para correr o portsentry com as op��es da sua escolha. Verifique os logs para ver o que acontece. Se tudo correu bem o portsentry come�ou a correr tornando mais segura a m�quina.

O que � acontece a seguir ?

Utilizando o nmap, voc� pode simular um scan a um porto da sua nova m�quina segura. (Mais acerca do nmap aqui). Esta � a resposta que obt�m :

portsentry is
running on the scanned host

Ou seja, a m�quina n�o d� muita informa��o ao pirata !
Normalmente, esta tentativa devia fornecer a vers�o do sistema operativo e os portos abertos na m�quina pesquisada. Este tipo de informa��o � muito �til para um pirata visto que ele sabe melhor onde atacar e como atacar. Com o portsentry a correr com um valor do trigger de scan a 0 no modo avan�ado, o bloqueio � imediato. Correr com um valor de 1 no modo normal, o pirata teria uma lista de portos abertos e provavelmente o SO a correr na m�quina. Mas tentando ligar-se a um conhecido porto aberto falharia. O portsentry bloqueou o porto ap�s a primeira tentativa. Simples mas bastante eficaz !
Ou seja, se utilizar os TCPWrappers, o endere�o IP do atacante fica escrito no ficheiro /etc/hosts.deny. Se decidir redireccionar para uma m�quina "morta", o portsentry � ainda eficaz mas n�o o previne de ataques UDP.
Se tiver utilizar um utilit�rio de filtragem de pacotes, a m�quina atacada elimina os pacotes vindos do atacante atrav�s deste utilit�rio.
Claro, que este � o melhor meio de beneficiar do poder total do portsentry.
Mais uma vez, o modo avan�ado no Linux � o ideal. Isto n�o quer dizer que o portsentry seja t�o bom quanto nos outros SOs, tem somente um pouco menos de "performance"... bem, mas n�o realmente !
Para entendermos melhor, verifique os logs procurando diferentes tentativas de intrus�o nos v�rios SOs a correr o portsentry em modos diferentes. Isto diz tudo !
Segundo os modos utilizados, os logs forneceram falsos alarmes. Para melhorar a qualidade da informa��o, tem de trabalhar a informa��o no ficheiro de configura��o. Ap�s alguns testes deve obter exactamente o que deseja.

Pode viver sem o portsentry ?

Definitivamente N�O ! Existem imensos IDS, livres ou n�o. Muitos deles s�o bastante bons. Mencionemos o bem conhecido snort, dispon�vel em http://www.snort.org.
Normalmente, estes IDSes s�o passivos. Ou seja, s�o utilizados para o informar acerca da intrus�o. Foram desenhados para tal. Por exemplo, o snort � muito sofisticado, visto que se rege em regras de scripts, permitindo-lhe escrever as suas pr�prias regras. O website da snort fornece tamb�m uma base de dados com regras. E al�m disso, se n�o tiver medo de logs enormes, pode correr quer o portsentry e o snort. N�o � assim t�o est�pido !
Contudo, a for�a do portsentry � que um IDS activo. O modo como pode reagir e de cortar a respira��o. Combin�-lo com um utilit�rio de filtragem de pacotes � obrigat�rio. Podemos formular a quest�o : Ser� o portsentry o complemento de um utilit�rio de filtragem de pacotes ou vice-versa ?
De qualquer modo, existe ainda muito por dizer acerca do portsentry. Por exemplo, deve ter bastante cuidado com o modo avan�ado scan de detec��o UDP. Leia a documenta��o (novamente!) para entender os problemas relacionados ao UDP. Os Solaris podem tamb�m causar alguns problemas, visto utilizar intervalos de portos (32700) muito elevados (quer TCP e UDP). Mas este artigo � s� uma breve revis�o e n�o uma completa revis�o de este grande peda�o de software.
A seguran�a de computador � uma preocupa��o, e n�o s� para os administradores de sistema. O crescimento inacredit�vel da Internet ainda complica mais as coisas. Ou seja, o perigo de intrus�o � cada dia maior. A comunidade de software livre fornece utilit�rios excelentes : o portsentry � um deles. N�o os deixe de lado ! Mas lembre-se que estes utilit�rios s� reduzem o risco e n�o lhe fornecem de qualquer modo um sistema 100% seguro. Isto � outra raz�o para investigar na �rea de utilit�rios de seguran�a.
Por �ltimo, mas n�o o menos importante, as pessoas no Psionic est�o a trabalhar num produto comercial dizendo-nos que n�o ficaremos "desapontados". Espere e veja, depois !
Entretanto, v� e obtenha o 1.1, n�o ficar� desapontado tamb�m. As pessoas no Psionic est�o a fazer um trabalho excelente. Al�m disso o hostentry � digno de ser testado... e utilizado.
Estamos a viver num tempo excelente, n�o estamos ?

Refer�ncias

Os websites que se seguem s�o refer�ncias obrigat�rias quando se trata de seguran�a. E, eles conduzem-no a mais websites, e estes a mais... Voc� sabe, os recenseamentos Russos ? O �nico problema � que s os quiser ler todos n�o viver� tempo suficiente !!!
http://www.linuxsecurity.com
http://www.sans.org
http://www.infosyssec.org
http://www.securityfocus.com
http://www.cs.purdue.edu/coast/hotlist/