Archive for January, 2009

Instalación de OPSView en Alta Disponibilidad

|

OPSView es un sistema de monitorización libre. El siguiente tutorial cubre la instalación de dos servidores maestros de monitorización en alta disponibilidad. Está realizado sobre Debian Linux y aunque hay tutoriales y documentación en la página oficial, si queréis montar dos Debian maestros en HA no os recomiendo seguir la guia oficial al pie de la letra (yo ya lo hize).
La guía mostrada a continuación no es enteramente mía. Está basada en documentación oficial y en trozos de las páginas que menciono en el apartado referencias. Además no habría podido realizarla sin la ayuda de mis compañeros adolfop, 4lv3rn3, spanic y vege10n. Ahí vamos:

::Instalación SSOO::

Instalamos Debian en ambos nodos, solo el sistema base.
Para el particionado reservamos dos particiones para el HA sin montar, una para los metadatos(con 128 MB basta) la otra para var2.
Una vez instalado añadimos las siguientes lineas al fichero /etc/apt/sources.list

—-
deb http://ftp.es.debian.org/debian/ etch non-free
deb-src http://ftp.es.debian.org/debian/ etch non-free
deb http://www.backports.org/debian etch-backports main contrib non-free
deb http://apt.opsview.org/debian etch main
deb http://ftp.debian.org/debian etch non-free
—-

Después de esto al hacer “aptitude update” obtendremos errores de certificados, se solucionan importándolos con los siguienetes
comandos:

gpg –keyserver subkeys.pgp.net –recv-key XXXXXXXX
gpg –export –armor XXXXXXXX | apt-key add -

Donde XXXXXXXX son los últimos 8 dígitos numéricos del cedrtificado y se obtienen del error al hacer el “aptitude update”
COnfiguramos para que nodo1 y nodo2 tengan IP’s estáticas y completamos el fichero /etc/hosts para que resuelvan uno contra el otro.

:: Instalación Software ::

Instalamos el software necesario mediante aptitude:

aptitude install heartbeat
aptitude install drbd8-source
aptitude install drbd8-utils
aptitude install ssh
aptitude install opsview

Creamos el módulo para el drbd8:

module-assistant auto-install drbd8

:: Configuración de la HA ::

En ambas máquinas sustituimos el fichero /etc/drbd8.conf por este:

—-
global {
usage-count no;
}
common {
}
resource “r0″ { # r0 es el nombre del recurso
protocol C;
startup {
wfc-timeout 80;
degr-wfc-timeout 120;
}
disk {
on-io-error detach;
}
net {
}
syncer { rate 10M; }
on nodo1 { # nodo1
device /dev/drbd0; # dispositivo HA
disk /dev/sda6; # partición que compartirán los nodos en HA (var2)
address X.X.X.X:7780; # IP y puerto que se utilizará para balancear
meta-disk /dev/sda8[0]; # partición donde se guardan los metadatos
}
on nodo2 { # idéntico para el nodo2
device /dev/drbd0;
disk /dev/sda6;
address X.X.X.X:7780;
meta-disk /dev/sda8[0];
}
}
—-

Para ajustar los permisos ejecutamos los siguientes comandos:

chgrp haclient /sbin/drbdsetup
chmod o-x /sbin/drbdsetup
chmod u+s /sbin/drbdsetup

chgrp haclient /sbin/drbdmeta
chmod o-x /sbin/drbdmeta
chmod u+s /sbin/drbdmeta

En ambos nodos creamos el dispositivo para el recurso:

drbdadm create-md r0

Acto seguido iniciamos el servicio:

/etc/init.d/drbd8 start

Ahora en el nodo que inicialmente será el maestro (nodo1) ejecutamos:

drbdadm — –overwrite-data-of-peer primary r0
mkfs -t ext3 /dev/drbd0
mkdir /var2
mount /dev/drbd0 /var2

En el nodo2 creamos el directorio var2 (mkdir /var2).

Para iniciar la sincronización entre ambos nodos introducimos el siguiente comando en el nodo primario (nodo1):

drbdadm — connect all

En ambos nodos eliminamos el incio automático del software que será balanceado, ya que éste será iniciado mediante HA:

update-rc.d -f opsview remove
update-rc.d -f opsview-web remove
update-rc.d -f mysql remove
update-rc.d -f apache2 remove
update-rc.d -f opsview-agent remove

En ambos nodos reemplazados el fichero /etc/ha.d/ha.cf por el siguiente:

—-
debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 2
deadtime 30
warntime 10
initdead 120
auto_failback off
bcast eth0
# This is a ping test in our network to check which server can ping it
ping X.X.X.X # IP virtual a la que los clientes deberán dirigirse para utilizar los servicios ofrecidos en HA

node nodo1
node nodo2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
—-

Em ambos nodos reemplazamos el fichero /etc/ha.d/haresources por el siguiente(idéntico en los dos nodos):

—-
nodo1primario drbddisk::r0 Filesystem::/dev/drbd0::/var2::ext3 10.10.10.120 mysql opsview opsview-web apache2
# nodo que actua de primario, recurso, filesystem, punto de montaje, IP virtual, servicios en HA
—-

En ambos nodos reemplazamos el fichero /etc/ha.d/authkeys por el siguiente:

—-
auth 1
1 sha1 MySecret
—-

Modificamos los permisos del fichero /etc/ha.d/authkeys:

chmod 600 /etc/ha.d/authkeys

Una vez sincronizados deberemos preparar /var em ambos nodos para que los datos a compartir por los servidores estén en la partición en HA.
Para ello vamos a tomar el recurso compartido en el nodo2, realizaremos la preparación, acto seguido repetir los pasos, tomando el recurso
el nodo1 y haciendo la misma preparación:

En el nodo1 “soltamos” el recurso:

umount /var2
drbdadm secondary r0

En el nodo2 “cogemos” el recurso:

drbdadm primary r0
mount /dev/drbd0 /var2

A continuación vamos a preparar /var y /var2. La idea es que los recursos que se necesitan en HA estén realmente en /var2, aunque la máquina
a nivel local los trate como si estuvieran en /var.

cd /usr/local/
tar cvzf nagios.tar.gz nagios
mv nagios.tar.gz /var2
rm -r nagios
cd /var2
tar xvzf nagios.tar.gz /var2
ln -s /var2/nagios /usr/local/nagios
cd /usr/local/
tar cvzf opsview-web.tar.gz opsview-web
mv opsview-web.tar.gz /var2
rm -r opsview-web
cd /var2
tar xvzf opsview-web.tar.gz /var2
ln -s /var2/opsview-web /usr/local/opsview-web
cd /var/lib/mysql
tar cvzf mysql.tar.gz mysql
mv mysql.tar.gz /var2
rm -r mysql
cd /var2
tar xvzf mysql.tar.gz /var2
ln -s /var2/mysql/ /var/lib/mysql/mysql

Reemplazamos los agentes NRPE de Nagios:

apt-get install nagios-nrpe-server nagios-plugins-basic
rm /etc/nagios/nrpe.cfg
cp /var2/nagios/etc/nrpe.cfg /etc/nagios/nrpe.cfg

Editamos el fichero /etc/nagios/nrpe.cfg y lo modificamos para cambiar las rutas “/usr/local/nagios/libexec” por “/usr/lib/nagios/plugins
Reiniciamos el servicio:

/etc/init.d/nagios-nrpe-server restart

Tras realizar el último paso en el nodo1 podemos reiniciar las máquinas y dispondremos de OPSView en HA.
Para acceder al servicio los clientes deben dirigirse a la IP virtual, en este caso http://X.X.X.X:3000

:: NOTAS ::

Un error comun a la hora de sincronizar con drbd es el “Repair Split-Brain detected, dropping connection!

Para solucionarlo debemos seguir los siguientes pasos:
Paramos el heartbet en ambos nodos.
En el secundario ejecutamos el siguiente comando:

drbdadm — –discard-my-data connect r0

En el primario ejecutamos el siguiente comando:

drbdadm connect r0

Si aún con ello no levanta probamos el siguiente comando en el primario:

drbdadm primary r0

:: Referencias ::

http://docs.opsview.org/doku.php?id=opsview2.14:hamaster-debian-howto
http://wiki.centos.org/HowTos/Ha-Drbd
http://www.estrellateyarde.es/discover/drbd-en-linux
http://liyuangarcia.blogspot.com/2007/11/cluster-de-alta-disponibilidad-sobre.html
http://gobok.serveblog.net/system-admins/howto-repair-split-brain-detected-dropping-connection/

Broadcom Wireless en Fedora 10

|

Recientementeme he comprado un netbook Lenovo s10e:

Le he puesto Fedora (para variar) y me he encontrado con la misma historia de siempre, las tarjetas wireless Broadcom no se llevan bien con Linux.
A pesar de que hay varios métodos para ponerla en funcionamiento (ndiswrapper es el más popular) y ya lo hize en su día sobre Slackware he descubierto recientemente uno muy sencillo para Fedora y que explico a continuación. Basta con instalar el paquete broadcom-wl desde los repositorios fusion. Tan facil como dos comandos, uno para añadir los repositorios fusion:

rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

Y otro para instalar el software propiamente dicho:

yum install broadcom-wl

Reiniciamos y por fin wifi en Fedora con trajetas Broadcom.

Atacando autenticación débil en aplicaciones web

|

La autenticación es un punto clave a la hora de auditar una aplicación web.
Hoy escribo porque me he encontrado un video muy educativo que explica cómo un fallo muy común y simple puede permitirnos descubrir todos los usuarios y contraseñas de una apliación web.

El video es por cortesía de enablesecurity y explota la vulnerabilidad utilizando la aplicación comercial Acunetix.
Sobra decir que no es necesaria esta aplicación para realizar el ataque. Personalmente para realizar ataques de este tipo recomiendo el Burp Suite, aunque no por ello el video deja de ser muy didáctico:

Como recurso principal sobre problemas de autenticación web recomiendo la sección Authentication Testing de la OWASP Testing Guide, que recientemente ha liberado la versión 3 de la misma.

SANS SIFT Workstation

|

La SIFT Workstation es una vmware appliance preparada para realizar análisis forenses. Básicamente es una Fedora 9 preparada con múltiples programas:

ssdeep & md5deep (Hashing Tools)
Foremost/Scalpel (File Carving)
WireShark (Network Forensics)
HexEditor
Vinetto (thumbs.db examination)
Pasco (IE Web History examination)
Rifiuti (Recycle Bin examination)
Volatility Framework (Memory Analysis)
DFLabs PTK (GUI Front-End for Sleuthkit)
Autopsy (GUI Front-End for Sleuthkit)
The Sleuth Kit (File system Analysis Tools)

Hay unos scripts en perl para windows muy interesantes en la ruta “/usr/local/src/windows_perl“:

regripper.pl and plugins Registry Forensic Carver
regslack.pl         Registry slack
deleted.pl         Registry deleted key examination
regtime.pl        Registry timelime creator – now with sleuthkit bodyfile output
windata.pl        Windows Time

Credenciales de acceso:
login:  root
contraseña: forensics

Free Image Hosting at www.ImageShack.us

Hace poco ha sido liberada la versión 1.2. Puede descargarse gratuitamente previo registro desde la siguiente URL:

http://forensics.sans.org/community/downloads/retrieve.php?file=sift_workstation.zip

Auditando impresoras HP Laserject

|

Hace un mes estuve auditando un sistema de impresión HP y quisiera escribir un poco sobre los fallos más comunes de estas instalaciones. Las impresoras HP están muy extendidas y son comunes en grandes corporaciones, tal como era el caso. Por otro lado las instalaciones suelen estar pensadas para que haya cuentas de usuario centralizadas a través de las cuales se imprime. Esto quiere decir que nadie debería poder imprimir sin utilizar su cuenta. Como veremos a continuación las instalaciones por defecto permiten saltarse esta restricción.
Otro de los puntos críticos a la hora de auditar un servicio de impresión es comprobar si es posible ver los trabajos que imprimen otros usuarios, lo que podría permitir una fuga de información en algunos casos crítica. Como veremos también es posible en algunas circustancias.

Antes que nada debemos saber que una impresora en red es un dispositivo más, con sus puertos y sus servicios a la escucha. El puerto habitual para el LDP (protocolo de impresion) es el 515 tcp. Las impresoras HP utilizan el protocolo JetDirect, localizado en el puerto 9100. Adicionalmente suelen tener un servidor web a través del cual se pueden consultar logs, administrar la impresora, etc.

Lo primero que comprobaremos es si es posible imprimir anónimamente. La forma más facil de realizar esto es a través del propio servidor web de la impresora. Habitualmente tienen un panel de control a través del cual se configura la misma, se imprimen ficheros enviados, etc. Dicho panel suele y debe estar protegido mediante contraseña (queda fuera del objeto del post crackear la misma). Sin embargo algunos modelos de HP como la Laserject 5550 tienen la opción de imprimir fuera del panel de control, por lo que podemos imprimir ficheros sin utilizar cuentas de usuario, tal como podemos apreciar en la siguiente imagen:


Free Image Hosting at www.ImageShack.us

En el caso de que la impresión via web no esté permitida tenemos otro punto de acceso, se trata del puerto 9100. Si el acceso a dicho puerto no se encuentra restringido es posible hacer telnet a dicho puerto, y lo que escribamos por consola saldrá impreso en el dispositivo:

Cthulhu:~# telnet ip_impresora 9100
Trying 192.168.1.2…
Connected to 192.168.1.2.
Escape character is ‘^]’.
este texto saldrá impreso :)
^]
telnet> quit
Connection closed.
Cthulhu:~#

Esto que en principio parece una chorrada pero como veremos a continuación es una via de ataques más serios. A través del puerto 9100 se puede administrar la impresora, modificar parametros, etc. Todo esto mediante un lenguaje propietario de HP denominado PJL (Printer Job Lenguaje). El tema es lanzar comandos a la impresora y en función del tipo de acceso de que dispongamos podremos modificar más o menos parametros. Lo habitual es la chorradita de cambiar el display de la impresora, mediante la modificación del parametro @PJL RDYMSG DISPLAY, tal como vemos a continuación:

Cthulhu:~#$ telnet ip_impresora 9100
@PJL RDYMSG DISPLAY=”owned by m313″
^]quit
Cthulhu:#$

Tan común es la chorradita dle display que encontramos hasta programas que lo hacen por nosotros como hpnt:

Binario Windows
Fuente Linux

Lo realmente interesante es intentar aprovechar la modificación de parametros, para ello lo ideal es bajarse la guia oficial de PJL de HP y echarle un vistazo a la multitud de comandos disponibles. Especialmente recomiendo la lectura de los apartados PJL File Sistem Commands y Job Management.

Como vemos es un tema en apariencia sencillo pero que tiene un alto grado de profundización, recomendable tener cuidado con la introducción de comandos, ya que no todos los modelos de impresoras admiten todos los comandos (ver guia HP sobre comandos en función de modelos) y yo he comprobado personalmente que algunas impresoras se quedan fritas cuando se les intenta modificar los comandos mediante estos métodos.

Mención aparte merece el otro punto de ataque a estos dispositivos, el protocolo SNMP a través del cual se puede obtener mucha información sobre la configuración de la impresora. Me gusta especialmente la herramienta snmpwalk para este fin.

Y cómo no siempre podemos tirar de vulnerabilidades conocidas, una de las más conocidas es la siguiente:
http://www.securityfocus.com/bid/7001/exploit.

Referencias:

Hacking Network Printers
Pwn a Printer! – Notacon 2006