以下のロジックに従うAllowUsersディレクティブの非常に具体的な構成を試しています。
私は以下を試しました:
AllowUsers user1@Host1 user1@!* *@*
残念ながら、@が存在する場合は常に、順序が何であれ、前のパラメーターを無効にします。
2つの質問があります。 AllowUsersディレクティブ内のパラメーターが実行される順序はありますか?上記のロジックも可能ですか?
sshd_config man は、処理の順序が次のとおりであることを示しています。
Allow/denyディレクティブは、DenyUsers、AllowUsers、DenyGroups、最後にAllowGroupsの順序で処理されます。
したがって、「user1」にも独自のグループ「user1」がある場合は、次の構成を使用できます。
AllowUsers *@Host1
DenyGroups user1
AllowGroups *
別のオプションは、否定を使用することです。
DenyUsers user1@!Host1
AllowUsers *@*
上記のロジックは、sshdの1つのインスタンスだけでは不可能です。ただし、2番目のsshdインスタンス(別のポートでリッスンするように構成されている)を実行する場合は可能です。
次のコマンドで最初のインスタンスを構成します。
DenyUsers user1
2番目のインスタンスを次のように構成します。
AllowUsers user1@Host1
User1に2番目のインスタンス(別のポート)に接続するように指示します。他のすべてのユーザーに、最初のインスタンス(デフォルトのポート)に接続するように指示します。
注:SSH PAM CONFIG(多数のユーザーに推奨)またはTCPラッパー)を使用してsshアクセスを許可または拒否することもできますが、作成するにはlibwrap.aライブラリを取得する必要があります。 SSHで動作します。
SSHD CONFIGを介してアクセスを制限する場合は、次の4つのエントリを使用できます。
AllowUsers AllowGroups DenyUsers DenyGroups
パターンマッチングは、DenyUsers、AllowUsers、DenyGroups、AllowGroupsの順序で行われます。つまり、たとえば、両方のエントリ(AllowUsersとDenyUsers)にユーザーを追加すると、構成スクリプトにルールが表示される順序に関係なく、ユーザーが拒否されます。
あなたが言及した3つの制限を達成するために、グループsshgroupを作成し、を除くすべてのユーザーアカウントを構成してみてください。 user1、グループに含まれます。最後に、sshgroupのユーザーを、常に以下を含むsshd_configファイルのルールに追加するスクリプトを作成できます。
AllowUsersuser1 @ Host1
その結果:
AllowUsersuser1 @ Host1 user2 user3 ...
Sshd構成ファイルを最新の状態に保つために、ユーザーが作成/削除されるたびにスクリプトを呼び出すことができます。設定ファイルを変更するたびに、sshデーモンを再起動することを忘れないでください。
ここ ユーザーリストを生成しようとしているスクリプト「pop_user_allow_ssh」を見つけることができます。
あなたはあなたのOSについて言及していませんが、これは私がAIXでそれをした方法です。このアイデアがお役に立てば幸いです。
# Deny user1 from all hosts but Host1
DenyUsers user1@!Host1,*
# Allow all users from any Host that are not denied yet
AllowUsers *@*