darkstat - Um analisador de tráfego

ArticleCategory: [Choose a category, translators: do not translate this, see list below for available categories]

System Administration

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

[Photo of the Author]

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

original in de Mario M. Knopf

de to en Mario M. Knopf

en to pt Bruno Sousa

AboutTheAuthor:[A small biography about the author]

O Mario gosta de se manter ocupado com o Linux, redes e outros tópicos relacionados com segurança.

Abstract:[Here you write a little summary]

Este artigo apresenta o analisador de tráfego "darkstat" e dá uma perspectiva acerca da instalação e da utilização deste programa.

ArticleIllustration:[One image that will end up at the top of the article]

[Illustration]

ArticleBody:[The main part of the article]

Introdução

O "darkstat" [1] é um programa de monitorização de redes que analisa o tráfego resultante de uma rede e gera com base nestes dados várias estatísticas no formato de HTML. Estas estatísticas podem ser vistas num browser de um modo comfortável. Para este propósito o autor do programa, Emil Mikulic, utilizou o "ntop" [2] durante um longo período de tempo. Mas ele ficou descontente com os seus problemas de estabilidade e má utilização da memória. Por esta razão desenvolveu o "darkstat". As estatísticas apresentadas referem-se à comunicação entre as diferentes máquinas, o tráfego que consequente e o número das portas utilizados, alternativamente os protocolos envolvidos na transmissão. Adicionalmente podem ser vistos gráficos com períodos de tempo e um pequeno resumo dos pacotes analisados desde que o programa foi iniciado.

Instalação

As fontes do programa "darkstat" podem ser obtidas directamente em [3]. Em alternativa os dois mirrors podem ser visitados em [4] e [5]. Se alguém procura por pacotes Debian pode encontrá-los em [6].

O "darkstat" também depende, como muitos outros programas de monitorização, do ficheiro da "libpcap"[7]. Este é uma biblioteca que é usada por sniffers e fornece-lhes uma interface para capturar e analisar os pacotes dos dispositivos de rede. Assim para instalar o "darkstat" precisa desta biblioteca.

Depois tem de o instalar com os três passos bem conhecidos "./configure && make && make install". É importante que a última instrução seja feita com permissões de root.

Inicio

O "darkstat" oferece alguns parâmetros que podem ser definidos no arranque do programa. Contudo para começar um arranque sem nenhuma opção basta. Mas o programa tem de ser iniciado como root ou com privilégios "sudo [8]:

neo5k@proteus> sudo /usr/local/sbin/darkstat

We trust you have received the usual lecture from the local System Administrator.
It usually boils down to these two things:

#1) Respect the privacy of others.
#2) Think before you type.

Password:

Depois do utilizador ter introduzido a sua palavra-passe, o "darkstat" arranca e apresenta várias mensagens de estado:

darkstat v2.6 using libpcap v2.4 (i686-pc-linux-gnu)
Firing up threads...
Sniffing on device eth0, local IP is 192.168.1.1
DNS: Thread is awake.
WWW: Thread is awake and awaiting connections.
WWW: You are using the English language version.
GRAPH: Starting at 8 secs, 51 mins, 22hrs, 30 days.
Can't load db from darkstat.db, starting from scratch.
ACCT: Capturing traffic...
Point your browser at http://localhost:666/ to see the stats.

Visto que o teste ocorreu com sucesso e o output produzido explica-se a si mesmo, podemos dar uma vista de olhos aos possíveis parâmetros de arranque.

Opções de arranque

Como referido anteriormente o "darkstat" fornece várias opções, algumas das quais podem ser dadas durante o arranque. Os tais parâmetros são:

Com a opção "-i" pode especificar qual a interface a ser monitorizada.

darkstat -i eth1

Iniciado sem nenhum parâmetro especial o "darkstat" abre a porta priveligiada 666. Pode prevenir-se deste hábito, quando o arranca com o parâmetro "-p":

darkstat -p 8080

No sentido de registar num determinado porto e numa determinada interface, pode usar a opção -b. Neste exemplo, o registo é feito no endereço de loopback:

darkstat -b 127.0.0.1

A resolução de DNS persistente pode ser prevenida com o parâmetro "-n". Isto pode ser bom para as pessoas sem uma linha dedidada ou alguma largura de banda.

darkstat -n

Use a opção "-P" para prevenir que o "darkstat" ponha a interface no "modo promíscuo". Contudo isto não é recomendável visto que assim o "darkstat" só captura e analisa pacotes que são destinada ao MAC da interface de rede da estação monitorizada e todos os outros pacotes são rejeitados.

darkstat -P

O parâmetro "-l" activa o comportamento correcto "SNAT" na rede local. O "SNAT" significa "Source Network Address Translation" e quer dizer que o seu router (encaminhador) mascára os endereços locais IP do cliente com o seu próprio endereço público. Depois envia o pedido original do cliente.

darkstat -l 192.168.1.0/255.255.255.0

Com o parâmetro "-e" pode fazer filtragem de pacotes.

darkstat -e "port not 22"

A partir da versão 2.5 pode separar o "darkstat" do terminal de arranque. Assim trabalha como um demónio.

darkstat --detach

Através do parâmetro "-d" pode especificar o directório onde o "darkstat" cria a sua base de dados.

darkstat -d /directory

A opção "-v" activa o "modo verboso":

darkstat -v

Se estiver interessado na versão do "darkstat" ou na sua utilização mais completa e sintaxe, pode experimentar o parâmetro "-h".

darkstat -h

Utilização

Depois do arranque do "darkstat" pode apontar o seu browser para "http://localhost:666/", o que é o comportamento por omissão. Agora pode dar uma vista de olhos pelas estatísticas resumidas e por alguns gráficos gerados desde que o programa arrancou:

darkstat main
Ilustração 1: darkstat main

Na parte dos "hosts" pode ver todas as máquinas que tomam partido na comunicação. Tal pode suceder-se dado o tráfego causado ou pelo endereço IP. Através desta possibilidade é possível detectar as máquinas que mais tráfego produziram na rede local, de um modo rápido. Assim um adaministrador de sistema tem possibilidade de obter a razão de algum problema. Por exemplo no próximo ecrã tal corresponderia ao cliente com o endereço local "192.168.1.203".

darkstat hosts
Ilustração 2: darkstat hosts

Na Ilustração 3 pode ver os números dos portos que são usados pelas aplicações clientes e servidoras. Pode reconhecer imediatamente o número das portas usados pelos seguintes demónios: 21 (FTP), 22 (SSH), 139 (Samba), 631 (CUPS), 666 (darkstat), 3128 (Squid). Contudo, os dois serviços "dhcpd" e o "dnsmasq" não são visíveis, porque estes serviços comunicam via "UDP". Todos os outros portos superiores a 1024 são não priveligiados e foram usados pelas aplicações clientes para a comunicação. O servidor proxy "squid" representa a excepção, porque usa o porto 3128 por omissão. Pode ver uma lista de todos os portos atrivuídos na IANA [9], a qual é responsável por eles. Em alternativa pode dar uma vista de olhos no ficheiro "/etc/services".

darkstat ports
Ilustração 3: darkstat ports

Na figura seguinte podem ver os protocolos "ICMP", "TCP" e "UDP" envolvidos na transmissão de ficheiros. Se alguém estiver interessado nestes protocolos, encontrará boas instruções nos seguintes RFCs [10], [11] e [12].

darkstat protocols
Ilustração 4: darkstat protocols

O último ecrã mostra um resumo dos tempos de recolha comos gráficos:

darkstat graphs
Ilustração 5: darkstat graphs

Aspectos Futuros

A versão 2.6 do "darkstat" que disctutimos aqui, infelizmente é dependente dos "pthreads". O que causa problemas noutras plataformas (exemplo: NetBSD). Por esta razão o autor do programa Emil Mikulic decidiu não desenvolver mais a versão actual e começou a trabalhar na versão 3.x.

Na nova versão estão a ser implementadas coisas como a captura simultânea em várias interfaces, um ficheiro de configuração, um output melhorado para os diagramas (algo comparativo ao RDDtool [13]), um ficheiro personalizado CSS, um login para o administrador e a edição da base de dados através da interface web.

Conclusão

O "darkstat" é muito estável e é um utilitário de monitorização de rede bastante rápido servindo exclusivamente o propósito para que foi desenhado - analisar tráfego. Para além disto, trabalha sem problemas e encontra-se em constante desenvolvimento e terá muitas novas e interessantes características na nova versão. Despeço-me desejando sucesso na pesquisa dos "pecadores de tráfego" na sua rede local.

Links

[1] http://purl.org/net/darkstat [Página oficial do darkstat]
[2] http://www.ntop.org/ [Página oficial do ntop]
[3] http://dmr.ath.cx/net/darkstat/darkstat-2.6.tar.gz [Download]
[4] http://yallara.cs.rmit.edu.au/~emikulic/_/darkstat-2.6.tar.gz [Download Mirror #1]
[5] http://neo5k.de/downloads/files/darkstat-2.6.tar.gz [Download Mirror #2]
[6] http://ftp.debian.org/debian/pool/main/d/darkstat/ [Debian Packages]
[7] http://www.tcpdump.org/ [Página oficial da libpcap]
[8] http://www.courtesan.com/sudo/ [Página oficial do sudo]
[9] http://www.iana.org/assignments/port-numbers [IANA Números dos portos]
[10] ftp://ftp.rfc-editor.org/in-notes/rfc792.txt [RFC 792 - ICMP]
[11] ftp://ftp.rfc-editor.org/in-notes/rfc793.txt [RFC 793 - TCP]
[12] ftp://ftp.rfc-editor.org/in-notes/rfc768.txt [RFC 768 - UDP]
[13] http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/ [Página oficial do RRDtool]