28 de octubre de 2010

Acceso seguro para administración remota - OpenSSH

El acceso remoto a los equipos informáticos no es nada nuevo, desde los antiguos tablones de anuncios a los que los usuarios accedian mediante telnet en modo consola hasta los nuevos medios de acceso remoto seguro. Debido a que telnet no cifra las conexiones, este protocolo actualmente está en decadencia y de desaconseja su uso para utilizar otras soluciones como SSH.

En este caso, voy a describir la instalación del servicio SSH en una Debian Lenny sin entorno gráfico utilizando el paquete OpenSSH de los repositorios Debian. La instalación la voy a realizar en mi lab particular: una máquina virtual en VMWare. La configuración por defecto se puede considerar minimamente segura pero para dotar de mayor seguridad fortificaremos el servicio describiendo las opciones que utilizaremos.

Secure Shell  (SSH) nacio en 1995 en la Universidad de Tegnológica de Helsinki, la primera versión surgio para sustituir otros protocolos de acceso remoto inseguros como rlogin, telnet o rsh que no cifran las conexiones y son susceptibles a ataques de sniffing. Ha sufrido varias revisiones debido a algunas vulnerabilidades descubiertas a lo largo de su historia con las que acceder como administrador a un sistema. Actualmente, la segunda versión del protocolo fue definido por el IETF en 2006 fortificandolo y añadiendo nuevas funcionalidades.

Inicialmente actualizo la lista de paquetes y los paquetes obsoletos

aptitude update
aptitude safe-upgrade

Una vez actualizado el equipo, paso a instalar el servidor de OpenSSH con:

aptitude install openssh-server

que nos instalará los siguientes paquetes como dependencias: openssh-client y openssh-blacklist. Podremos instalar adicionalmente openssh-blacklist-extra que añadir a la lista de claves no predeterminadas.

Esto nos creará el directorio /etc/ssh y editamos el archivo de configuración del demonio /etc/ssh/sshd_config

Port 22
Aunque algunas personas proponen cambiar el puerto para evitar los ataques automatizados que circulan por la red, lo dejaré por defecto para este tutorial. Para equipos en producción, habria que considerarlo.

Protocol 2
Por defecto, OpenSSH da soporte a las dos versiones del protocolo (1,2). Para evitar los ataque contra la versión 1, es imprescindible forzar al servidor para que utilice la segunda versión del protocolo.

PermirRootLogin no
Por defecto, se permite el acceso root al sistema (yes). Para evitar ataques automatizados contra dicho usuario con el que consigan acceder con privilegios de administrador, se deniega el acceso a dicho usuario.

ListenAddress X.X.X.X, Y.Y.Y.Y...
Por defecto el servidor escucha en todas las direcciones configuradas en el equipo (all). Para evitar accesos desde zonas no permitidas, se fuerza la dirección IP o direcciones en las que el servidor podrá recibir peticiones.

PermitEmptyPassword no
Por defecto no se permiten las contraseñas nulas (no). Este valor ha de mantenerse siempre para evitar accesos no permitidos al sistema.

AllowUsers user0, user1, user2@Z.Z.Z.Z
Por defecto se permite el acceso a todos los usuarios del sistema (all). Se pueden listar los usuarios validos incluyendo el host desde donde se accede.

MaxAuthTries 3
Por defecto se permiten seis intentos fallidos (6). Es recomendable reducir dicho número para intentar que disminuyan los intentos de ataques automatizados.

LoginGraceTime 60
Por defecto, un usuario puede estar dos minutos sin loguearse (120). Es recomendable bajar dicho valor para que las conexiones se cierren si el usuario supera el tiempo.

MaxStartups X
Por defecto se permiten diez conexiones simultáneas antes de autenticarse en el sistema (10). Es recomendable bajar dicho número para evitar los intentos no autorizados y adecuarlo a nuestras necesidades.

X11Forwardng no
Por defecto no se permite el acceso al entorno gráfico del servidor (no). En nuestro caso, el equipo no cuenta con el entorno gráfico instalado; en caso de ser necesario, yo propondría utilizar VNC.


Hasta aqui hemos instalado el servidor y lo hemos fortificado medianamente con las opciones de configuración más comunes. En siguientes entradas seguiremos con la configuración del servidor: reglas IPtables para filtrar las conexiones, certificados de clave pública, monitorización, etc.

Referencias:
Fortificación del servicio SSH (1 y 2)
Man pages - sshd_config

Un saludo, Brixton Cat.

No hay comentarios:

Publicar un comentario

Bienvenid= si quieres dejar un comentario