Instalación y Configuración de OpenSSH en CentOS para Acceso Remoto Seguro

El acceso remoto a servidores es una necesidad fundamental en la administración de sistemas, permitiendo gestionar máquinas a distancia de manera eficiente. En el entorno Linux, Secure Shell (SSH) se ha consolidado como el protocolo estándar para esta tarea, ofreciendo una conexión cifrada y segura. Este artículo detalla el proceso de instalación y configuración de OpenSSH en sistemas CentOS, con un enfoque particular en la habilitación del acceso remoto seguro, especialmente en un entorno de consola.

Diagrama de red con un cliente conectándose a un servidor vía SSH

La Ventaja de la Consola: Eficiencia y Recursos

La preferencia por instalar servidores en modo consola, en lugar de recurrir a entornos gráficos completos, se basa en una estrategia de optimización de recursos. Los servidores, por su naturaleza, a menudo no requieren una interfaz gráfica para su funcionamiento principal. Mantener un entorno gráfico puede consumir una cantidad significativa de memoria y potencia de procesamiento que, en escenarios de uso limitado, se considera un desperdicio. Por ello, centrarse en la administración vía consola, habilitando el acceso remoto seguro a través de SSH, resulta una opción más eficiente y pragmática.

Instalación de OpenSSH en CentOS

El primer paso para habilitar el acceso remoto seguro es la instalación del paquete OpenSSH. Este programa es la herramienta esencial que permitirá la conexión segura a su equipo con CentOS.

Para sistemas CentOS 6, el proceso de instalación se inicia con la ejecución del siguiente comando en la terminal:

sudo yum install openssh-server

Este comando descargará e instalará los paquetes necesarios para el servicio SSH. Es posible que se le solicite confirmar la instalación, a lo que deberá responder afirmativamente. El sistema buscará y descargará los paquetes, incluyendo dependencias, y procederá con la instalación. Un ejemplo de la salida del comando podría mostrar la descarga de un paquete como openssl-1.0.1e-16.el6_5.15.x86_64.rpm.

Configuración Inicial del Servicio SSH

Una vez que OpenSSH está instalado, es necesario configurar y habilitar el servicio para que pueda aceptar conexiones entrantes.

Habilitación del Servicio SSH y su Inicio Automático

Para asegurarse de que el servicio SSH se inicie automáticamente al arrancar el sistema y para iniciarlo en la sesión actual, se utilizan los siguientes comandos:

sudo chkconfig sshd onsudo service sshd start

El comando chkconfig sshd on configura el sistema para que el demonio SSH (sshd) se inicie en cada arranque. service sshd start inicia el servicio de inmediato.

Configuración del Firewall para Permitir Conexiones SSH

Si el cortafuegos de Linux CentOS está habilitado, es crucial abrir el puerto utilizado por SSH para permitir las conexiones externas. El puerto por defecto para SSH es el 22.

Para abrir el puerto 22 en CentOS 6, se puede utilizar el siguiente comando:

sudo lokkit -p 22:tcp

Este comando instruye al cortafuegos para que permita el tráfico TCP entrante en el puerto 22. Si se ha configurado SSH para utilizar un puerto diferente, deberá abrir ese puerto específico en lugar del 22.

Configuración Avanzada de Seguridad en SSH

La seguridad es un aspecto primordial al configurar el acceso remoto. Existen prácticas recomendadas para mitigar riesgos y fortalecer la seguridad de las conexiones SSH.

Deshabilitar el Acceso Directo del Superusuario (root)

Por motivos de seguridad, es altamente recomendable deshabilitar el acceso directo por SSH al superusuario root. Esto obliga a los administradores a iniciar sesión con una cuenta de usuario estándar y luego, si es necesario, escalar privilegios mediante sudo.

Para deshabilitar el acceso root, se debe editar el archivo de configuración de SSH, sshd_config:

sudo vi /etc/ssh/sshd_config

Dentro del archivo, localice la directiva PermitRootLogin. Si está comentada (con un # al inicio), elimine el comentario y cambie su valor a no. Si la directiva no existe, puede añadirla.

PermitRootLogin no

Después de realizar el cambio, guarde el archivo y reinicie el servicio SSH para que los cambios surtan efecto:

sudo service sshd restart

Restricción de IPs Permitidas

Otra medida de seguridad es limitar el acceso SSH solo a direcciones IP específicas o a un rango de IPs confiables. Esto se configura en el mismo archivo sshd_config utilizando la directiva AllowUsers o AllowGroups, o bien DenyUsers y DenyGroups.

Por ejemplo, para permitir el acceso únicamente al usuario usuario_admin desde la IP 192.168.1.100, se podría añadir o modificar la siguiente línea:

AllowUsers [email protected]

Si desea permitir el acceso a varios usuarios desde diferentes IPs, la configuración puede volverse más compleja. Una alternativa es usar AllowGroups para definir un grupo de usuarios autorizados.

Autenticación Basada en Claves SSH

La autenticación basada en claves SSH es un método más seguro y conveniente que la autenticación por contraseña. Consiste en generar un par de claves (pública y privada) en el cliente y luego copiar la clave pública al servidor.

Diagrama explicando el proceso de autenticación con claves SSH

Generación de Pares de Claves SSH

En el equipo cliente desde el que se conectará al servidor CentOS, genere un par de claves SSH utilizando el comando ssh-keygen.

ssh-keygen -t rsa

Se le preguntará dónde desea guardar la clave. Presione ENTER para aceptar la ubicación por defecto (~/.ssh/id_rsa). A continuación, se le solicitará que introduzca una frase de contraseña (passphrase). Se recomienda encarecidamente establecer una frase de contraseña segura. Esta frase de contraseña añade una capa adicional de seguridad, requiriendo su ingreso cada vez que se utilice la clave privada, lo que protege contra el acceso no autorizado en caso de que la clave privada sea comprometida.

Enter passphrase (empty for no passphrase): <introduzca su frase de contraseña segura>Enter same passphrase again: <confirme su frase de contraseña>

Tras completar este proceso, tendrá un par de archivos en el directorio ~/.ssh/: id_rsa (la clave privada) y id_rsa.pub (la clave pública).

Copia de la Clave Pública al Servidor CentOS

Una vez generado el par de claves, la clave pública (id_rsa.pub) debe ser copiada al servidor CentOS. La utilidad ssh-copy-id es la forma más rápida y recomendada para realizar esta tarea, si está disponible en su sistema cliente.

Para utilizar ssh-copy-id, ejecute el siguiente comando, reemplazando usuario_remoto por su nombre de usuario en el servidor CentOS y direccion_ip_servidor por la dirección IP o nombre de host del servidor:

ssh-copy-id usuario_remoto@direccion_ip_servidor

Se le pedirá la contraseña del usuario_remoto en el servidor CentOS.

Captura de pantalla mostrando el mensaje

La primera vez que se conecte a un nuevo host, su computadora local no reconocerá el host remoto, y recibirá un mensaje solicitando confirmación para continuar conectándose. Escriba yes y presione ENTER. A continuación, ssh-copy-id buscará el archivo id_rsa.pub en su sistema local, lo copiará al servidor y lo añadirá al archivo ~/.ssh/authorized_keys del usuario_remoto.

Si ssh-copy-id no está disponible, puede copiar manualmente el contenido de su clave pública al servidor. Primero, muestre su clave pública local:

cat ~/.ssh/id_rsa.pub

Luego, conéctese al servidor CentOS usando su contraseña y cree el directorio ~/.ssh si no existe, asegurándose de que tenga los permisos correctos:

mkdir -p ~/.sshchmod 700 ~/.ssh

A continuación, cree o edite el archivo authorized_keys dentro de ~/.ssh y pegue el contenido de su clave pública. Es importante usar el operador de redireccionamiento >> para añadir el contenido sin sobrescribir claves existentes:

echo "public_key_string" >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys

Reemplace public_key_string con el contenido real de su clave pública que obtuvo con cat ~/.ssh/id_rsa.pub.

Prueba de la Autenticación Basada en Claves

Una vez copiada la clave pública, intente conectarse al servidor CentOS nuevamente:

ssh usuario_remoto@direccion_ip_servidor

Si configuró una frase de contraseña para su clave privada, se le solicitará que la introduzca. Si no estableció una frase de contraseña, debería iniciar sesión directamente sin necesidad de ingresar credenciales.

Si logra iniciar sesión sin necesidad de escribir su contraseña, la autenticación basada en claves SSH se ha configurado correctamente.

Deshabilitar la Autenticación por Contraseña

Para mejorar aún más la seguridad, una vez que la autenticación basada en claves esté funcionando correctamente, se recomienda deshabilitar la autenticación por contraseña. Esto asegura que solo los clientes con la clave privada correcta puedan acceder al servidor.

Antes de proceder, asegúrese de tener configurada la autenticación basada en claves SSH para una cuenta de usuario con privilegios sudo o para el usuario root (aunque se recomienda la primera opción).

Edite nuevamente el archivo de configuración de SSH:

sudo vi /etc/ssh/sshd_config

Busque la directiva PasswordAuthentication. Si está comentada, elimine el comentario y cambie su valor a no:

PasswordAuthentication no

También es aconsejable asegurarse de que ChallengeResponseAuthentication esté configurado como no si no se utiliza autenticación interactiva por desafío-respuesta.

Una vez realizados los cambios, guarde el archivo (presionando ESC, luego :wq y ENTER) y reinicie el servicio SSH:

sudo service sshd restart

Con estos pasos, el demonio SSH de su servidor CentOS solo responderá a las claves SSH, bloqueando efectivamente los inicios de sesión basados en contraseñas.

Cómo Implementar un Servidor SSH en CentOS 7

Consideraciones Adicionales y Buenas Prácticas

Al habilitar el acceso remoto por SSH, tenga en cuenta las siguientes recomendaciones para mantener un entorno seguro y funcional:

  • Actualizaciones Regulares: Mantenga siempre el paquete OpenSSH y el sistema operativo CentOS actualizados para beneficiarse de las últimas correcciones de seguridad y mejoras.
  • Auditoría de Logs: Revise periódicamente los logs de SSH (ubicados típicamente en /var/log/secure) para detectar intentos de acceso no autorizados o actividades sospechosas.
  • Configuración de sshd_config: Familiarícese con todas las directivas disponibles en /etc/ssh/sshd_config, ya que ofrecen un control granular sobre el comportamiento del servidor SSH.
  • Puertos No Estándar: Considerar el uso de un puerto diferente al 22 puede reducir el número de escaneos y ataques automatizados dirigidos al puerto por defecto, aunque no proporciona seguridad por sí solo.

La correcta instalación y configuración de OpenSSH en CentOS es un pilar fundamental para la administración remota segura de servidores. Al implementar las medidas de seguridad descritas, se puede asegurar un acceso robusto y protegido a sus sistemas.

tags: #como #instalar #openssh #en #centos