jump to navigation

IDS con Snort sobre CentOS 5 27 octubre, 2009

Posted by Fredy Ruiz Ondre in IDS.
15 comments

Un IDS es un sistema de deteccion de intrusos, es decir este sistema analiza todo el trafico y las compara contra una base de datos (firmas de ataques ya conocidos) y si coinciden el sisetma muestra como una alerta, estas alertas pueden ser monitoreada desde una interfaz web, tambien se puede configurar para que envie un correo a una cuenta predefinida

Instalamos los paquetes necesarios

# yum -y install mysql mysql-bench mysql-server mysql-devel  php-mysql httpd gcc pcre-devel php-gd gd mod_ssl glib2-devel gcc-c++ bison flex php-pear

Iniciamos los servicios de la base de datos y del apache

# /etc/init.d/httpd start
# /etc/init.d/mysqld start
# chkconfig mysqld on
# chkconfig httpd on

Crearemos nuestro directorio donde pondremos todos los pquetes que vayamos a utilizar

# mkdir /opt/ids
# cd /opt/ids
# wget http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz
# tar xfz libpcap-1.0.0.tar.gz
# cd libpcap-1.0.0
# ./configure
# make
# make install
# cd ..
# wget http://dl.snort.org/snort-current/snort-2.8.5.1.tar.gz
# tar xzf snort-2.8.5.1.tar.gz
# cd snort-2.8.5.1
# ./configure –with-mysql –enable-dynamicplugin
# make
# make install
Una ves instalado seguimos con los siguientes pasos

# groupadd snort
# useradd -g snort snort -s /sbin/nologin
# mkdir /etc/snort
# mkdir /etc/snort/rules
# mkdir /var/log/snort
# cp /opt/ids/snort-2.8.5.1/etc/* /etc/snort/.

Ahora vamos a descargas las reglas

Para descargas las reglas necesitamos tener nuestra cuenta en http://www.snort.org, una ves hecho esto nos logeamos
y nos bajamos las reglas, luego la pasamos a nuestro servidor, en mi caso las baje en /root de mi pc local

Ahora mediante scp lo paso al servidor

# scp snortrules-snapshot-CURRENT.tar.gz 172.16.0.1:/opt/ids/

Listo ahora nuevamente en el servidor, nos ubicamos en /opt/ids

# cd /opt/ids/
# tar xfz snortrules-snapshot-CURRENT.tar.gz
# cp rules/* /etc/snort/rules/

Ahora vamos a configurar nuestro snort

# cd /etc/snort/

En el archivo snort.conf modificamos algunos parametros, tales como poner nuestra red interna, en mi caso 172.16.0.0/24
ademas de ello modifcamos la ruta donde se encuentran las reglas

# vim snort.conf

var HOME_NET 172.16.0.0/24
var EXTERNAL_NET !$HOME_NET

var RULE_PATH /etc/snort/rules

Configuremos nuestra base de datos mysql para registrar todos los eventos del snort

# mysqladmin -u root password ‘supercontraseña’
# mysqladmin create snort -p
Enter password:
# cd /opt/ids/snort-2.8.5.1
# mysql -p snort < schemas/create_mysql
Enter password:
# mysql -p
Enter password:
mysql> grant all privileges on snort.* to snort@localhost identified by ‘contraseña’;

Ahora vamos a hacer que el snort registre todo en la base de datos mysql, para ello nuevamente editamos el snort.conf
descomentamos la linea de output database para que quede de la siguiente manera

# vim snort.conf

output database: log, mysql, user=snort password=contraseña dbname=snort sensor_name=LAN host=localhost

Hecho esto, vamos a configurar la interfaz web para monitorear el IDS

Nos ubicamos nuevamente en /opt/ids/

# cd /opt/ids/
# pear install –alldeps Image_Graph-alpha Image_Canvas-alpha Image_Color Numbers_Roman
# wget http://downloads.sourceforge.net/project/adodb/adodb-php5-only/adodb-509a-for-php5/adodb509a.tgz
# wget http://downloads.sourceforge.net/project/secureideas/BASE/base-1.4.4/base-1.4.4.tar.gz
# cd /var/www/
# tar xfz /opt/ids/adodb509a.tgz
# mv adodb5 adodb
# cd html/
# tar xfz /opt/ids/base-1.4.4.tar.gz
# mv base-1.4.4 base
# cd base/
# cp base_conf.php.dist base_conf.php
# vim base_conf.php

$BASE_urlpath = ‘/base’;

$DBlib_path = ‘/var/www/adodb/ ‘;

$DBtype = ‘mysql’;
$alert_dbname   = ‘snort’;
$alert_host     = ‘localhost’;
$alert_port     = ”;
$alert_user     = ‘snort’;
$alert_password = ‘contraseña’;

Ahora accedemos via web

http://172.16.0.1/base

le damos clic en Setup page, luego en create BASE AG finalmente en Man page

En caso quieres ver los graficos en “Graph alert data” y te sale el siguiente
error

Error loading the Graphing library:
Check your Pear::Image_Graph installation!

Entonces debes instalar de la siguiente manera

# pear install -f Image_Graph
# pear install -f Image_Canvas

Finalmente iniciamos el servicio de snort, yo suelo ejecutarlo de la siguiente manera:

# snort -D -c /etc/snort/snort.conf -i eth1

Donde:

  • eth1 es mi interfaz interna de mi servidor

Ahora finalizando la configuracion instalaremos oinkmaster para que las reglas se actuzalicen de manera automatica

# chown snort.snort /etc/snort/ -R
# cd /opt/ids
# wget http://prdownloads.sourceforge.net/oinkmaster/oinkmaster-2.0.tar.gz
# tar xzf oinkmaster-2.0.tar.gz
# cd oinkmaster-2.0
# cp oinkmaster.pl /usr/bin/
# cp contrib/makesidex.pl /usr/bin/
# cp oinkmaster.conf /etc/

Nos logeamos a http://www.snort.org y generamos nuestro codigo oinkmaster

# vim /etc/oinkmaster.conf

url = http://www.snort.org/pub-bin/oinkmaster.cgi/<oinkcode>/snortrules-snapshot-CURRENT.tar.gz

En lugar del <oinkcode> ponemos el codigo que generamos en la web de http://www.snort.org

Nos ubicamos en /etc y hacemos lo siguiente

# cd /etc/
# makesidex.pl /etc/snort/rules > autodisable.conf

Ahora ponemos en el cron lo siguiente, de esta manera se actualizara todos los
dias a las 23:59 horas

# crontab -u snort -e

59 23 * * * oinkmaster.pl -C /etc/oinkmaster.conf -C /etc/autodisable.conf -o /etc/snort/rules

Realizar backup con rsync 18 octubre, 2009

Posted by Fredy Ruiz Ondre in Utilitarios.
add a comment

Una de las herramientas usadas para realizar copias de seguridad es el rsync, la copia de seguridad se pueden hacer en la misma maquina o en maquinas remotas.

Para poder realizar backup en una maquina remota antes debemos configurar el SSH para poder acceder a la otra maquina sin necesidad de ingresar contraseña, para ello seguimos estos pasos.

Luego de esto instalamos la herramienta

En CentOS

#yum install rsync

En debian

# apt-get install rsync

Una ves que tengamos la herramienta instalada crearemos un script que nos permita realizar las copias de seguridad.

Datos:

  • Maquina local: 192.168.1.2
  • Maquina remota: 192.168.1.3
  • Informacion a realizar copias de seguridad: /data/

Syntaxis:

rsync [opciones] [origen] [destino]

Opciones:

  • -e ssh : pasamos la informacion mediante SSH
  • -a : mantiene los permisos
  • -v : modo verbose
  • -z : comprime los datos

#rsync -e ssh -avz /data/ 192.168.1.3:/data/

Si usamos un puerto diferente para el SSH 3434 para el ejemplo, entonces debemos especificar el puerto de la siguiente manera.

#rsync -e ‘ssh -P3434’ -avz /data/ 192.168.1.3:/backup/

En este caso estamos guardando la informacion de /data/ en el directorio /backup/  en la maquina remota 192.168.1.3

Esto se puede programar para ello usamos el cron, digamos que queremos que se haga cada 5 minutos, solo por poner de ejemplo

# crontab -e

*/5 * * * * rsync -e ‘ssh -P3434’ -avz /data/ 192.168.1.3:/backup/

Mayor informacion

http://www.samba.org/ftp/rsync/rsync.html

http://www.mikerubel.org/computers/rsync_snapshots/

http://www.vicente-navarro.com/blog/2008/01/13/backups-con-rsync/

DNS Cache Server sobre CentOS 5 17 octubre, 2009

Posted by Fredy Ruiz Ondre in DNS.
add a comment

El servicio de DNS nos permite resolver nombre en direcciones IP’s, a continuacion vamos a configurar un DNS Cache Server, con Bind sobre CentOS 5, este va a guardar las resoluciones de los DNS’s de nuestro proveedor, esto nos permitira disminuir el tiempo de respuesta a las consultas de nuestras maquinas locales.

Instalamos las herramientas necesarias.

#yum -y install bind-chroot caching-nameserver

Luego de instalar los repositorios necesarios nos dirigimos al directorio de configuracion /var/named/chroot/etc/ donde editaremos el archivo named.conf, inicialmente no este archivo no estara.

#cd /var/named/chroot/etc/

#cp named.caching-nameserver.conf named.conf

Luego de agregar algunos parametros el archivo debe quedar de la siguiente manera:

options {
listen-on port 53 { 127.0.0.1; 192.168.1.0/24;};
listen-on-v6 port 53 { ::1; };
directory       “/var/named”;
dump-file       “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
memstatistics-file “/var/named/data/named_mem_stats.txt”;

allow-query     { localhost; 192.168.1.0/24;};
forwarders      { 200.48.225.130; 200.48.225.146;};
forward only;
};
logging {
channel default_debug {
file “data/named.run”;
severity dynamic;
};
};
view localhost_resolver {
match-clients      { localhost; 192.168.1.0/24; };
match-destinations { localhost; 192.168.1.0/24; };
recursion yes;
include “/etc/named.rfc1912.zones”;
};

Donde:

  • 192.168.1.0/24 es mi red local
  • 200.48.225.130 y 200.48.225.146 son los ips de mi proveedor

Ahora chekearemos nuestra named.conf

#named-checkconf named.conf

Ingresamos al archivo resolv.conf

# vim /etc/resolv.conf

nameserver 127.0.0.1

Ahora iniciamos el servicio y ya tenemos nuestro DNS Cache Server