web-dev-qa-db-ja.com

sshd_configでAllowGroupsとAllowUsersの両方を使用するにはどうすればよいですか?

専用のdebian7サーバーで/etc/ssh/sshd_configAllowUsersAllowGroupsの両方で変更しようとしています。ただし、両方を連携させることはできません。


セットアップ

  • testuserというユーザーがいます。
  • そのユーザーはssh-usersというグループに属しています:

    $ groups testuser
    testuser : testuser ssh-users
    
  • testuserssh testuser@<server_ip>経由で接続を試み、パスワードを入力しています。

  • 私のsshd_configは次の場所にあります: http://Pastebin.com/iZvVDFKL -基本的に、デフォルトから行った唯一の変更は次のとおりだと思います:
    • PermitRootLogin noを設定する
    • AllowUsersを使用して2人のユーザーを追加します(実際のユーザー名は私のサーバーでは異なります)
  • service ssh restartは、sshd_configを変更した後に毎回実行されます。

問題

  • testusercanAllowUsersで設定すると接続します:

    AllowUsers user1 user2 testuser
    
  • testuserできる[〜#〜]できない[〜#〜]いつ接続できるグループにAllowGroupsを設定:

    AllowUsers user1 user2
    AllowGroups ssh-users
    

    testuserがsshパスワードプロンプトにパスワードを入力すると、Permission denied, please try again.になります。


質問

  • AllowUsersAllowGroupsを上書きしますか?
  • ユーザー名をAllowUsersに手動で追加せずにこれを修正する最良の方法は何ですか?理想的には、今後ssh-usersに再度触れることなく、sshd_configグループにユーザーを追加できるようにしたいです。
31
Johannes

はい、AllowUsersAllowGroupsよりも優先されます。指定した場合、AllowUsersで指定したパターンに一致するユーザーのみがSSHDインスタンスに接続できます。

による sshd_configmanpage

許可/拒否ディレクティブは、DenyUsersAllowUsersDenyGroups、最後にAllowGroupsの順に処理されます。

したがって、問題の解決策はおそらくどちらか一方を使用することです。グループがユーザーを管理するための好ましい方法である場合は、おそらくグループアクセスディレクティブを使用することです。

Jeffの回答は質問の詳細を詳細にカバーしていますが、この質問では、少し異なるシナリオでAllowUsersAllowGroupsを使用することを検討しています。特定のサブネットからのグループ(ssh)のユーザーへの着信接続を制限したいと思いました。

sshd_config の接続ルールはフィルターです。追加のルールが適用されるたびに、受け入れ可能なユーザーのセットを減らすことしかできません。 PATTERNS in ssh_config(5) これらのルールの形式を説明します。

さらに、sshd_configAllowUsersセクションによれば、

パターンの形式がUSER @ Hostの場合、USERとHostが別々にチェックされ、特定のホストからの特定のユーザーへのログインが制限されます。ホスト基準には、CIDRアドレス/マスク長形式で照合するアドレスがさらに含まれる場合があります。

AllowGroupsは、USER @ Hostフォームを受け入れません。

したがって、1)sshグループのユーザーと2)特定のサブネット/ホストのユーザーを受け入れるには、次のようにします。

AllowUsers *@192.168.1.0/24 *@*.example.com *@1.2.3.4
AllowGroups ssh
6
bjacobowski

これが私たちが機能していることがわかった解決策です:

AllowUsers user1 user2
Match group ssh-users
    AllowUsers *
4
vimja