server-memo.net

SSHでログインユーザを制限

      2016/01/22

検証環境

CentOS 7

ログイン許可ユーザの設定

sshd_configに「AllowUsers」という項目を追加することで、接続を許可するユーザを指定することが出来ます。

AllowUsers書式

AllowUsersの書式はいくつかの種類がありますので、一覧にまとめてみました。

内容 記述例
接続許可ユーザ設定 AllowUsers ユーザ名
複数の接続許可ユーザ設定 AllowUsers ユーザ名1 ユーザ名2
特定のIPアドレスからのみ接続許可ユーザ設定 AllowUsers ユーザ名@接続元IP
特定のIPアドレスからのみ接続許可(全ユーザ) AllowUsers *@接続元IP

 

設定作業

CentOSの場合は/etc/ssh/sshd_configが対象ファイルとなりますので、バックアップを取ってから作業を行っていきます。

注意点

設定にミスがあった場合には、SSHで接続することが出来なくなってしまう場合がありますので、コンソールから接続できる環境や、もう一セッション別のSSH接続を用意しておく 等して下さい。

# cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config
# vi /etc/ssh/sshd_config
設定内容

今回は、userというユーザは無制限で接続を許可し、user2というユーザは接続元のIPアドレスが192.168.1.10の時のみ許可という設定にしました。

AllowUsers user user2@192.168.1.10

この設定内容を、sshd_configの一番最後の行に追加しました。

設定反映

設定の反映には、serviceコマンドを使用してsshd_configファイルの設定を読み込ませます。

# service sshd reload

 動作確認

実際にSSHで接続してみて、動作確認を行います。

接続許可ユーザ動作確認

userというユーザSSH接続した際の操作ログですが、正常にログイン出来ていることが確認できます。

※ちなみに、接続元のIPは192.168.1.13です。

$ ssh user@192.168.1.100
user@192.168.1.100's password: 
Last login: Sun Nov 30 23:41:23 2014 from 192.168.1.13
接続元IP制限ユーザ動作確認

次はuser2というユーザで接続した際のログです。

user2というユーザはsshd_configに記述してありますが、接続元のIPアドレスも制限しているため、Permission deniedと表示され接続できませんでした。

$ ssh user2@192.168.1.100
user2@192.168.1.100's password: 
Permission denied, please try again..

この時のサーバ側のログ(/var/log/secure)には、not allowed beacuse not listed in AllowUsersと書き込まれていました。

Nov 30 23:47:13 localhost sshd[22369]: User user2 from 192.168.1.13 not allowed because not listed in AllowUsers
Nov 30 23:47:13 localhost sshd[22369]: input_userauth_request: invalid user user2 [preauth]
接続許可設定なしユーザ動作確認

AllowUsersに登録されていないユーザである、user3というユーザで接続してみると、こちらの場合は接続することが出来ませんでした。

$ ssh user3@192.168.1.100
user3@192.168.1.100's password: 
Permission denied, please try again.

この場合も、サーバ側のログににはnot allowed beacuse not listed in AllowUsersと書き込まれていて、設定が正しく動作していることがわかりました。

Nov 30 23:47:13 localhost sshd[22369]: User user2 from 192.168.1.13 not allowed because not listed in AllowUsers
Nov 30 23:47:13 localhost sshd[22369]: input_userauth_request: invalid user user2 [preauth]

 以上です。

 - SSH