Se está enfocando en asegurar las claves en el lado del cliente. Le recomendaría que eche un vistazo en el lado del servidor.
En el servidor, puede limitar lo que se les permite hacer a su clave y de qué servidores se puede usar, editando el archivo authorized_keys
para la cuenta de destino. Aquí hay un ejemplo de una clave con límites:
from="their.workstation.only.example.com" no-port-forwarding ssh-dss AAA....
Si lo desea, puede usar direcciones IP en lugar de un FQDN.
Para evitar que los usuarios manipulen el archivo authorized_keys, puede moverlo a una ubicación donde no tengan permiso de escritura. Seguirá funcionando mientras tengan el permiso leer . Esto se puede hacer editando sshd_config
y cambiando
AuthorizedKeysFile .ssh/authorized_key
a por ejemplo
AuthorizedKeysFile /usr/local/authorized_keys/%u
El %u
se reemplaza por el nombre de usuario, por lo que cuando alguien se conecta a ssh con el nombre de usuario foo
, ssh buscará el archivo de claves en /usr/local/authorized_keys/foo
. Mientras foo
tenga acceso de lectura a ese archivo, la conexión funcionará.
Editar: En lugar de mover la clave, simplemente puedes configurar el archivo como inmutable, como esto:
sudo chattr +i /home/user/.ssh/authorized_keys
Una vez que haya configurado la limitación de IP de origen y haya asegurado el archivo de la clave contra la manipulación, no importará si la clave privada se filtra; aún no podrá utilizarse desde ningún otro sistema.
Hay muchas otras cosas que puede hacer para limitar a los usuarios cuando se conectan con las teclas. Consulte la página de manual de sshd
. También ha habido algunas preguntas sobre esto en Serverfault, por ejemplo, Acceso SSH limitado para recuperación de registro .