Nessus : Um outro tijolo na parede de segurança

ArticleCategory: [Choose a category for your article]

System Administration

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

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Georges Tarbouriech

en to en Lorne Bailey

en to pt Bruno Sousa

AboutTheAuthor:[A small biography about the author]

O George é um utilizador de Unix de há longa data. Ele pensa que a segurança dos computadores é um dos maiores desafios do século.

Abstract:[Here you write a little summary]

O um scanner livre, disponível em http://www.nessus.org. O projecto foi começado e é mantido por Renaud Deraison. A versão estável, na altura da redacção deste artigo é a 1.09 e a experimental a 1.14. O software está disponível sobre a GPL e muitas pessoas contribuem para o projecto, nomeadamente nos plugins... enquanto que outros beneficiam do trabalho do nessus sem mencionar o nome (mais acerca disto no fim do artigo). O nessus trabalha em muitos clones Unix quer para clientes e servidores e no Win32 como cliente. Demos uma espreitadela neste grande utilitário.

.

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

[illustration]

ArticleBody:[The article body]

Obtendo e instalando o nessus

Indo até http://www.nessus.org, pode obter este excelente pedaço de software. Visto que o nessus está disponível como um cliente Win32, nós obviamente, consideraremos a versão Posix neste artigo.
Para utilizar o nessus, precisa de pelo menos do nmap e do Gtk (Gimp Toolkit). As ligações para os mesmo são fornecidos no site da nessus. Contudo pode utilizar o nessus a partir da linha de comandos, sendo o Gtk não obrigatório.
Pode obter o nessus de três modos diferentes : o bom, o mau, e o "horrível".
A Boa maneira é a padrão, ou seja, faz download dos arquivos a partir de um site de ftp mais perto de si. Tem quatro arquivos: as bibliotecas nessus, as bibliotecas nasl, os core do nessus e os plugins do nessus. Depois de descomprimidos, constrói-os e instala-os como normalmente : ./configure, make, make install, seguindo a respectiva ordem dos arquivos. Se tiver uma versão antiga do nessus instalada na sua máquina, primeiro tem de a remover. Para tal o nessus fornece uma script de desinstalação para ser utilizado após o primeiro "./configure" que é o das bibliotecas nessus. Corra esta script antes de digitar "make". Faça o mesmo para cada pacote fornecido (excepto se correr a script de desinstalação) e está feito.
O modo mau consiste em correr um script de download com o nome de nessus-installer.sh. Depois digitando "sh nessus-installer.sh" instalará automaticamente o pacote. Os quatro pacotes não precisam de ser instalados separadamente. É agora somente um pacote sozinho.
O modo horrível : logo que o lynx esteja instalado na sua máquina e estiver ligado à Internet digite somente "lynx -source http://install.nessus.org | sh" e já está. NÃO deve ser root para fazer isto.
Obviamente, que o modo recomendado é o "bom" ... bem se faz download do nessus supomos que a segurança seja uma preocupação ! Visto que estamos a falar de segurança não se esqueça de fazer download do checksum MD5.
O nessus vem com utilitários diferentes (nasl, uma linguagem de scripting, nessus-adduser, nessus-build...). Cada um deste utilitários tem a sua página man quer para o cliente quer para o servidor. Mais documentação encontra-se disponível na distribuição (README, INSTALL...) ou no site do nessus.

Configurando e correndo o nessus

Para tornar as coisas mais fáceis de entender, utilizaremos exemplos do nessus versão X11 que é a que utiliza o Gtk.

O servidor nessusd

Para iniciar o nessus, precisa obviamente de correr o demónio servidor, nessusd. Ao lançar o demónio pela primeira vez, tem de declarar o utilizador e a palavra-passe, utilizando o comando nessus-adduser. Se os pacotes das bibliotecas do nessus foram compilados com a opção "--enable-cipher" (recomendado, para não dizer obrigatório !), é gerada uma chave privada. Esta chave pode ser protegida com uma frase-passe. Estão disponíveis muitas opções ao lançar o servidor poderá encontrá-las na página man do nessusd.
A partir daqui pode criar a base de dados dos utilizadores e as correspondentes regras. Ou seja, a quem é permitido correr o demónio do servidor, o que lhe é permitido fazer scan (uma máquina, uma rede...). As regras são na forma de "accept" ou "deny", precedido de um endereço IP de rede e a sua máscara.
Por exemplo : accept 192.168.1.0/24, permite ao utilizador testar a rede 192.168.1.
É também possível, definir um só utilizador sem nenhuma regra. Se deseja que vários utilizadores possam correr o nessusd, terá de ter muita precaução com o que lhes permite fazer. Não pode deixar toda a gente fazer tudo na sua rede, ou pode ?
Po último, o nessusd assenta num ficheiro de configuração (normalmente) encontrado em /usr/local/etc/nessus/nessusd.conf. Pode alterar o ficheiro à mão, desde que saiba o que está a fazer.

O cliente nessus

Pode então iniciar o cliente nessus para se ligar ao servidor nessusd. Para iniciar o cliente basta digitar "nessus &" numa shell. Isto abre a janela de configuração e pede a frase passe acima referenciada. Esta janela fornece-lhe 7 tabs.
O primeiro tab chama-se "nessusd host". A partir dele pode ligar-se à máquina nessusd clicando no botão "Log in". Claro que, isto assume que lhe é permitido ligar-se com este utilizador, por outras palavras o seu utilizador tem de estar declarado na base de dados de utilizadores.

nessusd host


O segundo tab diz respeito aos plugins. É aqui que selecciona os deselecciona os plugins a serem utilizados durante o scan. Por exemplo, pode desactivar os plugins perigosos (aqueles capazes de "crashar" a máquina !). Clicando num plugin, na parte de baixo apresenta-se-lhe informação acerca do mesmo.

plugins plugin detail


O terceiro tab permite-lhe definir as preferências dos plugins. Isto diz respeito ao ping, TCP, FTP ... Aqui pode personalizar o modo em como utilizará o nessus para fazer scan a uma rede ou máquina de destino.

preferences


O quarto tab permite-lhe definir as opções de scan e o scanner de portas a utilizar. Normalmente o nmap é um dos utilizados. Mais acerca do nmap aqui.

scan options


O quinto tab é onde diz ao nessus a máquina de destino do seu scan. No campo de destino (target) pode escrever o nome de uma máquina, o nome de diferentes máquinas separadas por vírgulas, um ou mais endereços IP, novamente, separados por vírgulas, ou um endereço de rede com a sua máscara (por exemplo 192.168.1.0/24). Existe também uma checkBox para fazer a transferência da zona DNS, ou seja, ligando-se ao servidor de DNS o nessus tentará obter uma lista de máquinas no domínio.

target selection


O sexto tab permite ao utilizador alterar a sua frase-passe, apagar a sua chave privada, ou adicionar regras.

user


Por último mas não o menos importante, o último tab abre a janela de créditos, contendo também o número da versão. Ou seja toda a informação a fornecer quando se utiliza o nessus num projecto diferente ... Bem, deve ser algo do género !

credits


Pode ter um oitavo tab se compilou o nessus com a opção de configuração "--enable-save-kb". O kb é sinónimo de "knowledge base". Isto é uma característica experimental que lhe permite adicionar resultados de testes anteriores. Esta característica estará por omissão na versão do nessus 1.1.0. Mais acerca do kb em www.nessus.org/doc/kb_saving.html.
Após cada tab ter sido visitado pode correr o "monstro" ("beast"). Bastando clicar no botão de "Start". O que é que acontece, então ?

O Nessus no trabalho

Mal inicia o scan, o nessus abre a janela apresentando o estado de scan. Por exemplo, digamos que está a tentar uma rede inteira, chamada 192.168.1.0/24. Oito máquinas serão apresentadas de uma só vez, mostrando o plugin que está a ser utilizado para máquina, para além de uma barra de progresso. Eis como se parece :

scan status


Como pode ver, o teste completo pode ser interrompido em qualquer altura.
Obviamente, que se fizer um teste a toda uma rede com muitas máquinas, o teste demorará um pouco de tempo. Dependerá dos SOs, da velocidade da rede, das regras das máquinas (mais ou menos portas abertas), o número de plugins activos, etc.
Pode também, testar de dois modos diferentes : os scans imparciais ou scans diferenciais. Este último assume que configurou o nessus com a opção de configuração, acima mencionada, "--enable-save-kb". O modo imparcial, permite-lhe correr os testes em background enquanto que os diferenciais só lhe mostram a diferença entre dois scans.
Encontrará mais informação acerca disto indo até documentação do nessus (www.nessus.org/doc).
Claro que, o mais importante é o resultado que obtém no fim do scan. Uma das grandes especificações do nessus é que lhe fornece relatórios.

report


Estes relatórios são bastante detalhados e muitas vezes sugerem uma solução para a vulnerabilidade detectada. E, ainda por cima são verdadeiras. Se uma vulnerabilidade não for real, o nessus dir-lhe-á que pode ser uma vulnerabilidade positiva mas falsa. Isto pode acontecer, por exemplo, com versões de upgrade (patches) de alguns demónios. Uma vulnerabilidade recentemente corrigida pode ser detectada como um potencial risco, mas para este tipo de coisas, os plugins são actualizados rapidamente.
Um outro pequeno erro pode vir do nmap (2.53) ao identificar a versão do S.O.. Mas isto é realmente de pouco interesse. Pessoalmente, não me importo se o NotTerminated 4.0 com SP6a é identificado como NotTerminated 4.0 com SP5, ou se o kernel Linux 2.2.19 é detectado como 2.2.14. Também não me queixo de SOs "exóticos" como o AmigaOS ou BeOS sejam identificados como uma impressora ou router. Falo a sério. Não me consigo imaginar a enviar um mail ao Fyodor (autor nmap) a dizer-lhe tal. Quem é que utiliza tais S.O. numa rede, hoje ? Para o AmigaOS, eu diria 5 pessoas ... no mundo inteiro :-(
Outros S.O. não são identificados perfeitamente, mas, ou são "novos" ou não são utilizados. Isto é verdade para o MacOS X ou QNX. Mas, novamente, isto não é assim tão importante e até já pode estar resolvido na nova versão 2.54beta do nmap (além disso, esta nova versão fornece um porto para o MacOS X ).
De qualquer modo, o principal ponto é que o nessus dá-lhe toneladas de informação, permitindo-lhe corrigir vulnerabilidades das suas máquinas ou fraquezas da sua rede local.
Estes relatórios podem ser guardados como texto, NSR, HTML ou HTML com gráficos ... permitindo assim a comparação entre dois scans. Pode parecer óbvio, mas o estado de uma rede numa dada altura pode ser um pouco diferente do que aqui a 30 minutos mais tarde. Porquê ? Uma rede está viva ! Isto é uma das principais razões porque a segurança de uma rede não é assim tão fácil : as coisas alteram-se a toda a hora. Se se está a questionar acerca da necessidade de utilitários como o nessus e o nmap eis aqui a resposta.
Se está curioso acerca do modo como o nessus trabalha observe os logs do sistema, ou se utilizar o snort, observe os logs do snort. Um outro local onde encontrar informação é em /usr/local/var/nessus.
A partir de aqui, terá, provavelmente, algum trabalho para reduzir as fraquezas de muitas máquinas na sua rede. Quanto mais proteger uma máquina melhor. Para o ajudar nesta grande tarefa, o nessus (e também o nmap) são utilitários com os quais não pode deixar de viver.

Plugins

Os Plugins são o "coração" do nessus. São testes de segurança - ou seja programas de teste para descobrir uma dada vulnerabilidade. A linguagem recomendada para escrever os testes de segurança é a NASL (Nessus Attack Scripting Language). Encontrará imensa informação acerca do NASL neste URL : http://www.nessus.org/doc/nasl.html.
Assim, se quiser contribuir para o projecto nessus escrevendo plugins, é aqui que encontrará a informação correcta. Na altura de edição deste artigo existem 756 plugins na base de dados do nessus !
Existem, praticamente 20 familias de plugins : as backdoors, a negação de serviço (denial of service), adquirir autoridade root remotamente (gain root remotely)... Como já mencionado cada plugin reporta informação. Diz-lhe o que está incorrecto e o que deve fazer para corrigir o problema.
Não podemos falar de plugins sem mencionar o CVE (Common Vulnerabilities and Exposures). Existe disponível uma base de dados com tal informação disponível em http://cve.mitre.org. Aqui encontrará tudo acerca dos mais conhecidos riscos de segurança. Um outro sítio excelente para partilhar conhecimento. Um site deste tipo é um referência absoluta a visitar.
Claro, que existe demasiada informação a dizer relativamente aos plugins mas um livro não seria suficiente. Um bom modo de entender o seu funcionamento e o modo como são escritos é lê-los a partir do directório /usr/local/lib/nessus/plugins directory. Obrigado, novamente a Renaud Deraison e contribuintes pelo excelente trabalho.

E agora algo completamente diferente ....

Mesmo que este título vos soe a Monty Python, infelizmente, não há humor nele. As terceiras pessoas que leêm os meus artigos conhecem as minhas frases fora do contexto (off-topic) : desta vez é uma secção inteira ! Mas, é mesmo fora de contexto? Bem, mas isto é outra história, continuemos.
Visto que eu sou muito interessado em segurança de computadores, muito frequentemente, visito os sites dedicados. Pode ser para aprender algo sobre as novas vulnerabilidades ou para descobrir novos utilitários de segurança. Acidentalmente, encontrei alguns produtos baseados num serviço online de scan. De facto intitulam-se (pelo menos por agora) ASP (Application Service Provider). Se for um pouco mais longe rapidamente descobre que o motor por detrás do serviço é o nessus. Até agora tudo bem. Contudo ao tentar encontrar a informação explícita, não consegui ver a palavra "nessus". Foi aqui que fiquei ferido !
Muitas pessoas que trabalham na comunidade de software livre, fazem o seu trabalho de graça e não para viver. O único pagamento que obtêm chama-se : crédito. O nessus é apresentado sobre a GPL. Ou seja, toda a gente pode utilizar o produto, modificá-lo, adaptá-lo... desde que o(s) autor(es) seja(m) mencionado(s). Claro que a licença diz mais que isto. Se não conhece a GPL, dê uma vista de olhos aqui.
Para mim, isto parece-me um roubo. Falo a sério, eu nem sequer preciso de uma licença para dar crédito ao trabalho de outrém. Tenho muito respeito pelas pessoas a trabalharem de graça (na maioria das vezes), partilhando com a comunidade. Merecem o reconhecimento por parte dessa comunidade. Isto aplica-se de um modo especial quando as pessoas tentam fazer dinheiro com o trabalho dos outros. Pode chamar a isto respeito, reconhecimento, não importa o quê. O facto é que estas palavras parecem ter perdido o seu significado. Podemos afirmar com certeza que a GPL é a causa de tal comportamento. Com o ASP não se considere que você esteja a vender software. Segundo o País a GPL pode não ter nenhum valor legal.
A solução podia passar por os utilizadores dos tais ASPs pedirem o nome do motor de scan que faz o verdadeiro trabalho. A resposta dada dirá pelo menos, se as pessoas fornecendo o serviço são "honestas". Se não respondem ou se disserem que inventaram tal motor (o qual identificou como sendo o nessus), simplesmente não o use ! Em vez disso instale o nessus (o verdadeiro) sendo mais seguro de qualquer modo.
Mas novamente, precisamos nós de uma licença para "dizer obrigado" às pessoas que fizeram um grande e excelente trabalho ? E já agora o Renaud Deraison não quer alterar a licença do nessus, o nessus ficará como GPL.
Desculpem-me por esta longa digressão. mas acredito que isto tinha de ser dito.

E é tudo!

À parte da última secção, o que há a reter deste artigo é a alta qualidade do nessus. É um software deveras, impressionante. Utilizado em conjunto com o nmap torna-se obrigatório quando a segurança é uma preocupação. É um utilitário fiável, melhorado cada dia que passa. O meu agradecimento a Renaud e amigos pelas actualizações constantes dos plugins.
Hoje, um administrador de sistema, não pode trabalhar sem o nessus e o nmap. Este utilitários são capazes de encontrar vulnerabilidades que já pensava resolvidas. Isto aplica-se a muitos SO encontrados na sua rede. E quando você sabe que alguns S.O. são como crivos o nessus permite-lhe descontrair um pouco.
Para além disto o nessus pode ajudá-lo a entender o modo como uma rede (ou máquina) pode estar comprometida.
Se ler cuidadosamente os relatórios fornecidos, tome-os em conta e aplique as necessárias correcções, melhorando, assim largamente a segurança da rede (ou máquina). Novamente, eu disse "melhorar" a sua rede não está 100% segura só porque correu o nessus. A entrada para a segurança é um longo caminho a percorrer e nós estamos muito longe do seu fim.
Uma vez mais, obrigado à comunidade de software livre, pelo excelente trabalho que tem feito em relação à segurança.
Respeitante aquelas simpáticas pessoas que tentam ganhar dinheiro com o trabalho de membros da comunidade de software livre, gostava de acrescentar algo. Dizer "obrigado" não é um vergonha. Ser honesto não é assim tão detestável, ou é ? Se este tipo de comportamento se expande, o risco é o fim da comunidade ou uma grande alteração nas licenças (e provavelmente mais e mais patentes !) Em ambos os casos, estará à sua mercê e as coisas serão mais complicadas para si. E infelizmente, não será capaz de utilizar o software livre mais alguma vez. Mas isto não significa que não consiga vender o seu. Pense nisto !
Não estamos a viver num tempo excelente ?