Seguridad

Audita tu conexión SSH con SSH-Audit

Muchos de nosotros utilizamos el protocolo SSH para conectarnos a nuestros servidores y administrarlos en línea, sin embargo poca gente suele dedicar tiempo a configurarlo.

Auditando nuestra conexión SSH

El protocolo SSH es muy usado en servidores Linux, debido a su facilidad de uso, ya que nos permite manejar ficheros mediante SFTP y administrarlo, con solo crear una cuenta de usuario normal.

Para verificar nuestra configuración del demonio SSH, podemos hacerlo mirando el fichero de configuración y contrastando esta información o utilizar ssh-audit.

En nuestro caso vamos a utilizar esta última opción. SSH-Audit es un pequeño script escrito en Python que nos va a permitir extraer gran cantidad de información sobre nuestra configuración del protocolo:

 python ssh-audit.py -n 192.168.99.100
# general
(gen) banner: SSH-2.0-OpenSSH_7.2
(gen) software: OpenSSH 7.2
(gen) compatibility: OpenSSH 7.2+, Dropbear SSH 2013.62+
(gen) compression: enabled (zlib@openssh.com)

# key exchange algorithms
(kex) curve25519-sha256@libssh.org          -- [info] available since OpenSSH 6.5, Dropbear SSH 2013.62
(kex) ecdh-sha2-nistp256                    -- [fail] using weak elliptic curves
                                            `- [info] available since OpenSSH 5.7, Dropbear SSH 2013.62
(kex) ecdh-sha2-nistp384                    -- [fail] using weak elliptic curves
                                            `- [info] available since OpenSSH 5.7, Dropbear SSH 2013.62
(kex) ecdh-sha2-nistp521                    -- [fail] using weak elliptic curves
                                            `- [info] available since OpenSSH 5.7, Dropbear SSH 2013.62
(kex) diffie-hellman-group-exchange-sha256  -- [warn] using custom size modulus (possibly weak)
                                            `- [info] available since OpenSSH 4.4
(kex) diffie-hellman-group14-sha1           -- [warn] using weak hashing algorithm
                                            `- [info] available since OpenSSH 3.9, Dropbear SSH 0.53

# host-key algorithms
(key) ssh-rsa                               -- [info] available since OpenSSH 2.5.0, Dropbear SSH 0.28
(key) rsa-sha2-512                          -- [info] available since OpenSSH 7.2
(key) rsa-sha2-256                          -- [info] available since OpenSSH 7.2
(key) ecdsa-sha2-nistp256                   -- [fail] using weak elliptic curves
                                            `- [warn] using weak random number generator could reveal the key
                                            `- [info] available since OpenSSH 5.7, Dropbear SSH 2013.62

# encryption algorithms (ciphers)
(enc) chacha20-poly1305@openssh.com         -- [info] available since OpenSSH 6.5
                                            `- [info] default cipher since OpenSSH 6.9.
(enc) aes128-ctr                            -- [info] available since OpenSSH 3.7, Dropbear SSH 0.52
(enc) aes192-ctr                            -- [info] available since OpenSSH 3.7
(enc) aes256-ctr                            -- [info] available since OpenSSH 3.7, Dropbear SSH 0.52
(enc) aes128-gcm@openssh.com                -- [info] available since OpenSSH 6.2
(enc) aes256-gcm@openssh.com                -- [info] available since OpenSSH 6.2

# message authentication code algorithms
(mac) umac-64-etm@openssh.com               -- [warn] using small 64-bit tag size
                                            `- [info] available since OpenSSH 6.2
(mac) umac-128-etm@openssh.com              -- [info] available since OpenSSH 6.2
(mac) hmac-sha2-256-etm@openssh.com         -- [info] available since OpenSSH 6.2
(mac) hmac-sha2-512-etm@openssh.com         -- [info] available since OpenSSH 6.2
(mac) hmac-sha1-etm@openssh.com             -- [warn] using weak hashing algorithm
                                            `- [info] available since OpenSSH 6.2
(mac) umac-64@openssh.com                   -- [warn] using encrypt-and-MAC mode
                                            `- [warn] using small 64-bit tag size
                                            `- [info] available since OpenSSH 4.7
(mac) umac-128@openssh.com                  -- [warn] using encrypt-and-MAC mode
                                            `- [info] available since OpenSSH 6.2
(mac) hmac-sha2-256                         -- [warn] using encrypt-and-MAC mode
                                            `- [info] available since OpenSSH 5.9, Dropbear SSH 2013.56
(mac) hmac-sha2-512                         -- [warn] using encrypt-and-MAC mode
                                            `- [info] available since OpenSSH 5.9, Dropbear SSH 2013.56
(mac) hmac-sha1                             -- [warn] using encrypt-and-MAC mode
                                            `- [warn] using weak hashing algorithm
                                            `- [info] available since OpenSSH 2.1.0, Dropbear SSH 0.28

# algorithm recommendations (for OpenSSH 7.2)
(rec) -ecdh-sha2-nistp521                   -- kex algorithm to remove
(rec) -ecdh-sha2-nistp384                   -- kex algorithm to remove
(rec) -ecdh-sha2-nistp256                   -- kex algorithm to remove
(rec) -diffie-hellman-group14-sha1          -- kex algorithm to remove
(rec) -ecdsa-sha2-nistp256                  -- key algorithm to remove
(rec) +ssh-ed25519                          -- key algorithm to append
(rec) -hmac-sha2-512                        -- mac algorithm to remove
(rec) -umac-128@openssh.com                 -- mac algorithm to remove
(rec) -hmac-sha2-256                        -- mac algorithm to remove
(rec) -umac-64@openssh.com                  -- mac algorithm to remove
(rec) -hmac-sha1                            -- mac algorithm to remove
(rec) -hmac-sha1-etm@openssh.com            -- mac algorithm to remove
(rec) -umac-64-etm@openssh.com              -- mac algorithm to remove

 

Como se puede ver en el reporte anterior, este script muestra información sobre:

  1. La versión del protocolo y del software que estamos usando.
  2. Los algoritmos de intercambio de claves.
  3. Los algoritmos del host.
  4. Los algoritmos de cifrado.
  5. Los algoritmos de autentificación de mensajes (hash).
  6. Recomendaciones sobre la forma de proceder con ciertos algoritmos.

Quizás esta última sección sea la más importante, ya que como hemos comentado anteriormente cada cierto tiempo, algunos algoritmos de cifrado dejan de ser seguros y por tanto se recomienda la eliminación de los mismos. Sin embargo hay mucho software que sigue utilizándolos, como el demonio de SSH.

Espero que este artículo os haya servido para tener servidores más seguros.

Un saludo.

Jorge Durán

Entusiasta de la tecnología desde los 10 años, desarrollador y creador de varios proyectos de software y autodidacta por naturaleza. Ingeniero Informático por la USAL y .Net backend developer en idealista.

Share
Publicado por
Jorge Durán

Recent Posts

Docker: conceptos principales y tutorial paso a paso

Hoy queremos hablaros de Docker un proyecto que cada día es más usado, porque permite…

3 años hace

Crea diagramas rápidamente usando código

Cada vez estamos más acostumbrados a usar código para generar la infraestructura (IaC), documentar nuestro…

3 años hace

Procesamiento del lenguaje natural con ElasticSearch

Uno de los problemas que se presentan con una mayor frecuencia hoy en día, es…

4 años hace

Elige tecnología clásica y aburrida

Uno de los problemas que solemos tener los programadores, es que nos gusta estar a…

4 años hace

Cómo usar Docker en Windows

Docker es una de las herramientas más usadas por los desarrolladores, sin embargo, usarlo en…

4 años hace

Analiza el coste del uso de JavaScript

Como seguramente sabrás el uso de JavaScript ha crecido exponencialmente en los últimos tiempos, sin…

4 años hace