lunes, abril 16, 2012

La autenticidad de los libros electrónicos

Ahora, con el auge de los libros electrónicos, entreveo a un gran problema, que será explotado por las editoriales para desprestigiar los sitios alternativos desde donde descargamos sus libros.

¿Quién me garantiza que el libro Patatín del autor Patatán es el libro que estoy bajando? ¿Quién me asegura que un energúmeno de turno no le ha dado por intercambiar los nombres de los protagonistas, poniendo el nombre del malo en el del bueno?

A diferencia de lo que podía pasar con los ediciones alternativas de música y vídeo, la modificación de un libro electrónico es muy simple de hacer, ademas de que una mínima modificación puede cambiar toda una obra. Supongo que empezaran a surgir sitios que se dedican a asegurar la integridad y autenticidad de un epub, empleando técnicas de checksum y demases varios, aunque todavía no los he visto.

jueves, abril 12, 2012

Destructor de tostadas

Esta mañana he visto la forma perfecta de destruir una tostada recién hecha sin tener que recurrir a materiales ficticios superheroicos como el adamantium. Sólo tienen que darte una porción de mantequilla congelada en cualquier cafetería que ponga desayunos.

Tú mismo, al intentar esparcir la mantequilla por la tostada, terminas destrozando la miga y traspasando la corteza sin darte cuenta. La mantequilla en ese estado es cuasi indestructible, pudiendo con todo lo que se le ponga por medio.

martes, abril 10, 2012

Teoría optimista

Tengo una teoría que dice que el porcentaje de películas, libros, series y canciones que son buenas, respecto al total de las que se hacen en un año, es del uno por ciento. Aunque me parece que la teoría es demasiado optimista o soy yo, que me estoy volviéndo pesimista.

domingo, abril 08, 2012

Un conclusión reveladora

He llegado a una conclusión reveladora y a la par, desalentadora. George RR Martin (o el puto cabrón amo según sus fans más queridos) tiene terminado los dos libros que le quedan de Canción de Hielo y Fuego, pero no los publica porque los utiliza como rehenes, para evitar que puedan acabar con él.

Imprimación terminada

Como nos vinimos temprano de la playa de la antilla, aproveche la tarde para terminar de darle la capa de imprimación a todo el ejercito. El resultado ha quedado tal como así.




Antes de pasar a la siguiente fase (aplicar las pinturas para definir los detalles) debo solucionar un problema, incrementar el peso de las peanas para evitar que se caigan. Es una cosa que me da mucho coraje.

Mañana en la vuelta a la dura realidad, me evadiré pensando soluciones, creo en el trabajo puedo disponer de algunos recursos.

miércoles, abril 04, 2012

Juntando las piezas de un IDS+IPS

Me voy a saltar toda la teoría previa de los IDS e IPS. Lo que interesa saber es lo siguiente. Usualmente, cuando queremos tener un equipo linux seguro en internet, activamos el firewall iptables con politica por defecto DROP y habrimos unos pocos puertos para las comunicaciones que vienen del exterior y van a utilizar los servicios que nuestra máquina.

De forma simplificada, tal cual esto se hace, nos resulta muy complicado cuando alguien se ha dedicado a atacar el servidor ssh o el servidor ftp en busca de un exploit que permita acceder a la máquina. Tenemos que estar revisando logs, etc. Si tenemos mucho tráfico (muchos logs) esto es inviable.

Es en este momento cuando acude en nuestra ayuda Snort, que es un IDS para linux. Snort no es más que un sniffer de red, monitorizando todo el tráfico que pasa por él. En función de un conjunto de reglas que tiene definidas, va analizando el tráfico y generando alertas de posibles ataques, tráfico sospechoso, etc.

Snort va guardando estas alertas en una base de datos (usualmente MySql), tal forma que posteriormente podemos consultarla con otra aplicación, llamada Base, que es una aplicación escrita en PHP que corre sobre un servidor web como Apache. Base es nuestro panel de control para determinar lo que esta ocurriendo en nuestra red.

Como he dicho antes, Snort utiliza un sistema basado en reglas para saber cuando hay algún tipo de ataque. Puesto que los ataques van evolucionando con el paso del tiempo, necesitamos mantener la base de datos de reglas actualizada. De esa función se encarga Oinkmaster, un script escrito en perl encargado de actualizar las reglas cada cierto tiempo. La frecuencia de ejecución de este script se deja en la crontab del sistema.

Hay varios tipos de conjunto de reglas de snort, las reglas de la comunidad disponibles para todo el mundo y las reglas VRT, que han sido certificadas por el equipo de investigación de vulnerabilidades, disponibles para los usuarios de pago. Estas últimas, están disponibles para los usuarios registrados 30 días después de su publicación para los suscriptores. Si nos registramos en la web de snort, obtendremos el oinkcode necesario para descargar las reglas mediante oinkmaster.

Instalación de Snort (junto con mysql)

El primera paso es instalar snort con soporte de mysql
$ apt-get install snort-mysql
Entre las dependencias, apt-get incluira oinkmaster, las reglas por defecto de la comunidad y las librerias comunes. En la instalación nos pedirá una serie de parámetros para la configuración de snort contra el mysql (servidor de bd, nombre de la bd, usuario y password de acceso) como la interfaz donde snort se pondrá a escuchar los paquetes de red. Si no tenemos mysql, procedemos a instalarlo con
$ apt-get install mysql-server
Si levantamos el demonio y hemos hecho bien las tareas de configuración con la orden /etc/init.d/snort start tendremos nuestro IDS activado. Aunque aún no sabremos que esta ocurriendo salvo que nos peleemos con  el mysql consultemos a pelo en las tablas de alerta.

Será ultil, agregar la siguiente linea al fichero de configuracion de snort, pudiendo consultar su alertas en /var/log/auth.log. Además, esto nos vendrá bien para la parte final (el IPS).
output alert_syslog: LOG_AUTH LOG_ALERT

Instalación de Base (junto con Apache+PHP con soporte de mysql)

Toca el turno de Base (Basic Analysis and Security Engine). A diferencia de snort, lo instalamos desde el comprimido tar.gz. Pero lo primero es preparar el sistema para que se pueda ejecutar. Eso implica instalar Apache con PHP y soporte mysql. También instalamos algunas cosas mas para la generación de graficos como la libreria pear.
$ apt-get install apache2
$ apt-get install libapache2-mod-php5 libphp-adodb php-pear php5-adodb php5-cli php5-common php5-gd php5-mysql
$ pear install Image_Graph
Descargamos y descomprimos el fuente de base en /usr/local/base. Y creamos un enlace simbólico para no tener que ir lidiando con la versión y si cuando actualicemos, solo hay que cambiar el enlace simbólico.
$ cd /usr/local/src
$ wget http://sourceforge.net/projects/secureideas/files/latest/download
$ tar xvfz base-version.tar.gz
$ mv base-version /usr/local/
$ ln -s /usr/local/base-version /usr/local/base
Creamos en el apache, en conf.d, la configuración del directorio y el alias para publicarlo. Añadimos algunas directiva de restricción del acceso a la aplicación. Pese a que base viene con sus medidas de seguridad para entrar en la aplicación, no esta demás esta restricción de acceso. La aplicación solo estará disponible para los equipos de la red local.
Alias /base /usr/local/base

<Directory /usr/local/base>
Options +FollowSymLinks
AllowOverride None
order allow,deny
allow from 192.168. 127.0.0.1

AddType application/x-httpd-php .php

<IfModule mod_php5.c>
php_flag magic_quotes_gpc Off
php_flag short_open_tag On
php_flag register_globals Off
php_flag register_argc_argv On
php_flag track_vars On
# this setting is necessary for some locales
php_value mbstring.func_overload 0
#php_value include_path .
</IfModule>

DirectoryIndex index.php
</Directory>
El siguiente paso será reinicar el apache y lanzar desde el navegador la siguiente url
http://ip-equipo-base/base/setup/
El setup realizará las comprobaciones necesarias y nos pedirá los datos de la base de datos mysql donde guardan la información snort. Seguimos la línea de baldosas amarillas que nos marca el asistente. Uno de esos pasos será la creación de un usuario administrador en la aplicación. Para la generación de los gráficos tenemos que tener bien indicado la ruta (directiva include_path) de includes de PHP para que pueda encontrar la libreria Image_Grapth de pear. La aplicación Base nos lo dirá si no puede encontrarla.

Instalación de Oinkmaster

El último paso para disponer de nuestro el IDS al completo será ir actualizando las reglas de Snort. El paquete oinkmaster ya estará instalado, sino hacemos un apt-get install oinkmaster y lo tendremos disponible al instante. Queda soliticar el oinkcode en la web de snort. Nos registramos en su web y solicitamos el codigo. Luego lo configuramos en el fichero /etc/oinkmaster.conf
url = http://www.snort.org/pub-bin/oinkmaster.cgi/CODIGO/snortrules-snapshot-2920.tar.gz
Es importante descargar el fichero que corresponde a nuestra version. Si tenemos un snort-2.9.2, entonces la url de descarga para el oinkmaster será el snapshot 2920.
$ /usr/sbin/oinkmaster -C /etc/oinkmaster.conf -o /etc/snort/rules/
Las primera actualizaciones de reglas las haremos de forma manual, así comprobamos que no hay nada que falte. A mi me paso que con la actualización de reglas, habia una serie de variables que utilizaban las reglas que no estaban definidas en el snort, con lo que el snort no se levantaba después. Estas variables se definen en el fichero snort.conf.

Después de la acutalización, oinkmaster informará de que reglas a tocado, podemos lanzar un test de la configuración de snort, levantando nosotros el demonio con el parametro -T. Esto nos dará una pista de lo que pudise pasar en el caso de que pasara algo como lo anterior que he dicho.
$ snort -T -c /etc/snort/snort.conf
Si va todo bien, podemos ir pensando en agregar a la crontab la ejecución del oinkmaster y que se lance cada  varios días la actualizacion de reglas (una semana creo que es lo suyo).

Llegados a esta altura de la pelicula, tenemos un IDS operativo. Nuestro Snort esta vigilando el trafico y si consultamos Base nos llevamos muchos sustos al descubrir muchos alarmas, la mayoria de ellas falsos positivos. Snort es facil de instalar, lo dificil es el trabajo de ajuste para eliminar los falsos positivos. Más si cabe cuando avancemos al siguiente paso, activar Guardian, que será nuestro IPS y nos protegera de todo aquello que Snort considera como un problema. Imaginad el problema de bloquearnos a nosotros mismos el acceso o un cliente por no darnos cuenta de que su tráfico era legítimo.

Guardian es una aplicación escrita en perl, que lee los logs de alertas de Snort. Cuando ve una alerta, entonces genera una regla de iptables bloqueando la comunicación con la ip del atacante. Esta regla la deja durante un tiempo X, pasado ese tiempo, lanza la regla de desbloqueo.

Instalación de Guardian

La aplicación Guardian es muy simple. De tan simple que es, hasta asusta. Procedemos a descargarla y a descomprirla tal como hicimos con Base.
$ wget guardian-version.tar.gz
$ tar xvfz guardian-version.tar.gz
$ mv /usr/local/src/guardian-version /usr/local/
$ ln -s /usr/local/guardian-version /usr/local/guardian
Copiamos el fichero de configuración guardian.conf en /etc. Al estar en un linux con iptables, cambiamos los scripts de bloqueo que estan en /usr/local/guardian/ llamados guardian_block.sh y guardian_unblock.sh por los que tenemos en /usr/local/guardian/scripts/iptables_*. Respectando el nombre
$ cp /usr/local/guardian/guardian.conf /etc/guardian.conf
$ cp /usr/local/guardian/scripts/iptables_block.sh /usr/local/guardian/guardian_block.sh
$ cp /usr/local/guardian/scripts/iptables_unblock.sh /usr/local/guardian/guardian_unblock.sh
Añadimos la directiva donde debe mirar las alertas de snort, en el fichero /etc/guardian.conf
AlertFile       /var/log/auth.log
Aquí vemos el sentido de la directiva de configuración que tocamos en el fichero de configuración de snort (output alert_syslog). Sin ese cambio, guardian sería incapaz de ver las alertas de snort y no podría hacer ningún bloqueo.

Para ejecutar guardiamos, tecleamos
$ /usr/local/guardian/guardian.pl -c /etc/guardian.conf &
Si buceamos en el fuente de Guardian, no encontraremos ningun scripts que nos sirva para ejecutarlo como demonio. No hay problema

El toque final viene de la mano de las daemontools, que son un conjunto de utilidades que nos permiten dejar a Guardian siempre en memoria.

Instalacion de las DaemonTools

Como siempre, descargar y decomprimir
$ cd /usr/local/src
$ wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
$ tar xvfz daemontools-0.76.tar.gz
$ cd admin/daemontools-0.76
$ package/install
Aunque la instalación de las DaemonTools es un proceso muy conocido, hay un detalle jodido que suele bloquear al personal. En la compilación no hay incluida una biblioteca, generando un error de compilación. Para solucionar el error tenemos que editar la línea de compilación del compilador utilizada por las daemonstools. Editamos el fichero src/conf-cc y agregamos la libreria errno.h al final de la linea gcc.
-include /usr/include/errno.h
El fichero de run utilizado para levantar guardian por la daemons tools tendria este aspecto (cat /service/guardian/run)

#!/bin/bash
export PATH=$PATH:/usr/local/guardian
/usr/local/guardian/guardian.pl -c /etc/guardian.conf
Sobre Daemonstools me podría extender mucho más, pero lo mejor es acudir a su web http://cr.yp.to/daemontools.html que explican mucho mejor que yo como utilizarlas.


domingo, abril 01, 2012

Bote de pintura acabado

A mitad del proceso de darle la capa de imprimación, el bote se quedo sin pintura. Así que mañana, aprovechando las vacaciones, iré a comprar otro bote que me servirá para terminar el principe demonio, los rapaxes y los bersekers de khorne.

Principe demonio montado

Desde el 17 de enero de 2007 llevaba en su caja y en la tarde de ayer me puse a montarla. Para hacerlo he tenido que emplear masilla y loctite. Al ser de metal, se utiliza la masilla para facilitar que quede bien encajada mientras se seca el loctite.


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.

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.

Cómo utilizar el servicio Secrets Manager para guardar las claves privadas de SSH

Para guardar la clave privada en el servicio Secrets Manager como un secreto en modo texto sin formato, sigue estos pasos Supongamos que la ...