Limitar los usuarios de SSH en LDAP a un solo comando en un bastión SSH

Limitar los usuarios de SSH en LDAP a un solo comando en un bastión SSH

Tengo una red privada de servidores Centos 7. Solo se puede acceder a cada uno de los servidores a través de un bastión SSH. Además, todos estos servidores utilizan SSSD para autenticar las claves de los usuarios SSH en un directorio LDAP.

Debido a que las claves se autentican en un directorio LDAP, no existe un authorized_keysarchivo estándar. En lugar de un archivo estándar authorized_keys, el binario /usr/bin/sss_ssh_authorizedkeysenvía una consulta a LDAP para sshdformatearlo como un authorized_keysarchivo, pero no como un archivo en realidad. Por lo tanto, commands=" ... "hasta donde yo sé, no es posible limitar a los usuarios a comandos particulares vinculando claves RSA a las entradas.

Los usuarios de SSH pueden autenticarse a través del bastión en sus estaciones de trabajo usando el siguiente comando:

ssh -A -l [email protected] joes.workstation.ip -o ProxyCommand="ssh -l [email protected] -q bastion.ip nc joes.workstation.ip %p"

Desafortunadamente, también pueden acceder mediante SSH a una sesión en el servidor bastión, algo que no me gustaría que pudieran hacer.

¿Hay alguna forma de que pueda usar mis herramientas actuales (SSSD, SSHD, un directorio LDAP) para permitir a los usuarios SSH a través del bastión, pero noenel bastión?

Respuesta1

La versión sssdque le permite establecer configuraciones por grupo todavía estaba en desarrollo cuando me encontré con este problema.

Terminé agregando una ForceCommandentrada a mi sshd_configdirectiva Match, así como una AcceptEnvdirectiva:

Match Group [email protected]
  AcceptEnv SomeVariable
  AcceptEnv SomeOtherVariable
  ForceCommand /path/to/some/script/I/wrote

Luego, en el script de shell, uso las variables pasadas por el cliente ssh para realizar alguna acción.

Por ejemplo, si el cliente llamó a esto:

$ SomeVariable=foo ssh -i path/to/key -l [email protected] -o SendEnv=SomeVariable bastion.server

El script tendrá acceso a una variable de entorno SomeVariable; acceda a él usando el idioma que desee y utilícelo para realizar alguna acción.

Asegúrese de que su secuencia de comandos no salga a una sesión de shell en el bastión.

información relacionada