Ejecutar SSH
en un puerto alternativo ya no cuenta como seguridad. Solo agrega un poco de oscuridad y un paso adicional de complejidad para sus usuarios. Agrega cero obstáculos para las personas que buscan romper su red, que usan escáneres de puertos automáticos y no les importa en qué puerto se está ejecutando.
Si desea reforzar la seguridad en un sistema que permite SSH entrante remoto basado en Internet, controle a sus usuarios en el sshd_config
modo indicado por @Anthon, y luego también implemente la seguridad directamente en PAM.
Crea dos grupos, lusers
y rusers
. Agregue los usuarios móviles remotos al rusers
grupo. Use el módulo PAM pam_succeed_if.so para permitir el acceso a esos usuarios. Agregue líneas a su configuración de pam para ssh:
account sufficient pam_succeed_if.so user ingroup lusers
account sufficient pam_succeed_if.so user ingroup rusers
Algunos módulos de pam_succeed_if.so pueden requerir que use una sintaxis ligeramente diferente, como group = lusers
.
Entonces, no solo está sshd
limitando los usuarios que pueden conectarse, sino que, en caso de un error sshd
, aún tiene la protección que ofrecen las restricciones basadas en PAM.
Un paso adicional para los usuarios remotos es forzar el uso de ssh_keys con frases de contraseña. Por lo tanto, los usuarios locales pueden iniciar sesión con claves o contraseñas, pero los usuarios remotos deben tener una clave, y si crea las claves para ellos, puede asegurarse de que la clave tenga asociados una frase de contraseña. Limitando así el acceso a ubicaciones que realmente poseen la clave SSH y la frase de contraseña. Y limitar los posibles vectores de ataque si la contraseña de un usuario está comprometida.
En sshd_config
:
cambiar 2 configuraciones:
ChallengeResponseAuthentication yes
y
PasswordAuthentication yes
a:
ChallengeResponseAuthentication no
y
PasswordAuthentication no
Entonces, el valor predeterminado es permitir ahora solo la autenticación de clave. Luego, para los usuarios locales, puede usar la match
configuración para cambiar la configuración predeterminada para los usuarios locales. Suponiendo que su red privada local es 192.168.1.0/24, agregue a sshd_config
:
Match Address 192.168.1.0/24
PasswordAuthentication yes
Ahora, los usuarios locales pueden conectarse con contraseñas o claves, y los usuarios remotos se verán obligados a usar claves. Depende de usted crear las claves con frases de paso.
Como beneficio adicional, solo tiene que administrar un solo sshd_config
, y solo tiene que ejecutar ssh en un solo puerto, lo que facilita su propia administración.
edit 2017-01-21 - Limitando el uso de authorized_keys
archivos.
Si desea asegurarse de que los usuarios no puedan autogenerar una clave ssh y usarla con un authorized_keys
archivo para iniciar sesión, puede controlar eso configurando una ubicación específica para que sshd buscará claves autorizadas.
En /etc/ssh/sshd_config
, cambio:
AuthorizedKeysFile %h/ssh/authorized_keys
a algo como:
AuthorizedKeysFile /etc/.ssh/authorized_keys/%u
Señalar un directorio controlado en el que los usuarios no tienen permisos para escribir significa que no pueden generar su propia clave y usarla para evitar las reglas que ha establecido.
lusers
grupo pero no en elrusers
grupo genera un par de claves y actualiza el suyo~/.ssh/authorized_keys
, podrá iniciar sesión desde el control remoto.