carp@home Explicando lo que nadie me explico

28nov/110

Script Perl/Bash para gestionar servicios

Era cuestión de tiempo simplemente para que en un entorno de aprendizaje y desarrollo como el que manejo algunas tareas se volvieran sumamente tediosas. Mi HA lab sigue creciendo en Boxes y VMs y yo no paro de meter, sacar, romper, arreglar.  Me puse a pensar cuántas veces por día tipeaba /etc/init.d/algunservicio algun-flag y fue así que me dispuse a escribir algún script que me salvara de ingresar la ruta completa para controlar un servicio. El script debía ser muy sencillo y tendría que permitirme poder acceder al control de los servicios tipeando, por ejemplo, services apache2 restart.

Las operaciones de control a realizar antes de ejecutar el comando eran nada más que 2:

1) El script debía verificar que quien lo ejecutara fuera Root, de otro modo a rootearse.
2) Además, necesitaba verificar que el servicio pasado como primer flag fuese un archivo existente de hecho en /etc/init.d/

Lo escribi primero en Perl y luego en Bash para poder agregarlo definitivamente a mi PATH. Mostraré aquí sólo la versión de Bash y los procedimientos para incorporarlo definitivamente al PATH de trabajo. Al final del artículo dejo link a las 2 versiones por si alguien prefiere Perl.

Archivado en: Sysadmin Continúa leyendo
28nov/111

Cualquiera puede hackear: DOS attack con Slowloris

Antes de comenzar con este artículo, el disclaimer que corresponde: la información aquí presentada tiene fines puramente educativos y cualquier uso malintencionado de estas técnicas es responsabilidad exclusiva de quien incurra en malas prácticas.

Ya hace algunos años ha aparecido una pequeña aplicación en Perl llamada Slowloris que permite realizar un ataque de DOS (Denial of Service) contra sitios con infraestructuras de servidores no Balanceados. Para explicar rapidamente el funcionamiento de este script, citemos las palabras de su creador:

"Slowloris holds connections open by sending partial HTTP requests. It continues to send subsequent headers at regular intervals to keep the sockets from closing. In this way webservers can be quickly tied up. In particular, servers that have threading will tend to be vulnerable, by virtue of the fact that they attempt to limit the amount of threading they'll allow. "

Traducido y resumido: lo que es este pequeño script hace es enviar una cantidad importante de HTTP REQUESTS incompletos, lo cual impide que el servidor reciba->atienda->despache el Request. En otras palabras los servidores acumulan estos Requests sin posibiliad de "despacharlos" desde que no pueden satisfacer vía Response las peticiones por no estar estas bien formadas a pesar de ser reconocidas como peticiones válidas.

25nov/111

Replicacion Master-Master en Mysql

Hace un tiempo escribi un artículo explicando cómo instrumentar Replicación Master-Slave en Mysql para 2 boxes Debian Squeeze y prometi regresar sobre el tema de la Replicación con formato Master-Master. Este artículo viene a demostrar que soy un hombre de palabra =P.

Antes de comenzar, considero importante dedicar algunas palabras a la Replicación de datos en Mysql. Recomiendo, además, la lectura del anterior artículo ya que gran parte de lo que veremos aquí fue escrito en él desde que Mysql no tiene una solución específica para Replicar Master-Master y arribamos a este modelo duplicando el trabajo realizado al replicar Master-Slave: es decir, creamos replicacion de master (box1) a slave (box2) y luego repetimos el proceso de master (box2) a slave (box1) de suerte que arribamos -en este caso- a una interface con 2 bases de datos sobre las cuales se pueden realizar tareas INSERT/UPDATE/DELETE, etc que impactarán de inmediato en la contigua.

22nov/110

Desinstalar Mysql en Debian (Clean uninstall)

Este blog ha sido creado para dar cuenta de las cosas con que me voy encontrando a la vez en que intento penetrar el mundo Sysadmin en Linux. En la medida en que los problemas surgen, busco en Google, resuelvo -las más de las veces- y creo que es una buena idea compartir escribiendo los pasos que segui en cada caso como a mi me hubiera gustado encontrarlos.

Se trata -en esta oportunidad- de algo muy sencillo: hemos tocado tanto Mysql que simplemente desearíamos comenzar de cero por lo que necesitamos un clean uninstall de mysql para, luego, reinstalar y volver a comenzar.

Esto es muy sencillo en Debian Squeeze y supongo que debe serlo en otras distribuciones. No necesitamos explicar que todas las bases de datos del servidor van a perderse. Vamos a desinstalar por completo mysql de suerte que si luego intentamos un  mysql -u root -p bash no reconocerá el programa.

Archivado en: Sysadmin Continúa leyendo
19nov/110

Autologin on boot en Debian Squeeze

En la medida en que se suman computadoras headless (sin monitor) a mi HA lab me he encontrado con la necesitad de administrarlas desde el SSH de la única máquina que sí posee monitor. Uno de los primeros problemas con que me topé fue el del login de cada uno de los boxes cuando desde SSH le hacía un reboot o shutdown. Al arrancar el box nuevamente, Debian -como todas las distribuciones- me dejaba en el punto en que Getty presentaba el prompt de Login.

Como es evidente, esto no me servía en nada: si un box debía ser reiniciado por cualquier razón, éste debía volver a ofrecer servicios lo más rápido posible. Es así que la necesidad de saltear el paso del Login se hizo patente: necesitaba que mis boxes reiniciaran y se loguearan automáticamente.

Archivado en: Sysadmin Continúa leyendo
10nov/110

Sincronizando archivos entre 2 servidores Debian Squeeze con Rsync

Tras haber optado por Rsync como la solución para tener sincronizados los archivos de aplicaciones que residan en mas de un box, explicaré brevemente cómo instalar y utilizar esta herramienta. Antes de pasar abrir la terminal, veamos en qué situaciones Rsync puede ser de utilidad.

La acostumbrada introduccion

Tomemos a modo ilustrativo mi caso: una aplicación web PHP/MYSQL sobre LAMPP (Debian Squeeze) a la que  por cuestiones de alto tráfico debi agregarle un nuevo Box con una copia idéntica de la aplicación en servidor original. Es decir, todo lo que antes estaba en un dedicado se encuentra ahora en 2 dedicados y, Load Balancer con Hardware de por medio, mis visitas serán dirigidas a uno u otro servidor según la carga que estos tengan (si el Box 1 se encuentra con un Server Load alto, la aplicación será servida desde el Box 2).

Archivado en: Sysadmin Continúa leyendo