miércoles, 16 de marzo de 2011

Pulledpork en Debian Wheezy



Vamos a configurar el pulledpork en el Snort

Descargamos
# wget http://pulledpork.googlecode.com/files/pulledpork-0.5.0.tar.gz
# tar -zxf pulledpork-0.5.0.tar.gz && cd pulledpork-0.5.0
# cp pulledpork.pl /usr/sbin && cp etc/*.conf /etc/snort

Vamos a bajar las reglas del snort para ello necesitamos el oinkcode
https://www.snort.org/account/oinkcode

Ahora procedemos a modificar el archivo pulledpork.conf

# nano /etc/snort/pulledpork.conf

Comentamos lo referente a emergingthreats
Modificamos la ruta:
rule_url=http://www.snort.org/reg-rules/|snortrules-snapshot-2900.tar.gz|oinkcode
Cambiamos:
rule_path=/etc/snort/rules/snort.rules
rule_path=/etc/snort/rules/local.rules
sid_msg=/etc/snort/sid-msg.map
config_path=/etc/snort/snort.conf
distro=Debian-Lenny
snort_version=2.9.0.4
/etc/snort/enablesid.conf
/etc/snort/disablesid.conf
/etc/snort/modifysid.conf
Y comentamos
#sostub_path=/usr/local/etc/snort/rules/so_rules.rules


Deshabilita las reglas de bloqueo (fwsam)
# echo pcre:fwsam /etc/snort/disablesid.conf

Modificamos
# nano /etc/snort/modifysid.conf

La ultima linea cambiarlo a (hay un error de tipeo):
302,429,1821 "$EXTERNAL_NET" "$HOME_NET"

# pulledpork.pl -c /etc/snort/pulledpork.conf



Al final tenemos el mensaje de Fly piggy Fly !!!



Reiniciamos el servicio

# /etc/init.d/snortbarn restart

Snort is on Fire !!!



Fuente:

https://www.snort.org/docs

Snort 2.9.0.4 en Debian Wheezy con Barnyard2



Vamos con la instalacion de un IDS famoso "Snort", con barnyard en base de datos mysql.

Actualizamos
# aptitude update
# aptitude upgrade

Instalamos las dependecias

# aptitude install apache2 libapache2-mod-php5 libwww-perl mysql-server mysql-common mysql-client php5-mysql libnet1 libnet1-dev libpcre3 libpcre3-dev autoconf libcrypt-ssleay-perl libmysqlclient-dev php5-gd php-pear libphp-adodb php5-cli libtool libssl-dev gcc-4.4 g++ automake gcc make flex bison apache2-doc ca-certificates vim

Instalamos los prerequisitos

libpcap, libdnet, and DAQ.

Install libpcap:
# cd /usr/src
# wget http://www.tcpdump.org/release/libpcap-1.1.1.tar.gz
# tar -zxf libpcap-1.1.1.tar.gz && cd libpcap-1.1.1
# ./configure --prefix=/usr --enable-shared
# make && make install

Install libdnet:
# cd /usr/src
# wget http://libdnet.googlecode.com/files/libdnet-1.12.tgz
# tar -zxf libdnet-1.12.tgz && cd libdnet-1.12
# ./configure --prefix=/usr --enable-shared
# make && make install

Install DAQ:

# cd /usr/src
# wget http://www.snort.org/dl/snort-current/daq-0.5.tar.gz
# tar -zxf daq-0.5.tar.gz && cd daq-0.5

DAQ necesita ser parchado para reconocer el parametro "buffer_size".

# vi /usr/src/daq-0.5/os-daq-modules/daq_pcap.c
En la linea line 219 reemplazar:

context->buffer_size = strtol(entry->key, NULL, 10);
con:
context->buffer_size = strtol(entry->value, NULL, 10);

# ./configure
# make && make install

Actualizamos la ruta del "shared library"
# echo >> /etc/ld.so.conf /usr/lib && ldconfig

Bajamos e instalamos el snort
# wget http://www.snort.org/dl/snort-current/snort-2.9.0.4.tar.gz -O snort-2.9.0.4.tar.gz
# tar -zxf snort-2.9.0.4.tar.gz && cd snort-2.9.0.4
# ./configure --with-mysql --enable-dynamicplugin --enable-perfprofiling --enable-ipv6 --enable-zlib --enable-reload
# make && make install

Creamos las carpetas
# mkdir /etc/snort /etc/snort/rules /var/log/snort /var/log/barnyard2 /usr/local/lib/snort_dynamicrules

Buscamos la regla para usuarios registrados
https://www.snort.org/snort-rules/?#rules

Descomprimimos las reglas en el directorio de snort
# tar xvfz snortrules-snapshot-2903.tar.gz -C /etc/snort

agregamos el usuario y grupo snort, configuramos permisos y copiamos archivos
# groupadd snort && useradd -g snort snort
# chown snort:snort /var/log/snort /var/log/barnyard2
# cp /usr/src/snort-2.9.0.4/etc/*.conf* /etc/snort
# cp /usr/src/snort-2.9.0.4/etc/*.map /etc/snort

Nota: No encontre con el snort el archivo "sid-msg.map" para configurar el barnyard2 por lo que me baje el archivo de
wget http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
Luego fui a la carpeta rules y copie el archivo.
cp sid-msg.map /etc/snort/

Creamos un acceso directo del snort
#ln -s /usr/local/bin/snort /usr/sbin/snort

Configuracion del archivo snort.conf

# nano /etc/snort/snort.conf

Buscamos “RULE_PATH ../rules” y lo reemplazamos por:
var RULE_PATH /etc/snort/rules
Seguimos buscamos por “PREPROC_RULE_PATH ../preproc_rules”, y reemplazar por:
PREPROC_RULE_PATH /etc/snort/preproc_rules

Como vamos a usar el barnyard2 adicionamos en el archivo
output unified2: filename snort.log, limit 128

Buscamos:
# include $PREPROC_RULE_PATH/preprocessor.rules
# include $PREPROC_RULE_PATH/decoder.rules
Y lo descomentamos

Buscamos y lo comentamos quedando
#preprocessor normalize_ip4
#preprocessor normalize_tcp: ips ecn stream
#preprocessor normalize_icmp4
#preprocessor normalize_ip6
#preprocessor normalize_icmp6

Coonfiguramos el MySQL

# mysql -u root -p #Pones el password
mysql> create database snort;
mysql> create user 'snortuser'@'localhost' IDENTIFIED BY 'pass';
mysql> grant all privileges on snort.* to 'snortuser'@'localhost' with grant option;
mysql> flush privileges;
mysql> exit;

Ahora vamos a importar el esquema de la base de datos:
Vamos a la carpeta schema del directorio donde descomprimimos el snort
# cd schemas/
# mysql -p -u snortuser snort < create_mysql
Enter password:

# mysql -u root -p
Enter password:

mysql> use snort;
mysql> show tables; # deberiamos ver las tablas que importamos.
mysql> exit;

Instalacion y configuracion del barnyard2

# cd /usr/src
# wget http://www.securixlive.com/download/barnyard2/barnyard2-1.9.tar.gz
# tar -zxf barnyard2-1.9.tar.gz && cd barnyard2-1.9
# ./configure --with-mysql
# make && make install
# mv /usr/local/etc/barnyard2.conf /etc/snort
# nano /etc/snort/barnyard2.conf
Buscamos la linea #215 y lo cambiamos por: output alert_fast
Al final del archivo agregamos la conexion al mysql
output database: log, mysql, user=snortuser password=pass dbname=snort host=localhost

La prueba de fuego

Ejecutamos el snort
# /usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0

Ejecutamos el barnard2
# /usr/local/bin/barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /etc/snort/bylog.waldo -G /etc/snort/gen-msg.map -S /etc/snort/sid-msg.map -C /etc/snort/classification.config

Si todo sale bien con el barnyard tendran una imagen similar a esta:



Vemos que los datos estan siendo insertados en la base de datos

# mysql -u root -p -D snort -e "select count(*) from event"

Script de inicio de snort y barnayard2

# nano /etc/init.d/snortbarn
y copiamos el contenido

--------------------------------------------------------------------------------------
#! /bin/sh
#
### BEGIN INIT INFO
# Provides: snortbarn
# Required-Start: $remote_fs $syslog mysql
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# Short-Description: Start Snort and Barnyard
### END INIT INFO
. /lib/init/vars.sh
. /lib/lsb/init-functions
mysqld_get_param() {
/usr/sbin/mysqld --print-defaults \
| tr " " "\n" \
| grep -- "--$1" \
| tail -n 1 \
| cut -d= -f2
}
do_start()
{
log_daemon_msg "Starting Snort and Barnyard" ""
# Make sure mysql has finished starting
ps_alive=0
while [ $ps_alive -lt 1 ];
do
pidfile=`mysqld_get_param pid-file`
if [ -f "$pidfile" ] && ps `cat $pidfile` >/dev/null 2>&1; then ps_alive=1; fi
sleep 1
done
/sbin/ifconfig eth1 up
/usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth1 &
/usr/local/bin/barnyard2 -q -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /etc/snort/bylog.waldo \
-G /etc/snort/gen-msg.map -S /etc/snort/sid-msg.map -C /etc/snort/classification.config 2> /dev/nul &
log_end_msg 0
return 0
}
do_stop()
{
log_daemon_msg "Stopping Snort and Barnyard" ""
kill $(pidof snort) 2> /dev/nul
kill $(pidof barnyard2) 2> /dev/nul
log_end_msg 0
return 0
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
restart)
do_stop
do_start
;;
*)
echo "Usage: snort-barn {start|stop|restart}" >&2
exit 3
;;
esac
exit 0
--------------------------------------------------------------------------------------

Lo hacemos ejecutable
# chmod +x /etc/init.d/snortbarn
# insserv -f -v snortbarn

Snort y Barnyard2 empezara autmaticamente al bootear

Nota: para hacerlo funcionar con el snorby, bastaria obviar la creacion de bd hecho en este jautu, porque con el snorby tambien lo creas.

Los datos de usuario y base de datos lo sacamos del archivo barnyard2.conf esos datos deben coincidir con los datos del archivo de snorby database.yml

Una vez echo eso e iniciar el worker, veras los datos procesados en el snorby



Fuente:

http://www.snort.org/docs

Snorby 2.2.5 en Debian Wheezy



Snorby es un frontend para IDS como es el snort, mas info en su pagina oficial

A continuacion los pasos para tener configurado el snorby, luego en otro post lo uniremos con el snort.

Primero actualizar el sistema
# aptitude update
# aptitude upgrade

Luego instalamos las paquetes necesarios
aptitude install gcc g++ build-essential libssl-dev libreadline5-dev zlib1g-dev linux-headers-generic libsqlite3-dev libxslt-dev libxml2-dev imagemagick git-core libmysqlclient-dev mysql-server libmagickwand-dev default-jre

Bajamos el wkhtmltopdf

# wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.10.0_rc2-static-i386.tar.bz2
# tar xvjf wkhtmltopdf-0.10.0_rc2-static-i386.tar.bz2
# cp wkhtmltopdf-i386 /usr/sbin/wkhtmltopdf

Bajamos el ruby

# wget http://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p0.tar.gz
# tar -xvzf ruby-1.9.2-p0.tar.gz
# cd ruby-1.9.2-p0
# ./configure
# make && make install

Vemos la version:
# ruby -v
ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux]

Instalamos los gems

# gem install thor i18n bundler
# gem install tzinfo builder memcache-client rack rack-test erubis mail text-format
# gem install rack-mount --version=0.4.0
# gem install rails sqlite3-ruby

Instalando Snorby

git clone http://github.com/Snorby/snorby.git /var/www/snorby

Editamos los archivos de configuracion
# nano /var/www/snorby/config/database.yml
snorby: &snorby
adapter: mysql
username: root
password: poner el pass de root
host: localhost


Editamos
# nano /var/www/snorby/config/snorby_config.yml
development:
domain: localhost:3000
wkhtmltopdf: /usr/sbin/wkhtmltopdf
#wkhtmltopdf: /Users/mephux/.rvm/gems/ruby-1.9.2-p0/bin/wkhtmltopdf

test:
domain: localhost:3000
wkhtmltopdf: /usr/sbin/wkhtmltopdf

production:
domain: localhost:3000
wkhtmltopdf: /usr/sbin/wkhtmltopdf



Luego de modificar vamos con la configuracion del Snorby

# cd /var/www/snorby
# bundle install
# bundle update activesupport
# bundle update railties
# bundle update rails
# rake snorby:setup

En el archivo inicial de database.yml

edit /var/www/snorby/config/database.yml pusimos el pass de root, ahora crearemos un usuario para esa base de datos

# mysql -u root -p

creat user 'snorbyuser'@'localhost' IDENTIFIED BY 'pass';
grant all privileges on snorby.* to 'snorbyuser'@'localhost' with grant option;
flush privileges;

Ahora modificamos el archivo database.yml
snorby: &snorby
adapter: mysql
username: snorbyuser
password: pass
host: localhost


Integracion de Snorby con el Apache2 Passenger

Instalamos las dependencias
aptitude install apache2 apache2-prefork-dev libapr1-dev libaprutil1-dev libopenssl-ruby libcurl4-openssl-dev

# /etc/init.d/apache2 restart

Instalamos el modulo passenger

# gem install --no-ri --no-rdoc --version 3.0.3 passenger

Instalamos el passenger modulo para apache2
Nos vamos al directorio
# cd /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.3/bin

En ese directorio ejecutamos

# ./passenger-install-apache2-module -a



Creamos el archivo con el contenido
# nano /etc/apache2/mods-available/passenger.load

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.3/ext/apache2/mod_passenger.so

Creamos el archivo con el contenido
# nano /etc/apache2/mods-available/passenger.conf



Habilitamos los modulos
# a2enmod passenger
# a2enmod rewrite
# a2enmod ssl

# /etc/init.d/apache2 restart

Integramos Snorby con Apache2

Creamos el archivo "snorby" dentro de /etc/apache2/sites-available :



Habilitando el website :

# ln -s /etc/apache2/sites-available/snorby /etc/apache2/sites-enabled/snorby

Agregamos en el archivo /etc/apache2/ports.conf
NameVirtualHost *:90
Listen 90


# /etc/init.d/apache2 restart

Finalmente tenemos la pagina de logueo



usuario: snorby@snorby.org
pass: snorby





PD1: Si tienes algun inconveniente seria bueno revisar el archivo /var/log/apache2/error.log
PD2: Tambien es bueno correr en modo consola con el
# rails s -e production
y ver la salida por si se presenta algun detalle
PD2: Verificar que todo el contenido de /var/www/snorby pertenezca a www-data
PD3: Thanks to mephux for the support through the snorby irc channel, very helpful

Saludos

Fuente:

http://snorby.org/
http://www.corelan.be/index.php/2011/02/27/cheat-sheet-installing-snorby-2-2-with-apache2-and-suricata-with-barnyard2-on-ubuntu-10-x/

viernes, 25 de febrero de 2011

Armitage en Debian Wheezy con PostgreSQL



Vamos con la instalacion de Armitage sobre Debian Testing ahora Wheezy, basandome en un post anterior --> aqui

Basicamente se pide 3 requisitos

Tener java 1.6.0, Metasploit 3.5.1 y una base de datos para conectarnos





Luego de tener los requisitos se procede a bajar el paquete linux y descomprimirlo.
Ahora se tiene la siguiente version:

http://www.fastandeasyhacking.com/download/armitage022511.tgz

En la consolo ejecutamos los comandos
#msfrpcd -f -U msf -P test -t Basic

Lo que hace el comando es ejecutar el msfrpcd con el user msf y el passowrd test
ademas habilita el ssl listener en el puerto por defecto 55553

Luego en el directorio donde bajamos el armitage encontraremos el archivo armitage lo ejecutamos

#./armitage

En el campo "tupass", poner el pass que se le puso al usuario postgres




Si todo salio bien tendras la ventana final



Fuente:
http://www.fastandeasyhacking.com/faq

sábado, 19 de febrero de 2011

Twitcam en Debian Squeeze amd64



Tengo una laptop hp pavillion dv6 y la webcam me funciona bien con el cheese, pero decidi probar el twitcam, solo para ver si habia algo adicional a realizar en el Iceweasel.

Aqui los pasos que segui.

1.- descargar la ultima version del adobe flash, aqui el link

http://labs.adobe.com/downloads/flashplayer10_square.html

2.- Una vez instalado puedes ir a esta pagina para ver que funcione y la version que tienes

http://www.adobe.com/software/flash/about/

En mi caso: You have version 10,3,162,29 installed

3.- Ir a este link para configurar las opciones del flash

http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager06.html



4.- Una vez configurado ya pueden ir a twitcam.com, una vez logueado en la pagina le dan broadcast y te pedira permiso para usar la camara, le dices si, y listo empieza el show :P

Saludos

Fuente:
http://www.linuxquestions.org/questions/linux-general-1/cant-get-twitcam-to-work-on-linux-ff-808024/

martes, 15 de febrero de 2011

Instalando Debian 6.0

La nueva version Debian 6.0 Squeeze



Saludos

viernes, 11 de febrero de 2011

Heartbeat en Debian Squeeze


El famoso Heartbeat

Nos permite tener alta disponibilidad en caso haya problemas con un server estara el otro que permitira continuar con el servicio, siendo transparente para el usuario final, en este caso un ejemplo sencillo con el servicio web

El esquema es el siguiente

IP HA (compartida): 192.168.0.199

ServerA 192.168.0.200
ServerB 192.168.0.201

Configuramos el archivo /etc/hosts en ambos servers

127.0.0.1 localhost
192.168.0.200 ServerA
192.168.0.201 ServerB

Instalamos el paquete heartbeat en ambos servers

apt-get install heartbeat

En ambos server agregamos estas lineas en el /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind=1

Lo ejecutamos con:

sysctl -p

Se genera el archivo y se copia en ambos servers sino lo hacen sale error cuando reinicien el hearbeat

#nano /etc/ha.d/authkeys
auth 3
3 md5 clave

Donde clave es el password.

Ahora configuramos los permisos del archivo

chmod 600 /etc/ha.d/authkeys

En Debian el archivo no encontraran el archivo en /etc/ha.d sino esta en /usr/share/doc/heartbeat/ha.cf.gz simple lo descomprimen y lo copian en /etc/ha.d.

Editamos el archivo /etc/ha.d/ha.cf en ServerA:

#
# keepalive: how many seconds between heartbeats
#
keepalive 2
#
# deadtime: seconds-to-declare-host-dead
#
deadtime 10
#
# What UDP port to use for udp or ppp-udp communication?
#
udpport 694
bcast eth0
mcast eth0 225.0.0.1 694 1 0
ucast eth0 192.168.0.201 #La ip del serverB
# What interfaces to heartbeat over?
udp eth0
#
# Facility to use for syslog()/logger (alternative to log/debugfile)
#
#logfacility local0
#
# Tell what machines are in the cluster
# node nodename ... -- must match uname -n
node ServerA
node ServerB

Copiamos el archivo al ServerB solo que cambiamos la ip de ServerA

Ahora vamos a modificar el archivo haresources, igual lo copiamos del /usr/share/doc/heartbeat/

Y hay ponemos la IP HA (compartida)

ServerA 192.168.0.199 apache2

Reiniciamos el servicio

:~# /etc/init.d/heartbeat restart
Stopping High-Availability services: Done.

Waiting to allow resource takeover to complete:Done.

Starting High-Availability services: IPaddr[3275]: INFO: Resource is stopped
Done.

:~#

Listo !!!
A modo de prueba reinicien uno de los servers y en el browser apunten a la IP HA (compartida), en mi caso 192.168.0.199, veran que no cae, es mas modifiquen el index en uno que diga ServerA y el otro serverB y refresquen el browser.

PD: La interface virtual donde estara la IP pues lo configuramos en /etc/network/interfaces
y agregamos.

auto lo eth0 eth0:0
allow-hotplug eth0 eth0:0
iface eth0:0 inet static
addres 192.168.0.199
netmask 255.255.255.0

Fuente:

http://bytecoders.net/content/servidores-de-alta-disponibilidad-heartbeat.html
http://lubl.de/blog/2009/10/setting-up-hearbeat-failover-for-an-ip-adress-on-debian-squeeze/