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_keys
archivo estándar. En lugar de un archivo estándar authorized_keys
, el binario /usr/bin/sss_ssh_authorizedkeys
envía una consulta a LDAP para sshd
formatearlo como un authorized_keys
archivo, 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 sssd
que le permite establecer configuraciones por grupo todavía estaba en desarrollo cuando me encontré con este problema.
Terminé agregando una ForceCommand
entrada a mi sshd_config
directiva Match
, así como una AcceptEnv
directiva:
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.