Secure SSH Server In Ubuntu 14.04

Servidor SSH seguro en Ubuntu 14.04

SSH (Secure Socket Shell) es una interfaz de línea de comandos y un protocolo para obtener acceso seguro a un servidor Linux remoto. Proporciona una comunicación segura y encriptada a través de una red y permite el intercambio de datos a través de un canal seguro entre dos servidores. Es ampliamente utilizado por los administradores de sistemas para controlar la Web y otros tipos de servidores de forma remota. En este artículo, le mostraremos cómo puede proteger su servidor SSH.

Nota: este tutorial asume que el servidor SSH ejecuta Ubuntu 14.04 y la máquina cliente es Linux.

Primeros pasos: instalar SSH

Primero, debe actualizar su sistema e instalar los paquetes necesarios en su sistema.

Para actualizar el sistema e instalar el servidor SSH en la máquina del servidor, ejecute el siguiente comando:

sudo apt-get update
sudo apt-get install openssh-server

Para instalar el cliente SSH en la máquina cliente, ejecute el siguiente comando:

sudo apt-get install openssh-client

Configurar SSH para inicio de sesión sin contraseña

Hay dos métodos diferentes para iniciar sesión en un servidor SSH: uno es la autenticación basada en contraseña y el otro es la autenticación basada en clave. La autenticación de contraseña es un método muy básico que es fácil de usar y descifrar. El uso de la autenticación de contraseña es muy inseguro, especialmente si su usuario usa una contraseña débil. Por otro lado, las claves SSH brindan una forma fácil y segura de iniciar sesión en un servidor remoto, y este método se recomienda para todos los usuarios.

En su máquina cliente, genere claves SSH con el siguiente comando:

cd ~/.ssh
ssh-keygen -t rsa

Simplemente presione la tecla Enter en cada indicación. Esto produce dos archivos: id_rsa.pub (clave pública) e id_rsa (clave privada).

Esto generará algo similar a lo siguiente:

ssh-keygen

En su servidor, cree la siguiente carpeta (si no existe):

De regreso a su máquina cliente, copie el archivo «id_rsa.pub» a su servidor usando el siguiente comando:

scp -P "yourport" ~/.ssh/id_rsa.pub username@serverip:~/.ssh

Cambie «yourport» al número de puerto que usa su servidor SSH (el valor predeterminado es 22) y «serverip» a la dirección IP del servidor.

En su máquina servidor, cambie el nombre del archivo y los permisos de configuración.

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
rm .ssh/id_rsa.pub

Para probar si el método de autenticación basado en claves funciona, intente conectarse a su servidor SSH desde la máquina cliente:

ssh -P "yourport" username@serverip

Si puede conectarse sin ingresar una contraseña, entonces funciona el método de autenticación basado en claves.

Archivo de configuración SSH seguro

El archivo “/etc/ssh/sshd_config” es el archivo de configuración de todo el sistema para SSH que le permite establecer diferentes opciones para mejorar la seguridad de un servidor SSH. La configuración predeterminada en el archivo de configuración es muy insegura, por lo que primero debe editarla y establecer las opciones adecuadas para mejorar la seguridad.

Para editar el archivo “/etc/ssh/sshd_config”, ejecute

sudo nano /etc/ssh/sshd_config

Cambiar puerto de escucha SSH

De manera predeterminada, SSH escucha en el puerto 22. Los atacantes usan escáneres de puertos para ver si un servicio SSH se está ejecutando o no. Se recomienda cambiar el puerto predeterminado.

Para cambiar el puerto predeterminado a 2200, cambie:

a

seguro-ssh-cambiar-número-de-puerto

Solo use el Protocolo 2

La versión 1 del protocolo contiene vulnerabilidades de seguridad. El Protocolo 2 es la entrada predeterminada en Ubuntu.

Cambie la línea que se muestra a continuación:

Limitar el acceso de los usuarios

Es necesario permitir que solo usuarios específicos inicien sesión en SSH. Puede mejorar su seguridad. De forma predeterminada, esta opción no está disponible en el archivo de configuración de SSH.

Para permitir «usuario1» y «usuario2», agregue la siguiente línea:

Para denegar «usuario1 incorrecto» y «usuario2 incorrecto», agregue la siguiente línea:

DenyUsers baduser1 baduser2

Deshabilitar inicio de sesión raíz

No es necesario iniciar sesión como root a través de ssh en una red. Los usuarios normales también pueden usar su o sudo para obtener acceso a nivel raíz. La mayoría de los atacantes intentarán usar el usuario raíz para iniciar sesión. Este es un gran riesgo de seguridad, por lo que se recomienda denegar el inicio de sesión raíz.

Para deshabilitar el inicio de sesión raíz, cambie la línea

PermitRootLogin without-password

a

raíz-permiso-ssh-segura

Ocultar último inicio de sesión

Puede ocultar quién inició sesión por última vez cuando un usuario inicia sesión.

Para esto, cambia la línea.

a

seguro-ssh-último-registro

Restringir la interfaz para iniciar sesión

Por defecto, ssh escuchará en todas las interfaces de red. Si desea permitir que se acepte una conexión SSH desde direcciones IP específicas, puede cambiar la línea

a

ListenAddress 192.168.1.20

dirección segura-ssh-escucha

Deshabilitar autenticación de contraseña

El uso de la autenticación de contraseña es un gran riesgo de seguridad si su usuario usa una contraseña débil. Se recomienda utilizar «claves ssh». Una «clave ssh» puede contener más de 600 caracteres aleatorios y ser difícil de descifrar.

Para esto, cambia la línea.

# PasswordAuthentication yes

a

PasswordAuthentication no

autenticación-contraseña-ssh segura

Deshabilitar archivos .rhosts

Los archivos .rhosts especifican qué usuarios pueden acceder a los comandos r (rsh, rcp, rlogin, etc.) en la máquina local sin contraseña. De manera predeterminada, un archivo .rhosts está deshabilitado; si no, cambie las líneas como se muestra a continuación.

IgnoreRhosts yes
RhostsAuthentication no
RSAAuthentication yes

Deshabilitar la autenticación basada en host

La autenticación basada en host de SSH es más segura que la autenticación .rhosts. Sin embargo, no se recomienda que los anfitriones confíen entre sí. Por defecto, esta opción está deshabilitada.

De lo contrario, cambie la línea que se muestra a continuación.

HostbasedAuthentication no

Establecer un tiempo de espera de gracia de inicio de sesión

El «LoginGraceTime» especifica cuánto tiempo después de una solicitud de conexión esperará el servidor antes de desconectarse. Se recomienda reducirlo a 60 segundos.

Para esto, cambia la línea.

a

seguridad-ssh-login-gracetime

Establecer el máximo de conexiones de inicio

Configurar un número máximo adecuado de conexiones simultáneas al demonio SSH puede ser útil contra un ataque de fuerza bruta.

Para esto, cambia la línea.

a

inicio seguro-ssh-max

Deshabilitar reenvío

Los atacantes utilizan la técnica de reenvío de puertos para tunelizar las conexiones de red a través de una sesión SSH para iniciar sesión en los sistemas. Se recomienda deshabilitar esta opción.

Para esto, cambia la línea.

a

reenvío seguro-ssh-x11

Registrar más información

De forma predeterminada, SSH registra todo. Si desea registrar más información, como intentos fallidos de inicio de sesión. puede cambiar el valor de esto a «VERBOSE».

Para esto, cambia la línea.

a

seguro-ssh-nivel de registro

Deshabilitar contraseñas vacías

Es necesario denegar usuarios con contraseñas vacías en su servidor. Por defecto PermitEmptyPasswords está deshabilitado en Ubuntu.

De lo contrario, cambie la línea que se muestra a continuación.

Establecer el intervalo de tiempo de inactividad

De forma predeterminada, esta opción no está disponible en el archivo de configuración predeterminado de SSH. Se recomienda establecer un tiempo de inactividad adecuado para evitar una sesión ssh desatendida.

Para ello, agregue las siguientes líneas.

ClientAliveInterval 300
ClientAliveCountMax 0

Modo estricto

Esto evitará el uso de directorios de inicio inseguros y permisos de archivos clave. Por defecto, esta opción está habilitada.

Si no, cambie la siguiente línea.

Ahora guarde y salga del archivo /etc/ssh/sshd_config y reinicie el servidor SSH.

SSH seguro usando envoltorios TCP

Un contenedor TCP proporciona control de acceso basado en host a los servicios de red utilizados para filtrar el acceso de red a Internet. Edite su archivo «/etc/hosts.allow» para permitir SSH solo desde 192.168.1.2 y 172.16.23.12.

sudo nano  /etc/hosts.allow

Agregue la siguiente línea:

sshd : 192.168.1.2 172.16.23.12

SSH seguro usando iptables

De forma predeterminada, un servidor SSH solo debe aceptar conexiones desde su LAN u otros sitios remotos. Se recomienda permitir que solo direcciones IP específicas accedan a SSH y bloquear el acceso a SSH a direcciones IP no autorizadas.

Para permitir conexiones SSH solo desde 192.168.1.2, ejecute el siguiente comando:

sudo iptables -A INPUT -p tcp -m state --state NEW --source 192.168.1.2 --dport 2200 -j ACCEPT

Deshabilite la conexión SSH de todos los demás hosts ejecutando el siguiente comando:

sudo iptables -A INPUT -p tcp --dport 2200 -j DROP

Ahora guarde sus nuevas reglas usando el siguiente comando:

sudo iptables-save > /etc/iptables/rules.v4

Conclusión

Las instrucciones anteriores son técnicas muy poderosas para asegurar su servidor SSH. Esta publicación cubre toda la información que la mayoría de los usuarios necesitarán para un servidor SSH. Si tiene alguna pregunta, no dude en comentar a continuación.

Referencia: SSH ubuntu

Experto Geek - Tu Guía en Tendencias Tecnológicas