SSH: ¿Cómo deshabilitar los cifrados débiles?

47

El equipo de seguridad de mi organización nos dijo que deshabilitemos los cifrados débiles debido a que emiten claves débiles.

  arcfour
  arcfour128
  arcfour256

Pero intenté buscar estos cifrados en el archivo ssh_config y sshd_config pero los encontré comentados.

 grep arcfour *
ssh_config:#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

¿Dónde más debería verificar para deshabilitar estos cifrados de SSH?

rɑːdʒɑ
fuente
para el servidor SSH estará en /etc/ssh/sshd_configy para el cliente SSH estará en /etc/ssh/ssh_config. Desea buscar la Cipherlínea en cada uno y, por ejemplo, acaba de Cipher aes256-ctrespecificar. Luego reinicie SSH mediante /etc/init.d/sshd restarto mediante el comando systemd equivalente.
ron
1
desea conocer todos los parámetros sshd_configsi realmente se preocupa por la seguridad SSH, de lo contrario puede ser todo un teatro de seguridad.
ron
@ron el segundo comentario es intrigante, ¿puede ilustrar con un ejemplo lo que pretende?
Jerome
la cipherslista es solo una configuración de muchas para tener SSH implementado correctamente ... Protocolo, PermitRootLogin, AuthorizedKeysFile, PermitEmptyPasswords, IgnoreRhosts, PermitTunnel, etc. Puede confiar en su configuración predeterminada implementada en su distribución de Linux, peroIgnornance is bliss only up until you have a problem
ron

Respuestas:

40

Si no tiene una lista explícita de cifrados configurados ssh_configcon la Cipherspalabra clave, el valor predeterminado, de acuerdo con man 5 ssh_config(lado del cliente) y man 5 sshd_config(lado del servidor), es:

            aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,
            [email protected],[email protected],
            [email protected],
            aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,
            aes256-cbc,arcfour

Tenga en cuenta la presencia de las cifras de arco de cuatro. Por lo tanto, es posible que tenga que establecer explícitamente un valor más restrictivo para Ciphers.

ssh -Q cipherdel cliente le dirá qué esquemas puede admitir su cliente. Tenga en cuenta que esta lista no se ve afectada por la lista de cifrados especificada en ssh_config. Eliminar un cifrado ssh_configno lo eliminará de la salida de ssh -Q cipher. Además, el uso sshcon la -copción de especificar explícitamente un cifrado anulará la lista restringida de cifrados que configuró ssh_configy posiblemente le permitirá usar un cifrado débil. Esta es una característica que le permite utilizar su sshcliente para comunicarse con servidores SSH obsoletos que no admiten los cifrados más nuevos y más fuertes.

nmap --script ssh2-enum-algos -sV -p <port> <host> le dirá qué esquemas admite su servidor.

Ulrich Schwarz
fuente
Hola, mencioné cifrados específicos en ssh_config y reinicié el servicio ssh, pero cuando hice ssh -Q cipher <hostname> todavía obtengo todos los cifrados que obtuve antes, independientemente de mi configuración.
rɑːdʒɑ
1
Lo siento, ssh_configes la configuración del lado del cliente, la configuración del lado del servidor es sshd_config, por favor intente eso. (También se llama Ciphersallí.)
Ulrich Schwarz
Sí, lo sé, pero cuando busqué cifras las encontré en ssh_config, así que hice cambios allí. Como servidor de producción, no estoy haciendo nada, no estoy seguro
rɑːdʒɑ
Tenga en cuenta que los valores predeterminados pueden diferir entre las distribuciones.
Jonas Schäfer
Parece que no hay ssh -Qversiones anteriores. (por ejemplo, CentOS 6's openssh v5.3p1)
Tomofumi el
30

Para deshabilitar RC4 y usar cifrados seguros en el servidor SSH, codifique lo siguiente en /etc/ssh/sshd_config

ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr

O bien, si prefiere no dictar cifrados pero simplemente desea eliminar los cifrados inseguros, ejecute esto en la línea de comando (en modo sudo):

sshd -T | grep ciphers | sed -e "s/\(3des-cbc\|aes128-cbc\|aes192-cbc\|aes256-cbc\|arcfour\|arcfour128\|arcfour256\|blowfish-cbc\|cast128-cbc\|[email protected]\)\,\?//g" >> /etc/ssh/sshd_config

Puede verificar los cifrados utilizados actualmente por su servidor con:

sudo sshd -T | grep ciphers | perl -pe 's/,/\n/g' | sort -u

Asegúrese de que su cliente ssh pueda usar estos cifrados, ejecute

ssh -Q cipher | sort -u

para ver la lista

También puede indicarle a su cliente SSH que negocie solo cifrados seguros con servidores remotos. En /etc/ssh/ssh_configconjunto:

Host *
    ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr

Los fragmentos anteriores provienen de aquí
Para probar la configuración de su servidor, puede usar ssh-audit

savageBum
fuente
20

El problema al especificar explícitamente una lista de cifrado es que debe agregar manualmente nuevos cifrados a medida que salen. En su lugar, simplemente enumere los cifrados que desea eliminar, anteponiendo la lista (no cada cifrado individual) con un carácter '-'. Entonces, en este caso, la línea Ciphers debería leer:

Ciphers -arcfour*

O si lo prefieres:

Ciphers -arcfour,arcfour128,arcfour256

Desde la página de manual de sshd_config en la opción Ciphers (desde OpenSSH 7.5, lanzado el 2017-03-20):

Si el valor especificado comienza con un carácter '+', los cifrados especificados se agregarán al conjunto predeterminado en lugar de reemplazarlos. Si el valor especificado comienza con un carácter '-', los cifrados especificados (incluidos los comodines) se eliminarán del conjunto predeterminado en lugar de reemplazarlos.

Esto también se aplica a las opciones KexAlgorithms y MACs .

Perro espacial
fuente
2

habilitar / deshabilitar el cifrado necesita agregarlo / eliminarlo en el archivo / etc / ssh / sshd_config Después de editar este archivo, el servicio debe recargarse

systemctl reload sshd
/etc/init.d/sshd reload

Luego, ejecutar este comando desde el cliente le dirá qué esquemas admiten

ssh -Q cipher

Para verificar si el cifrado arcfour está habilitado o no en el servidor, ejecute este comando

ssh localhost -c arcfour

Para verificar si el cifrado arcfour128 está habilitado o no en el servidor, ejecute este comando

ssh localhost -c arcfour128
Kumar
fuente
Este paso faltaba en las respuestas anteriores
Saras Arya
1

Cómo deshabilitar un cifrado ssh débil, 100% probado en Fedora 29. El problema: Nessus informa que mi servidor samba4 no utiliza cifrados fuertes aes256-cbc y aes128-cbc. Así que puse esas líneas en/etc/ssh/sshd_config

MACs hmac-sha2-512,hmac-sha2-256
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
KexAlgorithms diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,curve25519-sha256,[email protected]

Et voilà! .. todavía usa el cifrado cbc porque este comando funciona :(

ssh -c aes256-cbc samba4

Así que verifico el útil systemd y descubro que el servicio sshd está usando otro archivo para cifrados

/etc/crypto-policies/back-ends/opensshserver.config

Copia de seguridad del archivo por seguridad

cp /etc/crypto-policies/back-ends/opensshserver.config     /etc/crypto-policies/back-ends/opensshserver.config.old

Edítelo y elimine el cifrado cbc. Reiniciar el servicio

systemctl restart sshd

Y finalmente prueba, funciona bien ... cbc deshabilitado.

ssh -c aes256-cbc samba4
Unable to negotiate with 192.168.0.48 port 22: no matching cipher found. Their offer: [email protected],[email protected],aes256-ctr,[email protected],aes128-ctr
elbarna
fuente