"sshd_config"で複数のユーザーを一致させる

"sshd_config"で複数のユーザーを一致させる

sshd複数のユーザーに同じ設定を適用しようとしています。

マニュアルによると、それがMatch Userすることは次のとおりですAND

条件付きブロックを導入します。その行のすべての条件が満たされると、Match次の行のキーワードが構成ファイルのグローバルセクションで設定されたキーワードよりも優先されます。

「次のユーザーの1つについて...」をどのように宣言しますか?この場合bob、、、joeおよびはphilSSHをプロキシとして使用できますが、ログインは許可されません。

Match User bob, User joe, User phil
    PasswordAuthentication yes
    AllowTCPForwarding yes
    ForceCommand /bin/echo 'We talked about this guys. No SSH for you!'

答え1

私が自分でしたことはなく、マニュアルに記載されているとおりに従うことができます。

sshd_configマニュアルから:

一致パターンは、単一項目またはカンマ区切りリストで構成でき、パターンセクションで説明されているワイルドカードおよび否定演算子を使用できますssh_config(5)

つまり、次のように言えるはずです。

Match User bob,joe,phil
  PasswordAuthentication yes
  AllowTCPForwarding yes
  ForceCommand /bin/echo 'We talked about this guys. No SSH for you!'

「カンマ区切り」とは、名前の間に余分なスペースを入れてはいけません。

情報セキュリティフォーラムのこの回答もご覧ください。SSHでユーザー固有の認証方法を作成する

答え2

ユーザー以外のグループに Match ディレクティブを使用します。次に、ユーザーをグループに追加します。

Match Group users_with_no_ssh
    PasswordAuthentication yes
    AllowTCPForwarding yes
    ForceCommand /bin/echo 'We talked about this guys. No SSH for you!'

答え3

ForceCommandがSFTPとうまく機能するかどうかはわかりません。また、ログに「DenyUsers」という単語を表示することをお勧めします。とにかく私はこれを使用します(もちろん、グループを使用する方が良いかもしれません):

sshd_config

# support, ansible & backup only from specific IP                                                                    
Match User ansible,backup,support Address *,!176.x.x.x                                                          
      DenyUsers ansible,backup,support

Match User backup
        AllowTcpForwarding yes
        AllowAgentForwarding yes
        PermitListen 127.0.0.1:2223
        AcceptEnv RESTIC_REPOSITORY RESTIC_PASSWORD

テスト構成

# sshd -T -C addr=176.x.x.x,user=backup | egrep '^((deny|allow)users|permitlisten|acceptenv)'
denyusers root
acceptenv RESTIC_REPOSITORY
acceptenv RESTIC_PASSWORD
permitlisten 127.0.0.1:2223

# sshd -T -C addr=8.8.4.4,user=backup | egrep '^((deny|allow)users|permitlisten|acceptenv)' 
denyusers ansible,backup,support
acceptenv RESTIC_REPOSITORY
acceptenv RESTIC_PASSWORD
permitlisten 127.0.0.1:2223

実際の世界テスト

Jan 29 16:50:12 mx1 sshd[71309]: Connection from 199.x.x.x port 21042 on 199.x.x.x port 2222 rdomain "0"   
Jan 29 16:50:13 mx1 sshd[71309]: User support from 199.x.x.x not allowed because listed in DenyUsers
Jan 29 16:50:13 mx1 sshd[71309]: Connection closed by invalid user support 199.x.x.x port 21042 [preauth]

関連情報