Category Archives: Tecnología

Redirección de tráfico TCP/UDP mediante túneles SSH

SSH nos permite crear túneles entre puertos TCP, por ejemplo:

ssh -L 2500:127.0.0.1:25 usuario@servidor.com

El comando anterior abrirá el puerto TCP 2500 en la máquina cliente, redirigiendo todo el tráfico mediante la conexión establecida con ‘servidor.com’ hacia ‘127.0.0.1’ (también podría ser otra IP de la red a la que tiene acceso ‘servidor.com’). También podemos hacerlo en sentido inverso:

ssh -R 2500:127.0.0.1:25 usuario@servidor.com

En este caso, se abrirá el puerto TCP 25000 en la máquina servidor, y se redirigirá el tráfico al puerto TCP 25 del cliente.

El problema aparece cuando queremos redirigir puertos UDP, para éstos tenemos 2 opciones: utilizar netcat o socat.
Continue reading Redirección de tráfico TCP/UDP mediante túneles SSH

Entornos aislados en Ubuntu GNU/Linux con debootstrap y chroot

En caso de que necesitemos tener un entorno para ejecutar aplicaciones de otras versiones de nuestra actual Ubuntu o si necesitamos instalar herramientas de desarrollo sin “ensuciar” el sistema, podemos optar por soluciones complejas de virtualización o por debootstrap y chroot.

Con debootstrap crearemos un sistema base Ubuntu en un directorio de nuestro sistema de ficheros, primero tendremos que descargarnos la última versión del repositorio Ubuntu, por ejemplo:

wget http://archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.10ubuntu1~intrepid1_all.deb
sudo dpkg -i debootstrap_1.0.10ubuntu1~intrepid1_all.deb

Y a continuación preparamos el directorio:

sudo apt-get install debootstrap
sudo mkdir -p /var/chroot/intrepid/
sudo debootstrap --arch i386 intrepid  /var/chroot/intrepid/ http://archive.ubuntu.com/ubuntu/

En este ejemplo, en ‘/var/chroot/intrepid/’ tendremos instalado una Ubuntu mínima en su versión 8.10 (Intrepid Ibex). Para trabajar dentro de ella, con el usuario root podemos hacer un chroot:

xhost +localhost
sudo mount -o /dev /var/chroot/intrepid/dev/
sudo mount -o /proc /var/chroot/intrepid/proc/
sudo chroot /var/chroot/intrepid/ /bin/bash

La primera línea únicamente es necesaria si estamos en las X.org y vamos a ejecutar algún programa gráfico dentro del chroot. Los mount’s hacen que los directorios especiales /dev y /proc se encuentren duplicados dentro del chroot. Finalmente, el comando chroot cambia nuestra raiz y partir de ese instante en esa terminal la raiz del sistema ‘/’, corresponderá realmente a ‘/var/chroot/intrepid/’.

En consecuencia, ahora podremos cambiar ‘/etc/apt/sources.list’, actualizar el listado de aplicaciones con ‘apt-get update’ e instalar aquello que necesitemos sin realizar ningún cambio sobre el sistema real (todos los cambios solo tienen efecto dentro de ‘/var/chroot/intrepid/’).

Por otra parte, si necesitamos que los usuarios puedan hacer chroot podemos utilizar schroot: schroot – chroot for any users. Más trucos en el wiki de Ubuntu.

Ubuntu 8.10 (Intrepid Ibex) no soporta Xen

Recientemente he hecho una migración a Ubuntu 8.10 de un servidor con máquinas virtualizadas mediante la tecnología Xen, sin saber que esta última versión de ubuntu no dispone de un kernel preparado como contenedor Xen. Por lo visto Ubuntu se ha decantado definitivamente por KVM, con el inconveniente de que para poder utilizar esa tecnología necesitamos disponer de un procesador con extensiones de virtualización (mi equipo no dispone).

Después de realizar la actualización, intenté hacer un downgrade (desactualización) sin éxito y después de bastantes horas acabé reinstalando el sistema. De este incidente saco varias conclusiones:

  • No realizar actualizaciones sin antes asegurarte de que no existen incompatibilidades. En mi caso, aunque hice una búsqueda rápida no encontré ninguna referencia donde explicasen claramente que a partir de la 8.10 el soporte Xen había sido discontinuado completamente.
  • Disponer de un entorno de pre-producción para probar todo tipo de actualizaciones. Obviamente, en mi caso es irrelevante porque no hay ningún impacto si me quedo sin servidor unos días o semanas. En una organización el impacto podría haber sido desastroso en términos económicos, reputación, etc.
  • Las copias de seguridad me han permitido reinstalar el sistema en un tiempo récord. En mi caso ha sido suficiente con guardar todos los directorios con configuraciones, datos dinámicos (BBDD, webs, ficheros de cacti/nagios/etc.) y los paquetes instalados en el sistema (dpkg –get-selections).
  • Si bien hay que considerar los posibles problemas de seguridad derivados de la virtualización, las máquinas (que habitualmente estan contenidas en unos pocos ficheros) son extremadamente fáciles de copiar y por tanto, de restaurar intactas.
  • Valora los proveedores que ofrece acceso al servidor por KVM (Keyboard Video Mouse), perfecto cuando el sistema no arranca y necesitas acceder a la máquina como si estuvieses delante.

Securización de un sistema Ubuntu (GNU/Linux)

Últimamente he escrito varios posts sobre estándares y aspectos más estratégicos de negocio e IT, como por ejemplo:

Es habitual escuchar críticas a este tipo de enfoque más estratégico, aludiendo al hecho de que se habla y teoriza mucho pero no se concreta nada. En este nuevo artículo, en el que ha colaborado Raúl Gómez (experto en seguridad técnica), se plasman de forma técnica muchas de las ideas de buena gestión estratégica IT o de negocio.

Vamos a ver cómo podemos montar un servidor con Ubuntu Linux que cumpla mínimamente con las buenas prácticas de seguridad:

  • Efectuar una configuración segura
  • Establecer una política de contraseñas
  • Utilizar herramientas para la gestión de usuarios
  • Proteger los servicios de red
  • Garantizar la trazabilidad
  • Proporcionar herramientas de monitorización en tiempo real e histórica para facilitar proyecciones de futuras necesidades
  • Establecer política de copias de seguridad
  • Efectuar tests de stress del sistema

Y es que en definitiva el software libre, por más libre y abierto que sea, no tiene porque ser seguro a no ser que se establezca una configuración adecuada y alineada con las políticas/normativas/procedimientos de la organización.
Continue reading Securización de un sistema Ubuntu (GNU/Linux)

Servidor Ubuntu con soporte de virtualización Xen

Veamos como podemos configurar un servidor Ubuntu como plataforma de virtualización mediante el uso de Xen. En primer lugar debemos instalar un kernel con soporte Xen:

apt-get install ubuntu-xen-server
mkdir /home/xen/

Nos aseguramos que las opciones de configuración de grub sean correctas en ‘/boot/grub/menu.lst’ y que el kernel con soporte Xen es el que arranca por defecto. A continuación reiniciamos:

reboot

En el siguiente inicio del sistema podemos comprobar que Xen esta corriendo si se ejecuta correctamente el siguiente comando:
Continue reading Servidor Ubuntu con soporte de virtualización Xen

Máquina virtual Xen con servicio web Apache / Windows Vista, problema de conexión lenta

Tengo montado un servidor con soporte Xen, donde he virtualizado un servidor web con Apache. Desde hace un par de días me he dado cuenta que cuando intento acceder a la web usando como cliente Windows (indistintamente del navegador), la conexión era terriblemente lenta, mientras que desde un GNU/Linux la web me cargaba sin problemas.

Llevo casi 2 días obsesionado por ver que era lo que ocurría, el esquema virtualizado es el siguiente:

Internet < ==> | [Host real] ----> redirige puerto 80 ---> [Guest virtualizado] |

En la configuración del servidor securicé el sistema cambiando parámetros del kernel (p.ej. Syn cookies), realizando hardening de Apache, configurando el firewall con iptables, estableciendo QoS, etc… Me he pasado horas cambiando toda esa configuración para determinar el origen del problema.
Continue reading Máquina virtual Xen con servicio web Apache / Windows Vista, problema de conexión lenta

Lynis, herramienta de auditoría de seguridad para UNIX (Linux, BSD, Solaris, …)

Hace unos meses escribí una pequeña referencia a un par de herramientas que nos permitían comprobar si nuestro sistema Linux tenia oculto algun rootkit. Podemos complementar esas herramienta con Lynis, la cual realiza diversas comprobaciones en el sistema para informar de posibles debilidades de configuración, como por ejemplo:

  1. Gestor de arranque protegido por contraseña
  2. Kernel actualizado
  3. Usuarios con uid 0 (p.ej. root)
  4. Política de contraseñas
  5. Firewall
  6. Etc…

A modo de ejemplo:

  Warnings:
  ----------------------------
   - [19:23:40] Warning: No password set on GRUB bootloader [test:BOOT-5121] [impact:M]
   - [19:24:04] Warning: grpck binary found errors in one or more group files [test:AUTH-9216] [impact:M]
   - [19:24:48] Warning: iptables module(s) loaded, but no rules active [test:FIRE-4512] [impact:L]
   - [19:25:04] Warning: No NTP daemon or client found [test:TIME-3104] [impact:M]

El detalle del análisis se puede localizar en el fichero ‘/var/log/lynis.log’. Si buscamos por “Suggestion” en el log podremos identificar las sugerencias que Lynis realiza para mejorar la seguridad de la configuración del sistema.

En definitiva, Lynis es una herramienta que nos ayuda a identificar mejoras en el sistema (no realiza modificaciones/hardening sobre el sistema como Bastille) y nos puede resultar de gran utilidad tanto para auditorías UNIX como para la implantación de sistemas seguros.

OpenDNS, servicio de resoluciones de dominio

Acabo de descubrir la existencia del servicio OpenDNS. Si utilizas sus servidores:

$ cat /etc/resolv.conf
nameserver 208.67.222.222
nameserver 208.67.220.220

Vamos a poder ver estadísticas de las peticiones que realicemos desde nuestro/a ordenador/red o incluso evitar que determinados dominios sean resueltos. Para ello OpenDNS requiere saber cual es la IP de nuestro sistema, en caso de ser estática la podemos indicar directamente en su web al registrarnos, por el contrario, si es dinámica usaremos DNSomatic:

sudo apt-get install inadyn

Y editamos el fichero /etc/inadyn.conf:

--username YOURUSERNAME
--password YOURPASSWORD
--alias all.dnsomatic.com
--dyndns_server_name updates.dnsomatic.com
--dyndns_server_url /nic/update?

Puede resultarnos útil o curioso implantar OpenDNS como nuestro servidor DNS principal, no obstante siempre hay que valorar si merece la pena ceder el registro de esta información a un proveedor diferente a nuestro ISP.

Sincronizando Google Calendar (Mozilla Sunbird, Outlook, Evolution)

A partir del artículo sobre la gestión del tiempo/tareas (GTD, Getting Things Done) he recibido diversos comentarios por correo sobre la sincronización de calendarios con Google Calendar.

Personalmente he probado la sincronización con Microsoft Outlook (Windows), Mozilla Sunbird (Windows & Linux) y Novell Evolution (Linux).
Continue reading Sincronizando Google Calendar (Mozilla Sunbird, Outlook, Evolution)