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
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
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
Não esta deletadno as pastas mais antigas
ResponderExcluir