ForceCommand를 사용한 SSH PermitUserEnvironment의 위험 평가

ForceCommand를 사용한 SSH PermitUserEnvironment의 위험 평가

전용 서버 장치는 ssh하나의 로그인 계정에서만 로그인을 허용합니다.

  • 공개키만을 이용한 인증,
  • 그리고 구성된 명령을 실행합니다 ForceCommand.

로그인 계정은 여러 ID에서 사용할 수 있으며 각 ID에는 에 등록된 공개 키가 있습니다 authorized_keys.

이러한 공개 키 중 일부에 대한 명령에 제어 토큰을 전달하고 싶습니다.

환경 변수를 사용하여 이를 달성할 수 있으며 이를 environment=위해서는 authorized_keys.PermitUserEnvironment글로벌 옵션( sshd_config블록에서는 지원되지 않음 Match).

을 활성화하면 PermitUserEnvironment클라이언트가 환경 변수를 전달할 수도 있습니다. 그러나 다음과 같은 이유로 이것이 안전하다고 생각합니다.

  • AcceptEnv클라이언트는 서버의 설정에서 허용되는 변수만 전달할 수 있습니다.
  • 설정된 변수는 authorized_keys클라이언트에서 전달된 변수보다 우선합니다.
  • 유일한 유효한 로그인은 강제 명령을 실행하므로 환경을 조정할 수 있는 대화형 셸에 액세스할 수 없습니다.

그러므로 나는 믿는다

  • 사용 방법을 모른다면 AcceptEnv클라이언트가 환경 변수를 전달하는 것이 불가능해야 합니다.
  • 모든 공개 키에 변수 값을 설정하면 (잘못) 허용된 경우에도 클라이언트가 이를 재정의할 수 있는 방법이 없습니다 AcceptEnv.
  • 셸 액세스가 없으므로 환경을 수정할 수 있는 다른 방법은 없습니다.

이 제품을 사용해도 안전한가요 PermitUserEnvironment? 아니면 위에서 고려하지 않은 다른 위험이 있나요?

관련 정보