martes, 11 de marzo de 2008

Utilizando xinetd para levantar el túnel SSL 'on demand'

Como vimos en la entrada anterior, una de las opciones para evitarnos crear el túnel SSL a mano cada vez que queremos arrancar KNode es utilizar xinetd para que escuche el puerto local al que se conecta KNode, y cuando detecta una conexión entrante (proveniente de KNode) forkee un stunnel para atenderla.

Para hacer esto, creamos el archivo /etc/xinet.d/knode-ssl con el siguiente contenido:

# Begin /etc/xinetd.d/knode-ssl
# default: on
# SSL Tunnel para KNode

service knode-ssl
{
    port = PUERTO_LOCAL
    socket_type = stream
    protocol = tcp
    wait = no
    disable = no
    user = root
    only_from = 127.0.0.1
    server = /usr/bin/stunnel
    server_args = -c -r HOST_REMOTO:PUERTO_REMOTO
}

# End /etc/xinetd.d/knode-ssl



Con esto indicamos a xinetd el proceso a forkear (y los parámetros) para atender la conexión entrante, que queremos que en principio sólo sea originada en la propia PC. Vale notar que a diferencia que con la ejecución manual del túnel, no se utiliza el parámetro -d PUERTO_LOCAL dado que la conexión ya fue aceptada por xinetd, y cuando stunnel se ejecute pasará directamente a atenderla.

Luego debemos agregar la siguiente línea al final de /etc/services, especificando el mapeo entre el identificador utilizado en la configuración de xinetd y el puerto y tipo de protocolo del servicio de internet a configurar:

knode-ssl LOCAL_PORT/tcp



Por último le enviamos una señal a xinetd para que recargue el archivo de configuración mediante:

sudo killall -HUP xinetd



Cualquier salida de error que esto pueda provocar (por ejemplo por un mal formato del archivo knode-ssl) se puede ver en /var/log/syslog.

De esta manera es suficiente con ejecutar KNode para lograr una conexión SSL con el servidor de noticias utilizado.

Salú!

No hay comentarios: