¿Qué son los HMAC? #
Los HMAC, o códigos de autenticación de mensajes basados en hash, son construcciones criptográficas que utilizan una clave secreta y una función hash para verificar la integridad y autenticidad de datos o mensajes. Los HMAC proporcionan una forma de garantizar que los datos no hayan sido manipulados durante la transmisión y que provengan de una fuente confiable. Implican combinar los datos con una clave secreta, codificar el resultado y luego compararlo con un HMAC de referencia en el extremo del destinatario, ofreciendo un método seguro para confirmar la validez de los datos en diversas aplicaciones, incluidos los sistemas de autenticación y comunicación segura.
En servicios SSH (Secure Shell) como SSHd (demonio SSH), los HMAC se emplean para mejorar la seguridad de la comunicación entre un cliente y un servidor. Durante el proceso de intercambio de claves SSH, el servidor y el cliente negocian un conjunto de algoritmos criptográficos, incluido el algoritmo HMAC, que se utilizarán para la verificación de la integridad de los datos. El algoritmo HMAC elegido, combinado con una clave secreta compartida, se utiliza para generar etiquetas HMAC para paquetes salientes y verificar la integridad de los paquetes entrantes. Esto garantiza que los datos intercambiados entre el cliente y el servidor no hayan sido alterados durante la transmisión, protegiéndolos contra manipulaciones y garantizando la autenticidad de la comunicación, un aspecto vital del modelo de seguridad de SSH.
Deshabilitar cifrados débiles en SSHD #
Para mejorar la seguridad del servicio SSHd, es posible que deba modificar los algoritmos de cifrado, MAC y clave de SSH para asegurarse de que no se utilicen MD5 ni HMAC de 96 bits ( hmac-md5, hmac-md5-96, hmac-sha1-96 ). Siga los pasos que se indican a continuación.
Verifique la configuración SSHd existente #
Examine la configuración SSH actual para identificar los cifrados, MAC y algoritmos clave permitidos. Utilice el siguiente comando para recopilar esta información:
raíz@noid-ee-01:~# sshd -T | grep "\(cifrados\|macs\|kexalgoritmos\)" sistemas de cifrado chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com Macs umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1 algoritmos kex curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1
Editar configuración SSHD #
Para mejorar la seguridad, considere deshabilitar los cifrados y MAC más débiles. Use un editor de texto (como nano o vi ) para editar el archivo de configuración de SSHD (ubicado en /etc/ssh/sshd_config ). Elimine los cifrados y MAC que no desea permitir y guarde el archivo. Si el archivo de configuración no existe, agregue nuevas líneas al final.
ciphers aes128-ctr,aes192-ctr,aes256-ctr macs hmac-sha1,hmac-sha2-256,hmac-sha2-512
Reinicie el servicio SSHD #
Después de realizar cambios, reinicie el servicio SSHD para aplicar la nueva configuración.
root@noid-ee-01:~# systemctl reiniciar sshd
Verifique la nueva configuración #
Verifique la configuración actualizada usando el mismo comando que antes.
root@nid-ee-01:~# sshd -T | grep "\(ciphers\|macs\|kexalgorithms\)" ciphers aes128-ctr,aes192-ctr,aes256-ctr macs hmac-sha1,hmac-sha2-256,hmac-sha2-512 kexalgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1
Estos pasos ayudan a fortalecer la seguridad de SSH al configurar SSH para utilizar conjuntos de cifrado y MAC más seguros y al mismo tiempo deshabilitar opciones más débiles, lo que mejora la seguridad general del servicio SSHd. Tenga en cuenta que modificar esta configuración puede afectar la compatibilidad con clientes SSH más antiguos o menos seguros, así que asegúrese de que sus cambios se ajusten a sus requisitos de seguridad específicos.