Tras la resaca que hemos tenido con la vulnerabilidad de bash shellshock al tener que actualizar cientos de servidores Red Hat, os voy a explicar como realizar una relación de confianza entre servidores. ¿Para que sirve esto? En resumidas cuentas para acceder de un servidor a otro sin tener que estar escribiendo la contraseña. ¿Para que quiero esto? pues por ejemplo para lanzar desde un servidor, un script que sea capaz de conectarse a cada uno de esos cientos de servidores para actualizarlos. Para esto realmente existen otras herramientas mucho mas efectiva como puedan ser Chef o Puppet.

 Supongamos que tenemos dos servidores:

  • dbigcloud01
  • hispabigdata01

Y queremos que desde dbigcloud01 podernos conectar por ssh el usuario root sin que nos solicite las credenciales a hispabigdata01.

Relacion confianza ssh por DBigCloud

Lo primero que vamos a hacer es conectarnos al servidor dbigcloud01 y generar un par de claves publicas-privadas RSA. 

[root@dbigcloud01 ~]# openssl genrsa -out dbigcloudkey.pem 1024

Ahora vamos a extraer la clave pública. 

[root@dbigcloud01 ~]# ssh-keygen -y -f dbigcloudkey.pem > dbigcloudkey.pub

Ahora en el fichero dbigcloudkey.pub disponemos de nuestra clave pública y debemos llevarnosla hasta hispabigdata01. 

[root@dbigcloud01 ~]# scp -pr dbigcloudkey.pub root@hispabigdata01:/root 

Nos pedira la clave para acceder a hispabigdata01 la introducimos, y el fichero se copiara.

Ahora accedemos via ssh a hispabigdata01 y tenemos que crear el directorio .ssh dentro de la carpeta /root con permiso 700 para que únicamente el usuario root tenga permisos sobre este directorio:

[root@hispabigdata01 ~]# mkdir .ssh
[root@hispabigdata01 ~]# chmod 700 .ssh

 y el fichero de copiamos antes vamos a copiarlo en la carpeta .ssh y lo vamos a renombrar a authorized_keys y cambiamos su permiso a 600 para que solo el usuario root tenga permisos sobre él.

[root@hispabigdata01 ~]# mv dbigcloudkey.pub .ssh/authorized_keys
[root@hispabigdata01 ~]# chmod 600 .ssh/authorized_keys

Ahora si intentamos acceder desde dbigcloud01 a hispabigdata01 con el usuario root veréis que entraremos sin que nos pida la contraseña, de esta forma ya tenemos la relación de confianza entre servidores.
Es muy importante que os aseguréis que los permisos son los que indico ya que sino no conseguiréis la relación de confianza, lo mismo que se realiza para el usuario root se puede hacer para cualquier usuario.

chmod g-w /home/usuario
chmod 700 /home/usuario/.ssh
chmod 600 /home/usuario/.ssh/authorized_keys

Si veis que no conseguir la relación de confianza podéis comprobar en el log secure el porque no podéis acceder.

tail -f /var/log/secure

Si recibiis un mensaje indicando algo así:

Authentication refused: bad ownership or modes for directory /root/.ssh

Revisad los permisos que le habéis asignado al directorio y al fichero, aunque también podéis tener activado en el fichero /etc/ssh/sshd_config la opción StrictModes on si la tenéis será necesario establecerla a off y reiniciar el servicio ssh.

 ACTUALIZACION

Tras como nos comenta Felipe podemos usar el sccript ssh-copy-id para copiar nuestra clave de forma segura entre servidores.

 

[root@dbigcloud01 ~]#ssh-copy-id -i dbigcloud.pub root@hispabigdata01

 

Quizás te interese las siguientes entradas sobre Linux:


Compártelo:

FacebookTwitterDiggGoogle BookmarksLinkedIn

Daniel Romero Sanchez
Author: Daniel Romero SanchezWebsite: https://www.dbigcloud.com
Responsable de sistemas y Arquitecto Cloud - vExpert 2015/19- VCP550-DCV - LPIC-1


Comentarios  

+2 # ssh-copy-idfelipem 05-10-2014 14:11
Creo que es bastante más cómodo y asegura hacerlo bien utilizar ssh-copy-id para transferir la clave
Responder
0 # GraciasDaniel Romero Sanchez 05-10-2014 18:21
Gracias felipem, es otra forma más de usarlo, lo incluimos.
Responder

DBigCloud en tu idioma

esenfrdeitpt

Gold Sponsor

 

vExpert 2020

DbigCloud newsletter

Suscribete a nuestra newsletter y recibe cada semana los mejores artículos seleccionados por DBigCLoud.
Email type
Please wait