Rootアクセス権を持たないサーバー上のGitリポジトリへのSSHアクセスを提供したいので、root以外のユーザーとしてSSHデーモンを実行しようとしています。カスタム構成とローカル証明書を使用して実行するようにしましたが、ログインは現在機能していません。
次のバージョンのsshd
を使用しています。
OpenSSH_7.4p1、OpenSSL 1.0.2k-fips 2017年1月26日
この段階では、構成などのサポートは求めていません(必要に応じて、個別の質問を投稿します)。これに時間を費やす前に、これが不可能であることを意味するハードコードされた制限があるかどうかを知りたいだけです。
SSHデーモンにroot以外のユーザーとして正常に使用することを妨げる厳しい制限はありますか?
かなりの量の調査に基づいて、私が発見したものは次のとおりです。
UsePrivilegeSeparation
オプションは削除され、この機能は 現在は常に有効 です。これは、SSHデーモンが別のユーザーとしてサブプロセスを実行できる必要があることを意味します。これにはrootが必要です。AuthorizedKeyCommands
オプションを使用する場合はrootが必要です。StrictModes
フラグは、これらのモードチェックを無効にするように聞こえますが、そうではないことにも注意してください。)getpwname()
システムコールを使用 ルートでのみ読み取り可能な/etc/shadow
を検索するようにハードコードされています。したがって、次の場合はmayルートとして実行できます。
UsePrivilegeSeparation
を無効にします私のユースケースではAuthorizedKeyCommands
が必要であるため、これ以上調査していません。そのため、行き止まりになりました。上記の条件が満たされている場合でも、root以外のユーザーにはさらに制限がある場合がありますが、私は 状況によっては、root以外のユーザーとして実行できたという証拠をいくつか見つけました =。
完全を期すために、上記のルールにはいくつかのエッジケースがあります。私はこれらをテストしていません。これらは、上記の調査中に遭遇したコードからの推論に基づいています。
/etc/passwd
ではなく/etc/shadow
に保存している場合、そのファイルは誰でも読み取り可能で表示されないため、パスワードベースの認証を使用できますmay明示的なモードであるために、OpenSSHコードでこれをチェックします。ただし、この方法でシステムを構成することは本当に危険なので、絶対に行わないでください。AuthorizedKeyCommands
を使用して、rootが所有しているが、ユーザーアカウントが実行可能なスクリプトを指す場合、この形式の認証を使用することができますmay。ただし、スクリプトではグループ/その他の書き込みアクセスを無効にする必要があるため、ルート以外でファイルを作成または編集することはできません。これにより、ルートアクセスがまったくない場合、これは解決策になりません。 。