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

terça-feira, 20 de novembro de 2012

Configurar BGP no Mikrotik

Configurar BGP no Sistema Operacional Router OS da Mikrotik

Pessoal, agora irei postar um pouco do meu conhecimento para configurar BGP nos roteadores com Sistema Operacional da Mikrotik. Primeiro iremos montar uma topologia que seja suficiente para aplicarmos alguns comandos utilizados na configuração BGP.



Tendo em vista de somos um Sistema Autônomo e possuímos um bloco de IPs adquirido através do registro.br, podemos publicar este bloco para outras operadoras e como consequência ser "visto" através da internet.

Número de Sistema autônomo (ASN)  privado: 65530;
Irei utilizar como exemplo um bloco de IPs privados. 192.168.0.0/20;

Agora iremos configurar o nosso router com a operadora 1, porém temos que saber o IP fornecido pela operadora para configurarmos em nossa interface, que neste caso será a eth1. O IP fornecido pela operadora 1 foi 10.0.0.2 com mascara 255.255.255.252.

- Configurar IP na interface
ip address add address=10.0.0.2/30 interface=ether1

- Configurar o seu ASN no router
Routing->BGP->Instances-> AS = 65530 (Este é seu ASN);

- Configurar vizinho BGP
Routing->BGP->Peer->Name = Operadora1, Remote Address = 10.0.0.1 (IP do router da Operadora), Remote AS = 65531 (ASN da Operadora 1); OBS. Nesta configuração NÃO deixe ativo pois será necessário aplicar alguns filtros antes.

- Configurar Filtros de SAÍDA
Routing Filter -> ADD->  Matchers-> Chains = Publicar_Operadora1 (Nome do filtro a ser utilizado para a operadora 1), Prefix = 192.168.0.0/20 (Seu prefixo), Prefix Length = 20-24 (Só poderá anunciar prefixos de tamanho 20 até 24);
Agora vamos na mesma regra e colocar a ação.
Routing Filter -> ADD-> Actions -> action = accept;

Agora vamos criar um outro filtro com mesmo nome da anterior, porém agora DESCATANDO tudo.
Routing Filter -> ADD->  Matchers-> Chains = Publicar_Operadora1, Actions->action = discard.

Os filtros são lidos de cima para baixo, e desta maneira que configuramos, só poderá publicar o seu bloco, qualquer outro será descartado.

- Configurar Filtros de ENTRADA
Routing Filter -> ADD->  Matchers-> Chains = Entrada_Operadora1 (Nome do filtro a ser utilizado para a operadora 1), Prefix = 192.168.0.0/20 (Seu prefixo);
Agora vamos na mesma regra e colocar a ação.
Routing Filter -> ADD-> Actions -> action = discard;


Agora vamos criar um outro filtro com mesmo nome da anterior, porém agora ACEITANDO tudo.
Routing Filter -> ADD->  Matchers-> Chains = Publicar_Operadora1, Actions->action = accept.

Como dito anteriormente, os filtros são lidos de cima para baixo, e desta maneira que configuramos o filtro de entrada, só será descartado o seu bloco, qualquer outro será aceito.

Depois de termos configurado os filtros BGP, está na hora de aplicar os mesmos na configuração dos vizinhos BGP (tendo em vista que já começamos a configurar os vizinhos BGP, agora vamos editar).

Routing->BGP->Peer-> In Filter = Entrada_Operadora1, Out Filter = Publicar_Operadora1.

Agora sim podemos habilitar Routing->BGP->Peer->Name = Operadora1 (enable);

Quando habilitado, voce comecará a receber os prefixos da operadora, porém ainda não está anunciando o seu.

- Anunciar o seu Bloco
Routing->BGP->Networks-> add -> 192.168.0.0/20;

Pessoal, agora fica com vocês a configuração da outra sessão BGP com a operadora 2 e . Caso tenham alguma dificuldade estarei a disposição para auxiliar, isto caso eu saiba.