GNU/Linux >> Tutoriales Linux >  >> Linux

3 formas en que configuro SSH para la privacidad

SSH (Secure Shell) es un protocolo que le permite crear una conexión verificada y privada, asegurando el canal usando claves criptográficas, para iniciar un shell remoto en otra máquina. Con esta conexión, puede ejecutar comandos remotos, iniciar transferencias seguras de archivos, reenviar sockets, pantallas y servicios, y mucho más.

Antes de la aparición de SSH, la mayor parte de la administración remota se realizaba a través de telnet y, para ser justos, una vez que podía establecer una sesión remota, podía hacer prácticamente lo que necesitara. El problema con este protocolo era que el tráfico viajaba sin cifrar como texto sin formato puro. No tomó mucho esfuerzo usar un rastreador de tráfico para ver todos los paquetes dentro de una sesión, incluidos los que contienen un nombre de usuario y contraseña.

Con SSH, gracias al uso de claves asimétricas, las sesiones entre los aparatos involucrados en la comunicación son encriptadas. Y hoy en día esto es más relevante que nunca, con todos los servidores en la nube administrados desde todo el mundo.

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

3 consejos para la configuración de SSH

La implementación más común del protocolo SSH es OpenSSH, desarrollado por el proyecto OpenBSD y disponible para la mayoría de los sistemas operativos Linux y similares a Unix. Una vez que instala este paquete, tiene un archivo llamado sshd_config que controla la mayor parte del comportamiento del servicio. La configuración predeterminada generalmente es muy conservadora, pero tiendo a hacer algunos ajustes para optimizar mi experiencia SSH y proteger mis servidores del acceso no autorizado.

1. Cambiar el puerto predeterminado 

Este es el que no todos los administradores recuerdan. Cualquier persona con un escáner de puertos puede descubrir un puerto SSH incluso después de que lo haya movido, por lo que apenas se está alejando del peligro, pero evita convenientemente cientos de scripts no sofisticados lanzados contra su servidor. Es un favor que puedes hacerte a ti mismo para eliminar una buena cantidad de ruido de tus registros.

Para este artículo, tenía un puerto TCP 22 predeterminado del servidor SSH en un proveedor de la nube, y el promedio de ataques por minuto fue de 24. Después de cambiar el puerto a un número mucho más alto, TCP 45678, el promedio de personas que se conectan y adivinan cualquier nombre de usuario o la contraseña era dos por día.

Para cambiar el puerto predeterminado para SSH, abra /etc/ssh/sshd_config en su editor de texto favorito y cambie el valor de Port   de 22 a algún número mayor que 1024. La línea puede estar comentada porque 22 es el valor predeterminado (por lo que no es necesario declararlo explícitamente en la configuración), así que elimine el comentario de la línea antes de guardarla.

#Port 22122
#AddressFamily any 
#ListenAddress 0.0.0.0 
#ListenAddress ::

Una vez que haya cambiado el puerto y guardado el archivo, reinicie el servidor SSH:

$ sudo systemctl restart sshd

2. No más contraseñas

Hay un movimiento general para dejar de usar contraseñas como medio de autenticación, con métodos como la autenticación de dos factores ganando popularidad. OpenSSH puede autenticarse usando claves asimétricas, por lo que no es necesario recordar contraseñas complejas, y mucho menos rotarlas cada pocos meses, o temer que alguien estuviera "navegando por el hombro" mientras establecía su sesión remota. El uso de claves SSH le permite iniciar sesión en su equipo remoto de forma rápida y segura. Esto a menudo significa menos tiempo procesando nombres de usuario y contraseñas incorrectos para el propio servidor. El inicio de sesión es agradablemente simple. Cuando no hay clave, no hay entrada, ni siquiera un aviso.

Para usar esta característica, debe configurar tanto el cliente (la computadora físicamente frente a usted) como el servidor (la máquina remota).

En la máquina cliente, debe generar un par de claves SSH. Este consta de una clave pública y una privada. Como sus nombres lo indican, una clave es para que la distribuya a los servidores en los que desea iniciar sesión, y la otra es privada y no debe compartirse con nadie. Cree una nueva clave con ssh-keygen y usa el comando -t opción para especificar una buena biblioteca de criptografía reciente como ed25519 :

$ ssh-keygen -t ed25519    
 Generating public/private ed25519 key pair. 
 Enter file in which to save the key (~/.ssh/id_ed25519):

Durante la creación de la clave, se le solicita que asigne un nombre al archivo. Puedes pulsar Retorno para aceptar el valor predeterminado. Si crea más claves en el futuro, puede darle a cada una un nombre personalizado, pero tener varias claves significa especificar qué clave desea usar para cada interacción, así que por ahora, simplemente acepte la predeterminada.

También puede darle a su clave una frase de contraseña. Esto asegura que incluso si alguien más logra obtener su clave privada (lo que nunca debería suceder), no podrá utilizarla sin su frase de contraseña. Es una protección útil para algunas claves, mientras que no es apropiada para otras (especialmente las que se usan en los scripts). Presiona Regresar para dejar su clave sin frase de contraseña o crear una frase de contraseña si lo desea.

Para copiar su clave en un servidor, utilice ssh-copy-id dominio. Por ejemplo, si tengo un servidor llamado example.com , entonces puedo copiar mi clave pública con este comando:

$ ssh-copy-id [email protected]

Esto crea o modifica el archivo authorized_keys en el .ssh del servidor directorio con su clave pública.

Una vez que ssh-copy-id ha confirmado lo que ha hecho, intente iniciar sesión desde su computadora para verificar que puede iniciar sesión sin una contraseña (o con la frase de contraseña de su clave si elige usar una).

Una vez que esté en su servidor sin usar la contraseña de su cuenta de servidor, edite el sshd_config del servidor. y establecer PasswordAuthenticationno .

PasswordAuthentication no

Reinicie el ssh servicio para cargar la nueva configuración:

$ sudo systemctl restart sshd

3. Decide quién puede iniciar sesión

La mayoría de las distribuciones no permiten que el usuario raíz inicie sesión a través de SSH, lo que garantiza que solo las cuentas sin privilegios estén activas, utilizando sudo comando para escalar los privilegios según sea necesario. Esto evita que un objetivo notable y dolorosamente obvio (raíz) sufra ataques con secuencias de comandos simples pero demasiado comunes.

De manera similar, una característica simple y poderosa de OpenSSH es la capacidad de decidir qué usuarios pueden iniciar sesión en una máquina. Para establecer qué usuarios obtienen acceso SSH, abra el sshd_config archivo en su editor de texto favorito y agregue una línea como esta:

AllowUsers jgarrido jane tux

Reinicie el servicio SSH para cargar las nuevas opciones de configuración.

Esto permite que solo los tres usuarios (jgarrido, jane y tux) inicien sesión o ejecuten cualquier operación en la máquina remota.

Reflexiones finales

Puede usar OpenSSH para implementar un servidor SSH fuerte y robusto. Estas fueron solo tres opciones útiles para fortalecer su instalación. Aún así, hay toneladas de funciones y opciones que puede activar o desactivar dentro de sshd_config y hay muchas aplicaciones excelentes como Fail2ban que puede usar para proteger aún más su servicio SSH.


Linux
  1. Cómo configurar claves SSH usando cPanel

  2. Cómo configurar la autenticación basada en clave SSH en Linux

  3. ¿Mapa de clave pública-privada Ssh para el cliente?

  4. ¿Importar la clave Ssh como subclave Gpg para usar para la autenticación Ssh?

  5. Administre pares de claves SSH para servidores en la nube con python-novaclient

Configure la clave RNDC para el servidor Bind DNS en CentOS 7

11 mejores formas de proteger su servidor SSH

¿Cómo configurar la autenticación basada en clave Ssh para Github usando el archivo ~/.ssh/config?

Acceso SSH para cPanel

Genere claves SSH para iniciar sesión sin contraseña en Ubuntu

Cómo agregar una clave SSH para acceder a cPanel SSH