![Deshabilitar ciertas claves OpenSSH en OpenBSD: ¿por qué se ignoran las entradas 'sshd_config' correspondientes y por qué 'ssh-keygen -A' genera claves prohibidas?](https://rvso.com/image/768908/Deshabilitar%20ciertas%20claves%20OpenSSH%20en%20OpenBSD%3A%20%C2%BFpor%20qu%C3%A9%20se%20ignoran%20las%20entradas%20'sshd_config'%20correspondientes%20y%20por%20qu%C3%A9%20'ssh-keygen%20-A'%20genera%20claves%20prohibidas%3F.png)
Estoy intentando lograr lo siguiente en mis servidores OpenBSD 6.9:
- Prohibir el uso de todas las claves excepto la
ssh-ed25519
de ambas.SERVIDORyCLIENTElados. - Limitándose
ssh-keygen -A
a generar claves únicamente por elssh-ed25519
algoritmo autorizado y nada más.
Para lograr esto, he agregado las siguientes líneas a mi sshd_config
:
HostKey /etc/ssh/ssh_host_ed25519_key
CASignatureAlgorithms ssh-ed25519
HostbasedAcceptedKeyTypes ssh-ed25519
HostKeyAlgorithms ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed25519
También agregué las siguientes líneas a mi ssh_config
:
CASignatureAlgorithms ssh-ed25519
HostbasedAcceptedKeyTypes ssh-ed25519
HostKeyAlgorithms ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed25519
He eliminado todas las claves menos la autorizada.
sshd reiniciado:
# rcctl restart sshd
sshd(ok)
sshd(ok)
Después de verificar si mi configuración se utiliza ejecutando los siguientes comandos:
# ssh -Q HostbasedAcceptedAlgorithms
# ssh -Q HostKeyAlgorithms
# ssh -Q PubkeyAcceptedAlgorithms
Para mi sorpresa, esto es con lo que todos regresan:
ssh-ed25519
[email protected]
[email protected]
[email protected]
ssh-rsa
rsa-sha2-256
rsa-sha2-512
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
En otras palabras, se ignoran las restricciones clave.
Para estar seguro, incluso reinicié el servidor, pero no hay diferencia.
Una posible solución es eliminar todos los archivos clave excepto el autorizado. Sin embargo, el script de inicio /etc/rc
tiene una línea, ssh-keygen -A
que regenera todas las claves ssh faltantes después de cada reinicio del sistema, antes de que se inicie el demonio sshd.incluidos los de algoritmos prohibidos!
Entonces quitar las claves no resuelve el problema.
Como solución adicional, podría eliminar la ssh-keygen -A
línea del script de inicio o reemplazarla con mi algoritmo de generación de claves personalizado, pero eso me llevará de regreso al punto donde comenzó todo: tener que lidiar con este problema una y otra vez, por ejemplo, después de cada actualización del sistema, cada vez que el equipo de OpenBSD lanza una nueva versión de /etc/rc
. Automatizar la eliminación de esa línea y probar una solución tan descuidada en una gran cantidad de servidores es difícil y puede provocar una falla masiva de la red si algo sale mal.
Por lo tanto, continué mi investigación y profundicé en el código fuente de ssh-keygen
. Descubrí que no es posible restringir el comportamiento del -A
conmutador desde fuera, por ejemplo, mediante archivos de configuración. Ni siquiera realiza una prueba preliminar de si las claves están autorizadas o no, simplemente genera las claves, de acuerdo con una lista de algoritmos de una matriz codificada. La única forma de evitar esto es editando, recompilando y usando una bifurcación personalizada de ssh-keygen
, pero luego tendré que lidiar con eso después de cada actualización de OpenSSH...
He encontrado una solución parcial para otros sistemas operativos pero no para OpenBSD.
¿Alguien podría indicarme una solución adecuada? ¿Por qué se ignoran mis restricciones sshd_config
y las de mis ssh_config
claves y cómo dejar ssh-keygen -A
de generar claves con algoritmos prohibidos?
Antes de que alguien pregunte: OpenSSH utiliza todas las demás configuraciones en ambos archivos de configuración, por lo que estos archivos de configuración son de hecho los que realmente se están cargando.
Muchas gracias por todas las respuestas útiles.