oct 16 2010

Bloqueo de ataques de fuerza bruta en servidores GNU/Linux con BFD

Lo primero que os recomiendo antes de empezar a leer esta entrada, es dar un vistazo (los asiduos a DaboBlog ya lo conoceréis) a este post sobre el resumen de mi participación junto a Oreixa en el pasado EFIMP (Eset Foro Internet Meeting Point) de Gijón en el que hablo de diferentes tipos de ataques web y control del tráfico en nuestro servidor GNU/Linux con herramientas como Mod Evasive, Apache Status, Mod Security, Medusa, Whatweb, Pentbox, APF Firewall, etc.

Más que nada lo digo porque cuando hablamos de ataques de fuerza bruta, solemos dar prioridad (obviamente) a servicios como ssh con soluciones como fail2ban o DenyHosts tal y como reseño en esa entrada pero ¿qué pasa por ejemplo con el FTP u otros tan sensibles como el correo?

Ahí es donde entra en escena BFD, una herramienta más de los creadores de APF Firewall (que por cierto, su trabajo es impresionante, mirad la lista, tengo que probar LSM, Linux Socket Monitor)

¿Qué es y cómo actúa BFD?

BFD es una aplicación creada por Ryan MacDonald con licencia GPL que una vez instalada, se ejecuta por defecto cada 3 minutos en el cron, buscando en logs relevantes del sistema (/var/log/secure, /var/log/auth.log, /var/log/messages, esto puede variar según la distro) rastros de posibles huellas de ataques de fuerza bruta (fallos de autenticación) en servicios como courier, cpanel, exim, proftpd , pure-ftpd, sshd, etc.

¿Cómo actúa? una vez que localiza el ataque (por defecto el valor que viene en su configuración es “TRIG=”15″, 15 intentos) ejecuta un comando del sistema para bloquear el host que lo ha provocado (por defecto usa el bloqueo de APF Firewall, asumiento, erróneamente a mi modo de ver, que se tiene instalado APF, este es el comando (BAN_COMMAND=”/etc/apf/apf -d $ATTACK_HOST {bfd.$MOD}”)

Aspectos a tener en cuenta. (Probado en Debian Lenny)

Pero en ese valor, (BAN_COMMAND=) podéis usar comandos de iptables, Shorewall, etc, u otro del tipo BAN_COMMAND=”route add -host $ATTACK_HOST reject”. Eso queda a vuestra elección y depende de qué tengáis instalado en el servidor web.

En el fichero de configuración principal que está en; /usr/local/bfd/conf.bfd también se puede definir además de los intentos de bloqueo, comando para rechazar el host atacante y el resto de opciones, que se envíe un e-mail (EMAIL_ADDRESS=”aquí el mail”) avisando del ataque y posterior bloqueo.

Su instalación es muy sencilla, una vez descargado con tipear un ./install.sh es suficiente pero en mi caso, me daba este error en el cron; Error: bad minute; while reading /etc/cron.d/bfd . No era el tiempo de ejecución sino que ahí también va un valor referido al email que hay que rellenar al igual que en /usr/local/bfd/conf.bfd;

MAILTO=aquí el mail, por defecto vacío
SHELL=/bin/bash
*/3 * * * * root /usr/local/sbin/bfd -q

Por lo que además de incluir el mail en la configuración principal; /usr/local/bfd/conf.bfd, también deberéis tener en cuenta este campo a rellenar en el cron; /etc/cron.d/bfd.

Para ver que funciona correctamente, hablando del cron, os recomiendo tener una consola con el siguiente comando;

tail -f /var/log/syslog | grep -i bfd

Y si todo va bien y no os sale el error de “bad minute”, se debería ver cada 3 minutos esto;

Oct 16 21:24:01 server /USR/SBIN/CRON[5017]: (root) CMD (/usr/local/sbin/bfd -q)

Oct 16 21:27:01 server /USR/SBIN/CRON[5468]: (root) CMD (/usr/local/sbin/bfd -q)

Oct 16 21:30:01 server /USR/SBIN/CRON[5468]: (root) CMD (/usr/local/sbin/bfd -q)

También en /var/log hay un fichero que se crea referido a BFD (/var/log/bfd_log).

Lo último que os recomiendo, es que miréis bien tanto la documentación sobre BFD (Brute Force Detection) y como estamos viendo, leer tranquilamente los valores incluidos en el fichero de configuración principal (/usr/local/bfd/conf.bfd).

Este concretamente “syslog auth log path” puede variar, ya que por defecto incluye /var/log/secure y en Debian por ejemplo es /var/log/auth.log. A este tipo de detalles me refiero con mirar bien cada valor.

Además de todo esto, no paséis por alto comprobar las reglas (en /usr/local/bfd/rules) que incluye por defecto para las aplicaciones a proteger, borrando las que no tengáis en el sistema, o cambiando el valor “TRIG” para el bloqueo independiente deseado para cada servicio.

Si se escribe sin ningún parametro bfd en el prompt del sistema, veréis esto;

-s|–standard …….. run standard with output

-q|–quiet ……….. run quiet with output hidden

-a|–attackpool …… list all addresses that have attacked this host

Por defecto si os fijáis en la entrada del cron, se ejecuta con la opción “-q”, para ver la lista de IPs que han sido bloqueadas se usa el parámetro “-a”. Para comprobar su funcionamiento podéis usar Medusa con este comando para atacar una cuenta FTP;

medusa -h ip-host-a-atacar -u usuario_ftp -P passwords.txt -e ns -M ftp

Asumiendo que desde el directorio que estáis tipeando el comando, tenéis una lista de passwords llamada passwords.txt. (Podéis usar esta del proyecto Openwall aunque hay muchas y muy variadas).

Suerte con la instalación y espero que esta entrada os sea de ayuda para que deis menos vueltas que las que he dado yo para configurarlo, ciertamente no es que sea complicado, pero sí un poco farragoso por las conf que trae por defecto.

Tags: , , , , , , , , , , , , , , , ,


jun 10 2009

Tutorial (muy bueno) en PDF sobre Bash. Sácale partido a tu terminal -;)

bashEn ocasiones, estás navegando por “no sabes donde”  y te encuentras con joyas como esta que hoy comparto con vosotros. Se trata de una completa guía sobre el uso de Bash, “Bourne Again Shell”, en formato PDF escrita en castellano por Fernando López Fernández para Macprogramadores, donde no está de más que le deis un vistazo a su sección de tutoriales.

Os será de utilidad tanto si usáis GNU/Linux como Mac OS X, en sus casi 170 páginas podréis encontrar respuesta a casi todas las cuestiones que os puedan surgir en el uso diario con una línea de comandos, sólo viendo el índice os daréis cuenta de lo que hablo -;).

Según nos informan en Macprogramadores sobre el documento;

En este tutorial pretendemos enseñar el manejo de Bash, el Bourne Again Shell de GNU. Este shell es el que proporcionan por defecto muchos sistemas UNIX entre ellos Mac OS X o Linux.

Los ejemplos se explicarán sobre Mac OS X, pero debido a la interoperatividad que caracteriza a Bash, estos ejemplos deberían ser exactamente igual de útiles en otros sistemas UNIX. Cuando existan diferencias las indicaremos para que usuarios de otros sistemas puedan seguir correctamente este documento.

Al acabar este tutorial el lector debería de haber aprendido a usar las principales teclas rápidas, personalizar mucho más su terminal para hacerlo más manejable, y modificar o crear los scripts que configuran su sistema.

Acceso a >_ Tutorial sobre Bash” (Descarga directa, formato PDF, tamaño 1.1 Mb)

Otros enlaces (por si falla)

Download [enlace alternativo] [enlace alternativo]

Tags: , , , , , ,


feb 20 2007

Fundamentos de Bash, desde la línea de comandos…

Category: GNU/Linux,Unix,Unix y Mac OS Xdabo @ 12:21 pm

unix.gifHoy os voy a recomendar esta lectura de la web amiga Fentlinux sobre “fundamentos de Bash“. Pero antes voy a poneros un poco en antecedentes.

¿Qué es el Bash? (además de mi shell-;) Nos cuenta Wikipedia;

bash es un shell de Unix (intérprete de comandos de Unix) escrito para el proyecto GNU. Su nombre es un acrónimo de bourne-again shell — (pull) otro shell bourne (/pull) — haciendo un juego de palabras (born-again significa renacimiento) sobre el Bourne shell (sh), que fue uno de los primeros shells importantes de Unix.

Hacia 1978 el shell Bourne era el shell distribuido con el Unix Version 7. Stephen Bourne, por entonces investigador de los Laboratorios Bell, escribió el shell Bourne original . Brian Fox escribió el shell bash en 1987.

En 1990, Chet Ramey se convirtió en su principal desarrollador. bash es el shell por defecto en la mayoría de sistemas GNU/Linux, además de Mac OS X Tiger, y puede ejecutarse en la mayoría de los sistemas operativos tipo Unix. También se ha portado a Microsoft Windows por el proyecto Cygwin.

El artículo completo de Wikipedia.

Desde Fentlinux nos sugieren la lectura en formato PDF de un artículo de David F sobre Bash.

Índice:
1. Introducción
2. Nomenclatura
3. Combinaciones de teclas
4. Variables de entorno
5. Entrada y salida estandard redirecciones
6. Entrecomillado
7. Expresiones regulares
8. Comandos GNU básicos
9. Comandos GNU de ayuda
10. Comandos de administración

Información y descarga del PDF.

Tags: , , ,


ene 28 2007

Tutorial CHMOD, entendiendo los permisos de archivo

Category: GNU/Linux,Tutoriales | Guías,Unix,Webmasterdabo @ 2:35 am

tutoriales.gifMuchos de los problemas que suelen ocurrir a la hora de actualizar una web y de que se visualice un contenido correctamente, son causados por los permisos de archivo.

Liamngls ha realizado este interesante tutorial que hemos pubicado en Daboweb sobre el correcto uso de CHMOD (change mode).

Si vuestra web o blog se aloja en un (pull)server bajo Unix, GNU/Linux(/pull), OS X server etc, es conveniente saber como funciona el tema de los permisos.

Unos permisos correctos, también son más que importantes para que vuestro website esté protegido y seguro frente a comportamientos inesperados tanto de aplicaciones como de usuarios.

Se acompaña de capturas de pantalla para hacer más fácil su comprensión, en el tutorial se basa en FileZilla, aunque es válido para todos los clientes FTP / SFTP que lo soporten.

De todos modos, desde la línea de comandos es como más rápido trabajaréis con CHMOD.

Os dejo aquí un comando para establecer desde vuestro terminal via SSH la forma más común (y segura) de permisos de archivos en un sitio web, 755 para los directorios y 644 para los ficheros. Los cambia recursivamente desde el directorio en el que estéis situados;

find . -type f | xargs chmod 644 (ficheros)
find . -type d | xargs chmod 755 (directorios)

Por cierto, también habla de “chown” (propietario y grupo), nunca dejéis que Apache tenga permisos de escritura o ejecución sobre los virtual hosts (salvo en los casos de las “cachés” -;)

Acceso al manual sobre CHMOD.

Tags: , , , ,


ene 05 2007

Opciones ocultas de Mac Os X, desde el terminal…

Category: Mac OS X,Unix y Mac OS Xdabo @ 3:56 am

mac_os_x.gifAquí os va una buena, más que buena dosis de línea de comandos, muchas veces os he hablado del auténtico protagonista de Os X, Unix…

Desde como hacer que usando el terminal (pull)el foco siga al ratón(/pull) a como escoger las flechas de “Scroll” en la ventana activa pasando por como activar o desactivar Dashboard etc etc.

Creo que no os va a defraudar sobre todo a los más “Maquero-Linuxeros” -;), desde el enlace os daréis cuenta que desde la consola se accede al corazón del sistema, donde el entorno gráfico no llega :D

Opciones ocultas en Mac Os X“.

(Gracias Liamngls)

Tags: , , ,