LDAP의 SSH 사용자를 SSH 요새에서 하나의 명령으로만 제한

LDAP의 SSH 사용자를 SSH 요새에서 하나의 명령으로만 제한

Centos 7 서버의 개인 네트워크가 있습니다. 각 서버는 SSH 요새를 통해서만 접근할 수 있습니다. 또한 이러한 서버는 모두 SSSD를 사용하여 LDAP 디렉터리에 대해 SSH 사용자 키를 인증합니다.

키는 LDAP 디렉터리에 대해 인증되기 때문에 표준 파일이 없습니다 authorized_keys. 표준 파일 대신 authorized_keys바이너리 /usr/bin/sss_ssh_authorizedkeys는 LDAP에 대한 쿼리를 파이프하여 파일 sshd형식으로 지정 authorized_keys하지만 실제로는 파일 형식이 아닙니다. 따라서 내가 아는 한 RSA 키를 항목에 바인딩하여 사용자를 특정 명령으로 제한하는 commands=" ... "것은 불가능합니다.

SSH 사용자는 다음 명령을 사용하여 요새를 통해 워크스테이션에 인증할 수 있습니다.

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

불행하게도 이들은 요새 서버의 세션에 SSH로 접속할 수도 있는데, 저는 그들이 그렇게 할 수 있기를 바라지 않습니다.

어쨌든 현재 도구(SSSD, SSHD, LDAP 디렉터리)를 사용하여 SSH 사용자가 요새를 통과하도록 허용할 수 있습니까?~ 안으로요새?

답변1

sssd이 문제가 발생했을 때 그룹별로 구성을 설정할 수 있는 버전은 아직 개발 중이었습니다.

나는 지시문뿐만 아니라 지시문 아래 ForceCommand에 항목을 추가했습니다 .sshd_configMatchAcceptEnv

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

그런 다음 쉘 스크립트에서 SSH 클라이언트가 전달한 변수를 사용하여 일부 작업을 수행합니다.

예를 들어, 클라이언트가 다음을 호출한 경우:

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

스크립트는 환경 변수에 액세스할 수 있습니다 SomeVariable. 원하는 언어를 사용하여 액세스하고 이를 사용하여 조치를 취하세요.

스크립트가 요새의 셸 세션으로 종료되지 않는지 확인하세요.

관련 정보