SSH で接続できるユーザーを限定する

fail2ban のスクリプトファイルを眺めていたら、SSH のユーザーログインの禁止に AllowUsers と DenyUsers というオプションが目についたので、動作を確認してみた。

設定

設定ファイル /etc/ssh/sshd_config に設定を追加することで、接続できるユーザーを限定したり、設定したユーザーを接続を拒否できる。

ユーザー名で接続を許可する

1
AllowUsers user01 user02

ユーザー名と接続元IPアドレスで接続を許可する

1
AllowUsers user01@192.168.1.1

設定を反映させる

設定ファイルを編集したら、sshd をリロードして設定を反映させる。

1
$ sudo systemctrl reload sshd

接続許可のないユーザー名で ssh ログインを試みると、/var/log/auth.log にログが出力される。

1
2
Jun 30 18:31:29 localhost sshd[xxxxx]: User user2 from 192.168.1.100 not allowed because not listed in AllowUsers
Jun 30 18:31:29 localhost sshd[xxxxx]: input_userauth_request: invalid user user10 [preauth]

OS に登録のないユーザーの場合と一緒なんじゃないか?という疑問もあったので登録のないユーザーで SSH を試みたときのログは、

1
2
Jun 30 18:38:53 host01 sshd[xxxxx]: Invalid user user99 from 192.168.0.100 port 64566
Jun 30 18:38:53 host01 sshd[xxxxx]: input_userauth_request: invalid user user99 [preauth]

なので、登録がないユーザーの場合と、ログインが禁止されているユーザーではログの出力内容が違うことも確認できた。