De Windows a Linux: Estructura de Directorios en Linux
Este artículo está destinado a quienes han optado por comenzar con Linux y se encuentran -finalizada la instalación de la distribución elegida- por primera vez con lo que podríamos llamar el árbol o estructura típica de directorios de los sistemas operativos Linux. En mi opinión este "primer encuentro" del usuario que ya ha cristalizado la estructura de archivos de Windows, puede ser muy frustrante: se trata de usuarios con una idea más o menos formada de dónde están las cosas en sistemas Windows. Saben que los ficheros de configuración se localizan en (C:\Windows y C:\Windows\System32\64 más específicamente). Conocen además que los programas que han instalado a través de Install Wizards crean carpetas generalmente en C:\Archivos de Programas y que pueden encontrar sus documentos y descargas en C:\Documents and Settings.
Alta Disponibilidad: Load Balancer y Failover con Haproxy
1. Nociones de Escalabilidad, Load Balancing y Failover
En este artículo veremos cómo configurar un Load Balancer con Failover usando software con el fin de Balancear un Web Server. Un Load Balancer es, en escencia, un sistema que recibe peticiones de un cliente, las procesa a partir de algún criterio (algoritmo) y finalmente las envía a alguno de los servidores que las resolverán y responderán.
Configurando IPS estaticas para tu Red Linux
Me sucedió hace un tiempo que emprendi la tarea de instalar Debian en algunas PCS viejas que consegui. Mi idea original era armar un Cluster de Alta Disponibilidad y Failover (cosa que finalmente hice con Haproxy y será tema de un post en breve).
Usé mi DVD de Debian Squeeze e instalé la misma distro en tantas PCS completas como tenía (en su momento tenía 2 PCS que oficiarían como Servidores Lampp detrás de un Load Balancer a configurar en mi PC de trabajo).
Como siempre, al realizar la instalación de Debian, elegi que la configuración del equipo en red se realizara vía DHCP: antes de usar Debian usé Slackware, luego Centos y siempre instalé con DHCP por la simple razón de que al terminar la instalación e ingresar a la X abría el Konqueror y Google estaba ahí.
Iniciando Linux con tu particion Windows montada y permisos de escritura
Este va a ser bien cortito pero seguramente de mucha utilidad para quienes recién comienzan a utilizar Linux y han optado por el módico esquema de un Dual Boot para poder elegir en el inicio si van a usar Photoshop o a Linuxear
Lo primero con que nos encontramos al instalar, en mi caso Debian Squeeze, e iniciar el sistema es que, si bien durante la instalación de Debian se reconocen otras particiones con NTFS al ingresar éstas o bien no están en /mnt o bien aparecen pero no puede escribirse en ellas.
ProFTPD: Configurando un FTP Server con TLS
Trabajar con Servidores Web requiere generalmente disponer de una serie de herramientas con que interactuar con los Boxes y en este capítulo vamos a dedicarnos al viejo y buen FTP (File Transfer Protocol), imprescindible a la hora de transferir o descargar rapidamente archivos desde nuestros Servers.
Linux ofrece muchas alternativas a la hora de instalar un ftp-server y hemos optado en este caso por trabajar con ProFTPD debido a que es un servidor ftp robusto y configurarlo con medidas extra de seguridad (TLS) es relativamente sencillo.
La necesidad de securizar nuestras transferencias FTP con un protocolo como TLS (Transport Security Layer) reside en que al operar con FTP estamos moviendo a través de internet archivos de texto plano que podrían ser facilmente legibles en caso de que, por ejemplo, trabajemos en una red en que corre un Sniffer. La tarea de TLS será la de garantizar que los datos de conexión al servidor FTP y los paquetes que subamos o bajemos sean encriptados de modo tal que, ante un sniffer u otra herramienta que intercepte nuestra tráfico no corramos el riesgo de exponer información valiosa.
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.
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.
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.
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.
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.