Archivo

Entradas Etiquetadas ‘ssh’

SSHcomoRoot

Miércoles, 26 de Octubre de 2016

Ejecución de comandos remotos como root mediante SSH

En algunas situaciones es necesario ejecutar de forma remota comandos como root por SSH. Aunque es posible activar el acceso como root por SSH de forma remota, no es recomendable hacerlo por motivos de seguridad. Para mejorar esta seguridad podemos hacer que el acceso como root solo esté permitido autenticándose con clave pública (no mediante password).

Sin embargo, todavía podemos mejorar un poco más la seguridad, si restringimos los comandos que se pueden ejecutar de forma remota. Para ello, SSHD dispone de la opción forced-commands-only. Con esta opción activa, la autenticación solo se puede realizar mediante clave pública y además, para cada pública se asigna el único comando que se puede ejecutar con ella. Tendremos que crear tantas claves públicas como comandos diferentes queramos ejecutar, lo que puede ser un problema si el número de comandos es elevado.

Para utilizar esta opción procederemos de la siguiente forma:

  • En los clientes crearemos tantos pares de claves públicas/privadas como comandos diferentes vayamos a ejecutar. Lo podemos hacer con le comando ssh-keygen -t rsa -b 2048 (el algoritmo a utilizar en las claves y al longitud de las mismas las fijaremos según nuestras políticas). Cada una de estas claves deberá guardarse en un fichero diferente.
  • En el servidor, en la configuración de SSH (/etc/ssh/sshd_config) configuraremos el parámetro PermitRootLogin con el valor forced-commands-only y reiniciaremos el servicio sshd.
PermitRootLogin forced-commands-only
  • En el servidor, en el fichero de autorización de claves (/root/.ssh/authorized_keys) añadiremos una línea por comando con el siguiente formato:
from="%IP_CLIENTE%",command="%COMANDO%" ssh-rsa %CLAVE_PUBLICA%

Con esta línea, le decimos al servidor, que cuando un cliente se conecte desde %IP_CLIENTE% identificándose con el par de claves cuya clave publica es %CLAVE_PUBLICA% se ejecuta el comando %COMANDO% como root y se finalice la conexión.

  • Para ejecutar el comando desde el cliente escribiremos simplemente: ssh root@servidor -i %CLAVE_PRIVADA%. Mediante el parámetro -i hemos de especificar el fichero que contiene la clave privada correspondiente al fichero que queremos ejecutar.

Linux ,