Blackhold

Cacti + nfsen + pmacct

Posted on desembre 17th, 2014 by admin

Cacti es un programa que nos permite ver gráficamente lo que ocurre a nuestras maquinas y a nuestras redes, así que aquí tenemos un completo manual para tener un magnífico sistema de monitorización con software libre realmente muy completito!

Instalación de cacti

Instalamos algunas dependencias

# apt-get install dbconfig-common javascript-common libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl libjs-jquery libjs-jquery-cookie libphp-adodb mysql-client-5.5 mysql-server mysql-server-5.5 mysql-server-core-5.5 wwwconfig-common php5-cli php5-mysql php5-snmp snmp snmpd rrdtool libmysqlclient-dev libsnmp-dev libpcap-dev apache2 libapache2-mod-php5 php5

Nos descargamos la última versión de cacti y la descomprimimos

# cd /usr/src/
# wget http://www.cacti.net/downloads/cacti-0.8.8c.tar.gz
# tar xzvf cacti-0.8.8c.tar.gz 

Creamos la base de datos y el usuario para cacti

# mysql -uroot -p
mysql> create database cacti;
mysql> grant all privileges on *.* to 'cacti'@'%' identified by 'password' with grant option;
mysql> exit

Importamos la estructura de tablas y registros que viene con cacti

# cd cacti-0.8.8c
# mysql -u cacti -p cacti < cacti.sql

Movemos los ficheros de cacti a /var/www

# cd /var/www/
# mkdir cacti
# cd cacti
# mv /usr/src/cacti-0.8.8c/* .
# chown -R www-data:www-data /var/www/cacti

Modificamos el fichero de configuración de cacti y le indicamos la configuración de la base de datos

# cd /var/www/cacti/include
# vi config.php
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "password";
$database_port = "3306";
$database_ssl = false;

Vamos al navegador e introducimos http://ipdelservidor/cacti y seguimos las instrucciones.

Al finalizar entramos con admin/admin y nos pide cambiar el password.

Ahora cacti ya está instalado, pero vamos a añadirle algunas cosillas mas.

Cacti spine
Cacti spine es otro motor para generar las gráficas de cacti, por defecto trae uno, pero este permite generar las gráficas de forma más rápida.

Lo descargamos e instalamos

# cd /usr/src
# wget -c http://www.cacti.net/downloads/spine/cacti-spine-0.8.8c.tar.gz
# tar xvzf cacti-spine-0.8.8c.tar.gz
# cd cacti-spine
# ./configure
# make && make install

Generamos el fichero de configuración

# cd /usr/local/spine/etc/
# cp spine.conf.dist spine.conf
# vi spine.conf
DB_Host         localhost
DB_Database     cacti
DB_User         cacti
DB_Pass         password
DB_Port         3306
DB_PreG         0

Entramos en la web de cacti y configuramos spine:

Settings > Paths > Spine Poller File Path: /usr/local/spine/bin/spine

Pulsamos a Save y si todo es correcto nos dirá que ha encontrado el fichero.

Finalmente añadimos esto en el cron

# vi /etc/crontab
# cacti
*/1 * * * * www-data php5 /var/www/cacti/poller.php > /dev/null 2>&1

Instalación de netflow (nfdump y nfsen)
Netflow, es un protocolo creado por cisco y usado por varios fabricantes, para exportar fuera del router / firewall, el detalle del tráfico…. de esta manera, tendremos un histórico para hacer accounting, ver ataques y en definitiva, para tener controlado todo un poco en nuestros routers.

Existen herramientas de pago fantásticas, tipo Netflow Analyzer, pero su precio, hace que nos lo pensemos bien si lo queremos tener en casa, para jugar o una pequeña empresa, así que, la alternativa libre, pasa por usar nfsen (frontend) y nfdump.

Instalamos algunas dependencias

# apt-get install gcc make flex librrd-dev mtr htop autoconf bison libmailtools-perl rrdtool librrds-perl rrdtool libio-socket-ssl-perl
# perl -MCPAN -e 'install Socket6'

Descargamos el programa, lo compilamos y lo instalamos

# cd /usr/src
# wget http://downloads.sourceforge.net/project/nfdump/stable/nfdump-1.6.13/nfdump-1.6.13.tar.gz
# tar xvzf nfdump-1.6.13.tar.gz
# cd nfdump-1.6.13
# ./configure --prefix=/ --enable-nfprofile
# make && make install

Ahora vamos a por nfsen

# cd /usr/src
# wget -c http://downloads.sourceforge.net/project/nfsen/stable/nfsen-1.3.6p1/nfsen-1.3.6p1.tar.gz
# tar xvzf nfsen-1.3.6p1.tar.gz

Lo guardamos en /etc

# mkdir /etc/nfsen
# cd nfsen-1.3.6p1/etc
# cp nfsen-dist.conf /etc/nfsen/nfsen.conf
# mkdir -p /data/nfsen
# useradd -G www-data netflow --system

Modificamos el fichero de configuración para indicarle cual es el usuario y grupo de apache

# vi /etc/nfsen/nfsen.conf
$WWWUSER  = "www-data";
$WWWGROUP = "www-data";
# nfdump tools path
$PREFIX  = '/bin';

Si queremos, añadimos un router que nos esté mandando sus flows.

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

E iniciamos la instalación

# ./install.pl /etc/nfsen/nfsen.conf

Añadimos nfsen para que se arranque al inicio y lo iniciamos

# ln -s /data/nfsen/bin/nfsen /etc/init.d/nfsen
# update-rc.d nfsen defaults 20
# service nfsen start

Instalación de pmacct
Ahora vamos a añadir una capa más, pmacct.

Pmacct será el enlace entre cacti y los flows de los dispositivos. Usaremos nfsen para controlar tráfico y ataques.

Descargamos y descomprimimos pmacct:

# cd /usr/src
# wget -c http://www.pmacct.net/pmacct-1.5.0.tar.gz
# tar xvzf pmacct-1.5.0.tar.gz

Creamos el directorio de instalación

# mkdir /etc/pmacct

Y lo instalamos

# cd pmacct-1.5.0
# ./configure --prefix=/etc/pmacct && make && make install

Una vez instalado, vamos a configurar lo que nos interesa de pmacct, que más tarde, enlazaremos con cacti.

# vi /etc/pmacct/pmacct.conf
debug: true
daemonize: true
nfacctd_port: 9996
pidfile: /var/run/nfacctd.pid
plugin_buffer_size: 80524
plugin_pipe_size: 18052324
networks_file: /etc/pmacct/nfacctd.hosts

plugins: memory[in], memory[out]
aggregate[in]: dst_host
aggregate[out]: src_host
imt_path[in]: /tmp/in.pipe
imt_path[out]: /tmp/out.pipe

En el fichero nfacctd.hosts, añadimos las IPs / rangos que nos interese tener en detalle.

# vi /etc/pmacct/nfacctd.hosts
10.90.226.32/28
10.90.226.64/27
10.139.39.66/32

Ahora arrancamos pmacct

# cd /etc/pmacct/sbin
# ./nfacctd -D -f /etc/pmacct/pmacct.conf

Para comprobar que funciona

# netstat -lanp |grep 9996
udp        0      0 0.0.0.0:9996            0.0.0.0:*                           15203/nfacctd: Core

Y que recogemos los flows

# cd /etc/pmacct/bin
# ./pmacct -s -p /tmp/out.pipe
SRC_IP           PACKETS               BYTES

For a total of: 0 entries
# ./pmacct -s -p /tmp/in.pipe
DST_IP           PACKETS               BYTES

For a total of: 0 entries

Y ahora comprobamos si hace accounting de las IPs en concreto (se tiene que configurar el router para que mande las flow a nuestro equipo –mikrotik-):

# ./pmacct -c dst_net -N 10.90.226.33 -p /tmp/in.pipe

https://github.com/PoP-ES/Cacti-Pmacct

Fuente: Instalar cacti + cacti-spine
Fuente: Instalación de netflow
Fuente: Instalación de pmacct

« »

guy fawkes