SSH root ログインとパスワード認証を禁止し、ユーザの公開鍵認証のみにする

SSH root ログインとパスワード認証を禁止し、ユーザの公開鍵認証のみにして、

ログイン後に sudo コマンドでパスワード入力無しで root 昇格するように設定するメモです。

使用した OS は以下の通り。

# cat /etc/centos-release
CentOS release 6.7 (Final)

root ログインとパスワード認証を禁止する設定

sshd_config のバックアップを取っておき....

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bk

sshd_config の設定を変更します。

# vim /etc/ssh/sshd_config

#rootログインを禁止
[変更前]
#PermitRootLogin yes
↓
[変更後]
PermitRootLogin no

#パスワード認証を禁止
[変更前]
PasswordAuthentication yes
↓
[変更後]
PasswordAuthentication no

ユーザの作成

ユーザを作成します。

# useradd iwamocchan
# passwd iwamocchan
ユーザー iwamocchan のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。

ログイン後 sudo コマンドで root 昇格できるようにする設定

ログイン後、sudo コマンドで root 昇格できるようにします。

sudoers ファイルは root でも読み取り権限しかありません。

# ll /etc/sudoers
-r--r-----. 1 root root 4000 10月  8 03:58 2015 /etc/sudoers

visudo で編集します。

# visudo
## Allows people in group wheel to run all commands
[変更前]
#%wheel        ALL=(ALL)       ALL
↓
[変更後:wheelグループのユーザは root 権限を全て利用できる]
%wheel        ALL=(ALL)       ALL

## Same thing without a password
[変更前]
#%wheel        ALL=(ALL)       NOPASSWD: ALL
↓
[変更後:sudo で root 昇格する際にパスワードを必要としない]
%wheel        ALL=(ALL)       NOPASSWD: ALL

ユーザのグループを wheel に変更します。

# id iwamocchan
uid=500(iwamocchan) gid=500(iwamocchan) 所属グループ=500(iwamocchan)

# usermod -g wheel iwamocchan
# id iwamocchan
uid=500(iwamocchan) gid=10(wheel) 所属グループ=10(wheel)

ユーザの公開鍵を作成

作成したユーザで .ssh ディレクトリを作成して、
パーミッション700 に変更し、移動します。

# su - iwamocchan
$ mkdir .ssh
$ chmod 700 .ssh
$ cd .ssh/

公開鍵を作成します。

$ ssh-keygen -t rsa -b 4096 -f iwamocchan.key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in iwamocchan.key.
Your public key has been saved in iwamocchan.key.pub.
The key fingerprint is:
b8:1c:9d:31:20:5c:a4:f4:15:55:f2:55:6d:a4:e3:ba iwamocchan@localhost.localdomain
The key's randomart image is:
+--[ RSA 4096]----+
|   .oo+ ooo.. .o+|
|   ..+ o   o . .o|
|    . . o   . o. |
|       o +   . . |
|      o S     .  |
|     . o     .   |
|      o     .    |
|             .   |
|            E    |
+-----------------+

$ ll
合計 8
-rw-------. 1 iwamocchan wheel 3311 10月  8 07:03 2015 iwamocchan.key
-rw-r--r--. 1 iwamocchan wheel  754 10月  8 07:03 2015 iwamocchan.key.pub

公開鍵を authorized_keys に書き込みます。

$ cat iwamocchan.key.pub > authorized_keys

パーミッション600 に変更します。

$ ll
合計 12
-rw-r--r--. 1 iwamocchan wheel  754 10月  8 07:04 2015 authorized_keys
-rw-------. 1 iwamocchan wheel 3311 10月  8 07:03 2015 iwamocchan.key
-rw-r--r--. 1 iwamocchan wheel  754 10月  8 07:03 2015 iwamocchan.key.pub

$ chmod 600 authorized_keys
$ ll
合計 12
-rw-------. 1 iwamocchan wheel  754 10月  8 07:04 2015 authorized_keys
-rw-------. 1 iwamocchan wheel 3311 10月  8 07:03 2015 iwamocchan.key
-rw-r--r--. 1 iwamocchan wheel  754 10月  8 07:03 2015 iwamocchan.key.pub

秘密鍵を手元に保存します。
.ssh 配下の秘密鍵と公開鍵は削除してしまって構いません。
(11/1 追記:検証のため、同じサーバ上で作業を行なっていますが、
本来、鍵作成はクライアント側で行ない、公開鍵をサーバのauthorized_keysに書き込みます。)

設定反映・確認

sshd を再起動します。

# service sshd restart

ログインしてみます。

f:id:iwamocchan11:20151025042110p:plain:w400

ログインできました。

f:id:iwamocchan11:20151025035410p:plain:w500

sudo コマンドで root 昇格します。

[iwamocchan@localhost ~]$ sudo -i
[root@localhost ~]#

パスワード入力なしで root 昇格できました。

root ログインできないことも確認しておきます。

f:id:iwamocchan11:20151025035249p:plain:w400

認証に失敗しているため、root ログインできないことが分かります。

以下を参考にさせていただきました!ありがとうございました!

sshのrootログインを禁止する

一般ユーザーを sudo できるようにする - maruko2 Note.

Linux - ssh公開鍵認証を実装する(自分メモ) - Qiita