Securizar servicios con stunnel

Hace tiempo me surgio el problema de permitir en un servidor seguro al que solo se podria acceder desde otro servidor puente, hacer modificaciones y cambios, ya sea por ssh o sufir ficheros por ftp a un sitio web.

El servidor seguro solo es accesible desde el servidor puente y queremos que asi lo sea. Si por ejemplo queremos subir un fichero al servidor seguro, tendremos que subirlo primero al servidor puente y desde ahí pasarlo. Pero si queremos hacerlo mediante un script de windows, el cual te sube unos ficheros automaticamente cada hora, pues tendremos un pequeño problema ya que tendremos que operar comandos en dos maquinas diferentes.

Una pequeña solucion (ñapa) es utilizar stunnel.

En el servidor seguro:

el cual tendra abierto el servicio/puerto ftp mediante el paquete vsftp. O para cualquier otro paquete que necesitemos utilizar con stunnel. Arrancaremos el servidor ftp.

1.- Instalar stunnel:

rpm -i stunnel-4.16-20.i586.rpm

Generamos una clave para la comunicacion entre los dos servidores:

openssl req -x509 -newkey rsa:1024 -days 365 -keyout stunnel.pem -out /etc/stunnel/stunnel.pem

2.- editamos /etc/hosts.allow ya que hemos compilado Stunnel con soporte para la libreria “libwrap”. Esto crea un servicio el cual llama al servicio que configuraremos en stunnel.conf:

sslvsftp : ALL : ALLOW

3.- Editamos stunnel.conf, el cual usa el certificado stunnel.pem y el servicio sslvsftp, el cual a su vez acepta conexiones y paquetes de datos desde el puerto 273 (puerto libre en el servidor) y reenvia paquetes descifrados a ftp por el puerto 21. Esto es como una redireccion de firewall, pero actuando como cifrador y descifrador de paquetes:

pid = /etc/stunnel/stunnel.pid

cert = /etc/stunnel/stunnel.pem
client = no
[sslvsftp]
accept = 273
connect = 21

4.- ejecutamos stunnel y nos pide la palabra de paso definida en el certificado stunnel.pem:

firewall:/etc/stunnel # stunnel -start
Enter PEM pass phrase: xxxxxxxxxxxx

En el servidor puente:

1.- Instalar stunnel. Copiamos la clave stunnel.pem del servidor seguro en el directorio /etc/stunnel  del servidor puente

2.- editamos /etc/hosts.allow ya que hemos compilado Stunnel con soporte para la libreria “libwrap”. Esto crea un servicio el cual llama al servicio que configuraremos en stunnel.conf:

sslvsftp : ALL : ALLOW

3.- Editamos stunnel.conf y añadimos lo siguiente (ver que no es la misma configuracion)

pid = /etc/stunnel/stunnel.pid

cert = /etc/stunnel/stunnel.pem
client = yes
[sslvsftp]
accept = 21
connect = 192.168.0.5:273

4.- ejecutamos stunnel y nos pide la palabra de paso definida en el certificado stunnel.pem:

firewall:/etc/stunnel # stunnel
Enter PEM pass phrase: xxxxxxxxxxxx

Bien, todo listo. En el servidor seguro tendremos el servidor ftp y stunnel como servidor, el cual aceptara todas las conexiones al puerto 273 que llegan por stunnel, y lo reenviara al puerto ftp. Este seria el estado de los puertos a la escuha:

tcp        0      0 0.0.0.0:273             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN

Tambien se ve la conexion stunnel desde l servidor puente al servidor seguro:

tcp        0      0 192.168.0.34:273        192.168.0.35:54696      ESTABLISHED

Ahora si desde nuestra maquina nos conectamos al ftp del servidor puente, nos renviara de forma segura al servidor seguro. Esta bien saber los riesgos que esto puede conllevar al usar ftp, pero podriamos tunelizar cualquier otro servicio y utilizar stunnel para securizarlo.

Etiquetas: , ,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: