viernes, marzo 30, 2012

Probando el IDS+IPS

Ya tengo algo funcional de la pruebas con un IDS1 (snort) + IPS2 (guardian) que fortifique la seguridad del equipo WoL casero. Todo lo he hecho en una máquina virtual, aunque ahora le dare caña para ver el resultado con pocos recursos (RAM de 128 y 256 MB, disco duro de 1 y 4 GB) intentado aproximarme lo más posible a lo que me encontraré en la placa Alix/Wrap. El sistema se compone de lo siguiente:
  • snort. Analiza el tráfico y crea las alarmas (es el IDS).
  • mysql. Guarda las alarmas.
  • base. Es la aplicación que permite ver las alarmas que detecta snort consultando la base de datos mysql. Es una aplicación que corre bajo apache con php.
  • oinkmaster. Es el actualizador de las reglas de detección de snort.
  • guardian. Es quien detecta los ataques (en funcion de las alertas de snort) y pone/quita las reglas del firewall (es el IPS).
Tengo que depurar algunos pasos antes de documentar el proceso -las actualización de reglas con oinkmaster, la configuración del fichero de log de snort para que lo lea guardian y la instalación de las daemonstools por si snort/guardian caen-. 

También surgen dos problemas adicionales. En las placas Alix/Wrap, el disco duro no existe como tal, es una tarjeta de memoría de tipo Compact Flash, en las cuales no se puede abusar de las escrituras.

He leído que tienen una vida media de 200K operaciones de escritura por bloque, a partir del cual empiezan a fallar, por ese motivo los sistemas operativos embebidos que se instalan sobre estas placas implementan los directorios /var/ y /tmp como sistemas de ficheros temporales en memoria. Con lo que se agraba el segundo problema, al disponer de poca memoria RAM, si encima hacemos que varios directorios estén en memoria, tendremos menos memoria final para las aplicaciones. Un gran dilema.

1 Intrusion Detection System
2 Intrusion Prevention System

lunes, marzo 26, 2012

Upgrade veloz

Descargados 599 MB en 1min. 35seg. (6274 kB/s)                                 
Leyendo lista de cambios... Hecho.
Los modems de 14400 bps quedaron muy lejos.

domingo, marzo 25, 2012

El signo de los tiempos

Llevaba tiempo queriendo hacer esta foto.


viernes, marzo 23, 2012

Desestimado el Port Knocking

En un hueco de tiempo puse en marcha el servicio knockd (hace las funciones de Port Knocking) para mejorar algo la seguridad de la solución WoL casera. Quería evitar los escaneos del personal con mucho tiempo libre que se dedican a buscar por internet servicios SSH (y similares) para tratar de romperlos por fuerza bruta probando miles de contraseñas o buscando alguna vulnerabilidad.

Después de instalar el servicio y configurar la secuencia de puertos que habilitan el acceso al servicio 'protegido' me di cuenta de que es una soberana estupidez. Es como si en la puerta de casa, cambias la posición de la cerradura y la pones arriba del todo, a dos metros y medio. Cada vez que quieres abrir la puerta de casa tienes que echar mano de una silla o una escalera para poder llegar a la cerradura y meter tu llave (login y password). La escalera hace la función de port knocking.

Lo que se debe hacer no es poner un port knocking, lo correcto es habilitar un IDS, que detecta que un fulano,  que se aburre mucho, ha dejado un equipo realizando infinidad de intentos de acceso a un servicio de casa en un periodo de tiempo relativamente corto. Pues cuando se detecte eso por el IDS, entonces se levanta un regla del firewall que le bloquee el acceso hasta nueva orden (por un tiempo establecido).

El problema estriba en el ajuste de esas reglas (reglas de detección y reglas de reacción), porque pueden tener consecuencias desagradables (falsos positivos) o que no detecten correctamente los intentos de los intrusos. Requiere un poco de más inteligencia, que una secuencia de puertos elegidos al azar.

Me pregunto si la placa Wrap 2E.1 tendrá potencia suficiente para aguantar snort y oinkmaster. De lo contrario tendré que utilizar la solución de la placa Alix 3D2, que tiene algo maś de potencia de CPU y memoria RAM, aunque tampoco estoy seguro de que pueda aguantar un snort corriendo. Además, a partir de ese momento, el tráfico de los equipos protegidos pasará por el mini-pc.

En el caso de que no puede aguantar la carga, pongo el snort en el equipo de sobremesa. Cuando esté encendido se dedicará a protegerse a sí mismo y cuando esté apagado, no será necesario que se proteja. En ambos casos estaré entretenido mientras lo hago funcionar.

domingo, marzo 18, 2012

Activado el subversión casero

Con los servicios WoL remotos del servidor de casa operativos, faltaba poner algo de chicha. ¿De que sirve disponer del equipo de casa de forma remota sin agregarle servicios que te proporcionen acceso a tus datos? 

El primero de ellos ha sido un subversión del código de tus proyectos. En muchas ocasiones me encuentro sincronizando versiones entre casa y el trabajo o reenviándolas por correo, mejor disponer de tu repositorio subversión que te haga el trabajo duro.

La documentación que circula por internet para disponer de tu propio repositorio y publicarlo mediante un apache es muy completa y los pasos a dar de forma resumida son los siguientes:
  1. Instalar servicios locales subversión.
  2. Crear repositorio y hacer tu primer commit con la inicialización del repositorio con branches, tags y trunk.
  3. Instalar módulos authz_svn y dav_svn para apache.
  4. Configurar directorio de publicación, permisos de acceso y usuarios webdav para el repositorio.
  5. Configurar permisos del repositorio para el usuario que ejecuta apache para que sea el propietario.
  6. Reiniciar apache.
En el paso 4, he tenido que tener en cuenta que el servidor web no es accesible directamente desde internet, sino que se accede mediante directivas mod_proxy desde otro servidor (a traves del path /sobremesa/ en el equipo que hace de proxy inverso), con lo que hay que meter en la ruta de acceso http al subversion. De tal forma que para acceder desde el exterior queda como /sobremesa/svn/proyecto. Desde la red de casa también queda igual.

sábado, marzo 17, 2012

Pintando wh40k

Ibamos a pasar el día en el parque del Alamillo pero el tiempo nublado nos hizo desistir, quedándonos en casa. Así que viendo que tenía la tarde por delante (las sesiones de roles semanales se han suspendido por diferentes ausencias durante tres semanas) aproveché el tiempo 'libre' para dejar en su montaje final al profanador del caos. Una vez terminado, le he dado una capa de imprimación, extendiéndola a los marines y motoristas del caos. Aún tengo unos Berseker de Khorne y una unidad de Rapaxes por pintar, además de un principe demonio (la joya de la corona junto con el profanador) por montar.

Cuando compré las figuritas de Warhammer 40000 pensé en ir despacito, pero me he colado, se han pegado tres años en sus respectivas cajas.

El guarro pervertido y la Sisi

Tendiendo esta mañana me acorde de un cartel que puso una vecina en la puerta de entrada al edificio donde vivía anteriormente. En el cartel denunciaba el robo de algunas prendas que había tendido en la azotea. Lo que más le dolía era que el ladrón no tuviera ningún reparo en quitarle sus bragas, tachándole de guarro y pervertido.

A raíz de la advertencia, mantuve cuidado con mis prendas. aunque lo que mas me preocupó fue que me quitaran mis babuchas Homer Simpson, las cuales nunca dejé en el tendedero de la azotea, dejándolas secar en la Sisi1 que teníamos en casa.

Por cierto, el cartel tuvo efecto, porque nunca más se supo de posteriores robos.

1 Desconozco porqué le han puesto este nombre a los tendederos portátiles. ¿Tendrá algo que ver con la princesa de los austrias? Temo que la pregunta no tenga respuesta.

martes, marzo 13, 2012

Motivos para ir a la huelga

Por un hilo del grupo de correo de la RLT de mi empresa, empezamos a hablar del tema de la huelga. Algunas de las razones que se esgrimen es la coherencia y la lealtad. La mayoría de nosotros somos delegados por los sindicatos que han convocado la huelga, así que es lógico que la secundemos.

Eso puede parecer bien y correcto, pero no es lo importante. Con ese argumento no vamos a ninguna parte, ni vamos a hacer que el resto de nuestra gente apoye la huelga.

El motivo es que por una crisis que no hay quien la entienda y que se basa en un despilfarramiento en las administraciones públicas (por el que pocos han ido a la cárcel) que gestionan el dinero de nuestros impuestos y en una estafa piramidal que vino en forma de hipotecas y ladrillos. Por esta crisis nos recortan los derechos por los que lucharon nuestros padres y abuelos. Y no es el primer recorte que nos hacen. Esta reforma, realizada por un partido político de signo diferente, hace 'buena' la que nos aplicó Zapatero hace un año y medio, de signo supuestamente contrario.

Y porque si no protesto por mis derechos, ningún sindicato va a poder defenderlos. Ni bien ni mal, sencillamente pensaran que no nos importa mientras que en la tele siga saliendo la Mercedes Milá en Gran Hermano o la selección española gane otra eurocopa.

Es más, no es una huelga contra la empresa en la que trabajo. Es contra unas leyes que no son justas y que aprovechando que el Pisuerga pasa por Valladolid, nos la han querido imponer por el bien de los mercados. Me dicen que tengo que joderme y no me da la puta gana.

Cazado Radio Wall of Sound

Llevaba tiempo sin poder averiguar el título de una canción que escuchaba en la radio del coche pero hoy por fin he podido localizarla. Es la canción Radio Wall of Sound de Slade.

lunes, marzo 12, 2012

Retomado Con la hierba como almohada

Ayer por la noche, al no poder dormirme, retome la lectura del segundo libro de las leyendas de los Otori -Con la hierba como almohada- y conseguí sobrepasar los capítulos iniciales, volviendo a engancharme como hizo el primer libro.

VPN casera con pptpd

A causa de la petición de un compañero en la que me pidio algo relacionado con montar un servidor VPN, me puse a trastear en casa para disponer de mi propio servidor VPN. Tener una VPN en casa me permite que equipos que están en el exterior, se puedan conectar a la red local, tomando un ip de ella (o de otra red pero con las rutas necesarias para comunicarse entre sí). En situaciones normales, este tipo de cosas no las he necesitado, siempre me he servido de los túneles SSH que son la navaja suiza de la comunicaciones.

Mirando el estado actual del arte1, hay varias formas de montar la VPN: pptp, l2tp y openvpn. Como mis requerimiento de seguridad no son elevados, sino que simplemente quiero algo que funcione rapidamente sin complicaciones, me decanto por la primera de ellas, pptp.

Consideraciones previas:
  • Rango de la red local 192.168.1.1/24
  • En la red hay un rango ofrecido por DHCP 192.168.1.100-199
  • El rango para los equipos que van a entrar por PPTP sera el 192.168.1.200-2452
  • IP del servidor PPTP 192.168.1.97
  • Puerta de enlace 192.168.1.1
  • Servidor dns 192.168.1.1
Como en todo este tipo de cosas, lo primera que se hace es instalar el demonio que va a prestar el servicio. Con apt-get install pptpd tenemos lo necesario para echarlo a andar. Sólo queda retocar la configuración y añadir algunos ajustes adicionales.

Editamos el fichero de configuracion /etc/pptpd.conf.
ppp /usr/sbin/pppd
option /etc/ppp/pptpd-options
debug
localip 192.168.1.97
remoteip 192.168.1.200-245
La opción localip es la ip que tiene el servidor donde va a arrancar el servicio pptpd. La opción remoteip define el rango de direcciones que va a entregar el demonio a los clientes cuando se conecten. Si vemos necesario, activamos la depuración para ver luego todo el proceso de login de los usuarios vpn (en /var/log/daemon.log y /var/log/messages).

El siguiente paso es editar el fichero de configuracion de opciones /etc/ppp/pptpd-options
name debian-wheezy-001
require-mschap-v2
require-mppe-128
ms-dns 192.168.1.1
proxyarp
defaultroute
nodefaultroute
debug
lock
La duda más importante que tengo aqui es relativa al parametro defaultroute, las guias que he leido incluyen la opción contraria (nodefaultroute) pero hasta que lo cambie no funcionó la conexión.

El último aspecto a retocar es la configuración de los usuarios que se encuentra en el fichero /etc/ppp/chap-secrets.

# client server secret IP addresses
usuariovpn1 debian-wheezy-001 claveusuariovpn1 192.168.1.200
Después de reiniciar el servicio pptpd, conseguí que los usuarios se logaran, pero no habia forma de que estos pudieran ver el resto de la red, aunque desde el servidor vpn si que lograba hacerle un ping. Me faltaba un detalle que había visto en algunas partes, permitir el ip_forward.
$ sysctl -w net.ipv4.ip_forward=1
Con esto conseguí que el cliente usuariovpn1, con ip 192.168.1.200 se viera en la red y pudiera acceder al resto de equipos de la misma (y viceversa). Si la opción net_ipv4.ip_forward la quiero dejar permanenten en el arranque, edito el fichero /etc/sysctlf.conf para incluirla.

El último paso a dar es la apertura de puertos en el router. Se debe abrir en el router el puerto del demonio pptpd (tcp/1723) y redirigirlo a la ip del servidor vpn (192.168.1.97 en este caso).

Un aspecto a modificar es el hecho de seleccionar la red 192.168. No es muy acertado, debido a que muchos clientes pueden conectarse mediante una conexión por wifi de su red local, y si la wifi suele estar configurada con la misma subred que la mía, con lo que si tenemos un cliente de la red 192.168, no se podrá comunicarse correctamente (no se puede tener la misma red en ambos extremos). Es mejor eligir otra (una 10.X.X.X) y agregar las rutas necesarias.

La duda que tengo con los parámetros defaultroute/nodefaultroute la aclararé pronto. Ha sido aclarada, es mejor poner nodefaultroute. El que no me funcionara se debe a que en mi prueba pasé por el alto que aún estaba sin configurar el parámetro del net.ipv4.ip_forward.
1 Me encanta esta frase.
2 Esto se demostrara más adelante que puede traer inconvenientes.

sábado, marzo 10, 2012

Prototipo probado

Esta noche he realiza una instalación del mini-pc, montando todo el software necesario (apache, php y mod_proxy), aisgnándole una ip fija y reconfigurando el puerto 80 del router para que las peticiones web se dirijan a su ip.

Me ha dando tiempo a hacer la prueba, apagando el pc de sobremesa, conectando el movil a internet mediante la 3G y accediendo a la página de wakeonlan del minipc que lanza el comando para que se encienda el equipo de sobremesa.

Habia algo que pasé por alto en la configuración del mod_proxy. Comentar las directivas Deny,Allow que por defecto estaban en rechazar todo y no dejar acceder a nadie, generando un error de permiso denegado cuando queria acceder a la url del script wakeonlan.php, pero por lo demás, un éxito. Este fin de semana dejaré el equipo alixwrap en su ubicación definitiva.

2 Aún no le he dado nombre específico.

viernes, marzo 09, 2012

Chronicle en los cines de Sevilla Este

Me ha gustado Chronicle. La he visto en los cines del centro comercial de al lado de casa, que hasta ahora no había visitado. Para ver una película seguia yendo a Camas o los cines de Plaza de Armas. Hay costumbres que cuestan cambiar.

miércoles, marzo 07, 2012

Cajas pintadas

Así quedan después de aplicar la pintura

y así eran sin pintar
El resultado final hasta parece profesional.

lunes, marzo 05, 2012

Paint it black

Como la canción de los Rolling, las cajas del proyecto casero WOL las estoy pintando de negro. Primero hice una prueba de pintarlas en la calle durante el fin de semana, pero surgieron dos problemas inesperados. El primero motivado por el viento y que éste arrastra partículas de tierra que se adhieren a la capa de pintura recién aplicada (estoy utilizando un bote de spray con pintura negro del caos). El segundo problema es el tiempo perdido por la espera. Mientras que se secaba la caja, no podía irme, impidiendo hacer otras cosas.

Hoy he vuelto a darle otra mano de pintura, pero en el trastero, acondicionando antes con cartones las paredes y el suelo para evitar mancharlas. Después de pintar las cajas, las he dejado que se sequen tranquilamente. Mañana veré el resultado.

Welcome to 6.002x!

Hace un par de semanas me apunté a uno de los cursos online del mit y hoy han empezado las clases. Curioso esto de asistir de forma online a un curso de circuitos y electrónica.

viernes, marzo 02, 2012

La sustituta

Cuando me robaron la bici me compre otra bicicleta. No lo compre porque me gustara, simplemente quería volver a disfrutar de montarme en bici, quería volver a disfrutar de las sensaciones de las que fui privado con el robo.

El problema es que la bici sustituta nunca lleno el vacío de la anterior. Siempre fue una bici sustituta. Durante años estuvo arrumbada en un pasillo de la casa de una amiga o en el trastero o en el bicicletero que instalaron dentro del patio de vecinos donde vivo ahora, sin que la cogiera para dar una vuelta en ella. Una vez le arregle un pinchazo, incluso llegue a comprarle un timbre y dos candados. Pero nunca fue lo mismo.

Hace un par de semanas, que estaba pensando en si la llevaba a arreglar las llantas y que le engrasaran un poco la cadena y los piñones del cambio, decidí dársela a un compañero de trabajo. Seguro que él la cuida mejor, ya que no hubo feeling entre nosotros. Nuestra relación empezó con mal pie.

Proxy inverso para el wol casero

Un problema que se me presentaba en el proyecto WOL casero era el de como acceder desde el exterior a los servicios http/ssh que corren en el equipo de sobremesa, conjuntamente con los servicios http/ssh que estarán activos en  el equipo pequeño que realizará el wakeonlan del de sobremesa y utilizando los mismos puertos.

El equipo pequeño (alixwrap) dispondrá de una ip fija dentro del rango 192.168.1.0/24 (por ejemplo la 192.168.1.98) y tendrá una redirección por nat del puerto 80 de la ip publica del router hacia su puerto 80, en donde estará levantado un apache (httpd). En este apache habrá una aplicación en PHP que hará el wakeonlan del equipo de sobremesa.

El equipo de sobremesa (sobremesa) tendrá otra ip fija del rango 192.168.1.0/24 (la 192.168.1.99) y dispone de dos servicios levantados, uno en el puerto 80 (httpd) y otro en el puerto 22 (sshd). Al primero, que no tendrá un nat, no se podrá acceder (en principio). Al segundo, sí que tendra un nat, desde el puerto 443 del router hacia el puerto 22.

Para acceder al servidor web del equipo de sobremesa se monta un proxy inverso en el servidor web que corre en el equipo alixwrap, de tal forma, que todas las peticiones que le lleguen al path "/sobremesa/*" serán redirigidas hacia la ip del equipo de sobremesa, conservando el path completo.

Sólo queda activar el proxy en el apache, habilitando los modulos mod_proxy y mod_proxy_http
$ a2enmod proxy
$ a2enmod proxy_http
y en /etc/apache2/conf.d/ creamos un fichero llamado proxy_sobremesa.conf con el siguiente contenido
ProxyPass /sobremesa/ http://192.168.1.99/sobremesa/
ProxyPassReverse /sobremesa/ http://192.168.1.99/sobremesa/

Y todos los servicios que sean accesibles desde el exterior, deben estar dentro del path "/sobremesa/" en el apache, como el subversión o la aplicación que muestra la webcam.

Alguien me dirá que podía abrir otros puertos en el router y agregar otros nat de puertos para acceder a los servicios de cada uno de los pcs, evitando la necesidad de disponer de un proxy, pero necesito que los servicios estén corriendo en el puerto 80/443 al estar considerados estos puertos de navegación libre en muchas redes corporativas, saltándome sus reglas de seguridad cómodamente.

A falta de hacer el script en php para invocar el wakeonlan y añadirle seguridad (https para los servidores web), los detalles de implementación del wol casero remoto están superados. Creo que sólo me falta pintar la caja de negro para que no se vea en el salón.