Páginas

quarta-feira, 21 de novembro de 2012

nfdump nfsen

Prezados boa noite,

hoje irei mostrar como configurar nfdum + nfsen no SO Linux com distribuição Debian. Estas ferramentas são úteis para coletar e analisar dados netflows.

Primeiro iremos mostrar uma topologia e visualizar o benefício de utilizar estas ferramentas.




O objetivo mostrado na figura é o seguinte:

O roteador Borda exportará o tráfego netflow para o servidor que está instalado o nfdump+Nfsen e os dados coletados serão armazenados em disco antes de serem analisados pelo nfdump. Serão gerados arquivos de 5 em 5 minutos.

Com o nfdump nos podemos analisar o tráfego do roteador Borda, pois o mesmo foi armazenado em arquivos. Como exemplo de analise podemos citar: tráfego UDP, TCP, pacotes UDP, pacotes TCP, IP que gerou mais tráfego em determinado momento, etc.

No processo de instalação primeiro temos que baixar o nfdump através do apt-get e configurar o roteador para que seja exportado o tráfego Netflow. Iremos utilizar o roteador da mikrotik para exportar o fluxo de dados.

- Instalar o nfdump;
apt-get install nfdump

- Configurar o roteador para exportar o fluxos de dados;
ip-> Traffic Flows-> General = enable
ip-> Traffic Flows-> General-> Target -> add-> Address = 192.168.0.2, port = 9996

- Vamos instalar o nfsen, pois nele podemos trabalhar com interface gráfica e como consequencia teremos uma melhor visualização dos resultados.

Para instalarmos o nfsen, temos que antes instalar as dependências:
apt-get install apache2
apt-get install php5
apt-get install perl
apt-get install rrdtool
apt-get install build-essential  (compilar o nfsen)
apt-get install librrds-perl

perl -MCPAN -e 'install Mail::Header'
perl -MCPAN -e 'install Mail::Internet'

- Agora iremos acessar o diretório /usr/local/ e baixar o nfsen.
wget http://ufpr.dl.sourceforge.net/project/nfsen/stable/nfsen-1.3.5/nfsen-1.3.5.tar.gz
tar zxvf nfsen-1.3.5.tar.gz

- Iremos criar o diretório /data/nfsen/, pois o mesmo conterá os arquivos do programa após a instalação.

- Acesse o diretório /usr/local/nfsen-1.3.5/etc/  para fazer uma copia do arquivo de configuração.
cp nfsen-dist.conf nfsen.conf

- Agora iremos abrir o arquivo com o objetivo de editar algumas linhas.
vi /usr/local/nfsen-1.3.5/etc/nfsen.conf

$USER    = "www-data";
$WWWUSER  = "www-data";
$WWWGROUP = "www-data";

# A linha abaixo informa que servidor armazenará o fluxo de dados que estiverem na porta 9996, no nosso # exemplo será o router Borda.

%sources = (
    'upstream1'    => { 'port' => '9996', 'col' => '#0000ff', 'type' => 'netflow' },
);

- Vamos agora até o diretório anterior /usr/local/nfsen-1.3.5 e executemos o seguinte comando:
./install.pl etc/nfsen.conf

- Após o comando anterior, será instalado o nfsen e podemos assim acessar via browser.
http://x.y.z.w/nfsen/nfsen.php

- caso não funcione tente utilizar alguns dos comandos abaixo.
root@nfsen:~# /data/nfsen/bin/nfsen reconfig
root@nfsen:~# /data/nfsen/bin/nfsen reload
root@nfsen:~# /data/nfsen/bin/nfsen start
root@nfsen:~# /data/nfsen/bin/nfsen stop


- Agora vamos criar um arquivo para colocarmos na inicialização do sistema.
touch /etc/init.d/monitoramentotrafego.sh
chmod 755 /etc/init.d/monitoramentotrafego.sh (Permissao de execucao)
update-rc.d monitoramentotrafego.sh defaults (Colocar na inicializacao do sistema)

vi /etc/init.d/monitoramentotrafego.sh
#!/bin/bash
/data/nfsen/bin/nfsen start

Neste momento iremos criar outro arquivo para excluir arquivos e diretórios após algum tempo. Isto devido ao tamanho do disco rígido.

cd /etc/cron.daily/
vi monitoramentotrafegoexcluirarquivos.sh
#!/bin/bash
find /data/nfsen/profiles-data/ -mtime +6 -type f | xargs rm -rf
find /data/nfsen/profiles-data/ -empty -exec rmdir {} \;
chmod 755 monitoramentotrafegoexcluirarquivos.sh

Agora vamos adicionar o agendamento:

root@nfsen:~# vi /etc/crontab
25  9   * * *   root    /etc/cron.daily/monitoramentotrafegoexcluirarquivos.sh

Agora Vamos limitar o acesso para visualização.

root@monitoramentotrafego:/etc/apache2# vi sites-available/default

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride AuthConfig
        </Directory>
        <Directory /var/www/>
                Options FollowSymLinks MultiViews
                AllowOverride AuthConfig
                AuthUserFile /etc/apache2/auth/acesso
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

- Retirado o Indexes do Options FollowSymLinks MultiViews
  A opção “Indexes” faz com que quando não tenha nenhum arquivo do tipo index.html, index.htm, ou   “páginas iniciais”, o Apache cria uma página com a lista dos arquivos existentes no diretório

- Trocado o AllowOverride None por AllowOverride AuthConfig
  A opção “AllowOverride AuthConfig” é a que diz para o Apache verificar pelos arquivos .htaccess nos   diretórios e aplicar as regras contidas no arquivo nos diretórios e subdiretórios de onde o arquivo esteja localizado.

- Criamos um arquivos chamado acesso com usuário acessomonitoramento. Segue comando abaixo:
htpasswd -c acesso acessomonitoramento

- Agora iremos restringir o link de acesso para o usuário cadastrado anteriormente.

- Agora que o arquivo de usuários e senhas está criado, vamos criar o .htaccess que irá verificar este arquivo e ficará dentro do diretório /var/www/nfsen/. Veja o exemplo do .htaccess:
touch .htaccess
vi .htaccess

AuthName "Acesso Restrito à Usuário"
AuthType Basic
AuthUserFile /etc/apache2/auth/acesso
require valid-user

Um comentário: