2009-03-17

Aseguramiento de SSH

Bueno todos sabemos que Linux por defecto es muy seguro pero no nos podemos confiar de nada día a día salen mas ataques contra todas las distribuciones de Linux debido a que ya tenemos una buena parte del mercado de los servicios, debido a esto hacer mas seguros nuestros sistemas solo depende de nosostros mismos.

Obviamente acá no voy a explicar todo pero vamos a asegurar el que para mi es el servicio primordial de todo administrador, pero a su vez se puede convertir en su peor pesadilla, este es el SSH en anteriores entradas se ha explicado como conectarse por medio de esta para administrar nuestros equipos remotamente y como se debe asegurar que sea con llave cifrada y no con contraseña, este nos evita un ataque por diccionario o por fuerza bruta.

bueno manos a la obra, lo primero es saber cual es el archivo de configuración que vamos a manejar y sacarle su respectiva copia, lo cual haremos así

root@localhost:~#cp /etc/ssh/sshd_config /etc/ssh/sshd_config.tmp

bueno empezaremos a asegurar el servicio paso a paso, por lo que nos pasamos al directorio /etc/ssh, primero que haremos será evitar que se puedan loguear como root, lo cual es fundamental y se debe hacer en ubuntu y en debian, así

root@localhost:/etc/ssh#awk '/^#? *PermitRootLogin/ { print "PermitRootLogin no"; next }; {print}' sshd_config.tmp > sshd_config

Ahora evitaremos que usen contraseña para el login, se debe usar llave cifrada como esta explicado en anteriores entradas del blog, lo cual es fundamental y se debe hacer en ubuntu y en debian, así

root@localhost:/etc/ssh#awk '/^#? *PasswordAuthentication/ { print "PasswordAuthentication no"; next }; {print}' sshd_config.tmp > sshd_config

Ahora evitaremos que se usen contraseñas vacias, si prefieres usaur contraseñas por lo menos que no sean vacias y preferiblemente con un simbolo ("!·$@...) eso aumenta mucho la seguridad, o cual es fundamental y se debe hacer en ubuntu y en debian, así

root@localhost:/etc/ssh#awk '/^#? *PermitEmptyPasswords/ { print "PermitEmptyPasswords no"; next }; {print}' sshd_config.tmp > sshd_config

Ahora evitaremos que en el banner salga información que no se debe publicar como usualmente sale en ubuntu, pero en debian también ocurre asi que es de la siguinete

root@localhost:/etc/ssh#awk '/^#? *Banner/ { print "Banner /etc/issue.net"; next }; {print}' sshd_config.tmp > sshd_config

Ahora miraremos el principal método de seguridad del SSH y es asegurarnos que solo funcione en la versión 2 del protocolo, lo cual se hace así

root@localhost:/etc/ssh#awk '/^#? *Protocol/ { print "Protocol 2"; next }; {print}' sshd_config.tmp > sshd_config

Ahora estos que pasaron son lo principales, pero hay otros que son de mucha ayuda para estar tranquilos habilitarlos y evitarnos lios, estos son asegurarnos que los siguientes valores esten así

X11Forwarding yes
RhostsAuthentication no
RhostsRSAAuthentication no
HostbasedAuthentication no
IgnoreRhosts yes

Bueno con esto tenemos asegurado el SSH, reinicias el servicio y queda asegurado y listo. Como dicen las abuelas "mas vale preveniar que lamentar"