web-dev-qa-db-ja.com

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

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

マニュアルによると、それはMatch UserANDのように機能します:

条件付きブロックを導入します。 Match行の条件がすべて満たされている場合、次の行のキーワードは、構成ファイルのグローバルセクションで設定されているキーワードを上書きします

「これらのユーザーのいずれかのために...」とどのように述べるか、この例では、bobjoe、およびphilはSSHをプロキシとして使用することを許可されていますが、ログインを許可されていません:

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

自分でこれを行ったのではなく、私はマニュアルが言うことだけを続けることができます:

_sshd_config_マニュアルから:

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

これはあなたが言うことができるはずであることを意味します

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

情報セキュリティフォーラムのこの回答もご覧ください。 https://security.stackexchange.com/a/18038

20
Kusalananda

ユーザーではなくグループに対してMatchディレクティブを使用します。次に、そのグループにユーザーを追加します

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

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]
0
Jiri B

基本的にあなたの構文は間違っています、あなたは持っています:

Match User bob, User joe, User phil

しかしそれは

Match User bob,joe,phil
0
m4rinos