このセクションでは、Amazon Linux(EC2)のデフォルトユーザー(ec2-user)を未使用にすることについて紹介していきます。
Amazon Linux の OS で E2 インスタンスを立ち上げると、ec2-user というデフォルトユーザーが作成されています。デフォルトユーザーで EC2 インスタンスに接続して、sudo コマンドを実行するとパスワード無しで実行できてしまい、セキュリティ上好ましくありません。
su - コマンドでrootユーザーでログインしようとするとパスワードが要求されます
[ec2-user@ip-172-31-4-114 ~]$ su -
Password:
Last login: Tue Aug 22 05:16:36 UTC 2023 on pts/0
[root@ip-172-31-4-114 ~]#
sudo コマンドでrootユーザーでログインしようとするとパスワードは要求されずログインできてしまいます
[ec2-user@ip-172-31-4-114 ~]$ sudo su -
Last login: Tue Aug 22 05:25:55 UTC 2023 on pts/1
[root@ip-172-31-4-114 ~]#
ec2-userに変わるユーザーの作成
現在作成されているユーザー名とIDを確認しておきます。
[root@ip-172-31-4-114 ~]# cat /etc/passwd
ーー(省略)ーー
ec2-user:x:1000:1000:EC2 Default User:/home/ec2-user:/bin/bash
ssm-user:x:1001:1001::/home/ssm-user:/bin/bash
[root@ip-172-31-4-114 ~]#
ここでは、ユーザーID 1002 、ruser で新規ユーザーを作成します。ユーザーは適宜変更してください。
[root@ip-172-31-4-114 ~]# useradd -u 1002 ruser
[root@ip-172-31-4-114 ~]#
wheel グループに登録されているユーザーを確認します。この時点では、新規作成されたユーザーは wheel グループには登録されていません。
[root@ip-172-31-4-114 ~]# getent group wheel
wheel:x:10:ec2-user
[root@ip-172-31-4-114 ~]#
wheel グループ内ユーザーは、コマンド実行にパスワードが要求されるようになっていることを確認します(パスワード要求なしになっている場合には、修正する必要があります)。
[root@ip-172-31-4-114 ~]# cat /etc/sudoers
ーー(省略)ーー
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
ーー(省略)ーー
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL ← NOPASSWD: ALLの場合には、NOPASSWD: を削除してください
[root@ip-172-31-4-114 ~]#
wheel グループに作成したユーザーを登録します。登録後、wheel グループに ruser がいることを確認します。
[root@ip-172-31-4-114 ~]# usermod -aG wheel ruser
[root@ip-172-31-4-114 ~]#
[root@ip-172-31-4-114 ~]# getent group wheel
wheel:x:10:ec2-user,ruser
[root@ip-172-31-4-114 ~]#
作成した ruser ユーザーで EC2 インスタンスに接続します。デフォルトは下記のユーザー名が ec2-user になっているので変更して接続してください。
ruser で接続後、sudo で root ユーザーで接続しようとした時にパスワードを要求されれば正常に動作しています。
[ruser@ip-172-31-4-114 ~]$ sudo su -
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
For security reasons, the password you type will not be visible.
[sudo] password for ruser:
Last login: Tue Aug 22 05:36:10 UTC 2023 on pts/1
[root@ip-172-31-4-114 ~]#
ec2-userによるSSH接続の禁止
禁止前は、ec2-user による SSH接続 ができる状態になっています。
[user@almalinux ~]$ sudo sudo ssh -i ~/.ssh/test-keypair.pem ec2-user@(ec2-パブリックIPv4 DNS)
A newer release of "Amazon Linux" is available.
Version 2023.1.20230809:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Tue Aug 22 07:04:21 2023 from ***.***.***.***
[ec2-user@ip-172-31-4-114 ~]$
Amazon Linux の EC2 インスタンスで、sshd_config ファイルを編集します。
ファイルの最後尾に ruser の接続だけを許可する設定を一行追加します。
[ruser@ip-172-31-4-114 ~]$ sudo vi /etc/ssh/sshd_config
# Allow user 2023.8.23
AllowUsers ruser
sshd サービスを再起動し、設定を反映します。
[ruser@ip-172-31-4-114 ~]$ sudo systemctl restart sshd
[ruser@ip-172-31-4-114 ~]$
[ruser@ip-172-31-4-114 ~]$ sudo systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled)
Active: active (running) since Tue 2023-08-22 07:00:06 UTC; 7s ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 325332 (sshd)
Tasks: 2 (limit: 1114)
Memory: 2.5M
CPU: 18ms
CGroup: /system.slice/sshd.service
├─325332 "sshd: /usr/sbin/sshd -D [listener] 1 of 10-100 startups"
└─325389 "sshd: [accepted]"
Aug 22 07:00:06 ip-172-31-4-114.ap-northeast-1.compute.internal systemd[1]: sshd.service: Deactivated successfully.
Aug 22 07:00:06 ip-172-31-4-114.ap-northeast-1.compute.internal systemd[1]: Stopped sshd.service - OpenSSH server daemon.
Aug 22 07:00:06 ip-172-31-4-114.ap-northeast-1.compute.internal systemd[1]: sshd.service: Consumed 48.968s CPU time.
Aug 22 07:00:06 ip-172-31-4-114.ap-northeast-1.compute.internal systemd[1]: Starting sshd.service - OpenSSH server daemon...
Aug 22 07:00:06 ip-172-31-4-114.ap-northeast-1.compute.internal sshd[325332]: Server listening on 0.0.0.0 port 22.
Aug 22 07:00:06 ip-172-31-4-114.ap-northeast-1.compute.internal sshd[325332]: Server listening on :: port 22.
Aug 22 07:00:06 ip-172-31-4-114.ap-northeast-1.compute.internal systemd[1]: Started sshd.service - OpenSSH server daemon.
[ruser@ip-172-31-4-114 ~]$
正常であれば、ec2-user での接続ができなくなります。
[user@almalinux ~]$ sudo sudo ssh -i ~/.ssh/test-keypair.pem ec2-user@ec2-52-199-246-141.ap-northeast-1.compute.amazonaws.com
[sudo] password for yuji:
ec2-user@ec2-52-199-246-141.ap-northeast-1.compute.amazonaws.com: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
[user@almalinux ~]$
新規ユーザーによるSSH接続
新規ユーザー(ruser)でSSH接続できる環境を準備していきます。
新規ユーザーのホームディレクトリに .ssh フォルダがあるかどうか確認します。
[ruser@ip-172-31-4-114 ~]$ ls -la
total 16
drwx------. 2 ruser ruser 83 Aug 22 05:34 .
drwxr-xr-x. 5 root root 51 Aug 22 05:31 ..
-rw-------. 1 ruser ruser 914 Aug 22 08:11 .bash_history
-rw-r--r--. 1 ruser ruser 18 Jan 28 2023 .bash_logout
-rw-r--r--. 1 ruser ruser 141 Jan 28 2023 .bash_profile
-rw-r--r--. 1 ruser ruser 492 Jan 28 2023 .bashrc
[ruser@ip-172-31-4-114 ~]$
.ssh フォルダが無ければ、作成します。
[ruser@ip-172-31-4-114 ~]$ mkdir .ssh
[ruser@ip-172-31-4-114 ~]$
[ruser@ip-172-31-4-114 ~]$ chmod 700 .ssh/
[ruser@ip-172-31-4-114 ~]$
[ruser@ip-172-31-4-114 ~]$ ls -la
total 16
drwx------. 3 ruser ruser 95 Aug 22 08:36 .
drwxr-xr-x. 5 root root 51 Aug 22 05:31 ..
-rw-------. 1 ruser ruser 914 Aug 22 08:11 .bash_history
-rw-r--r--. 1 ruser ruser 18 Jan 28 2023 .bash_logout
-rw-r--r--. 1 ruser ruser 141 Jan 28 2023 .bash_profile
-rw-r--r--. 1 ruser ruser 492 Jan 28 2023 .bashrc
drwx------. 2 ruser ruser 6 Aug 22 08:36 .ssh
[ruser@ip-172-31-4-114 ~]$
ec2-user の環境から SSH接続で使用していた公開鍵を、新規ユーザーの環境へコピーします。
今回は、既存のキーペアを使用する前提です。新しいキーペアを使いたい場合には、新規でキーペアを作成してSSHサーバーに公開鍵、SSHクライアントに秘密鍵を配置してください。
[ruser@ip-172-31-4-114 ~]$ sudo cp -rp /home/ec2-user/.ssh/authorized_keys /home/ruser/.ssh/
[ruser@ip-172-31-4-114 ~]$
[ruser@ip-172-31-4-114 ~]$ sudo chown -R ruser:ruser /home/ruser/.ssh/authorized_keys
[ruser@ip-172-31-4-114 ~]$
[ruser@ip-172-31-4-114 ~]$ sudo ls -la /home/ruser/.ssh
total 4
drwx------. 2 ruser ruser 29 Aug 22 08:40 .
drwx------. 3 ruser ruser 95 Aug 22 08:36 ..
-rw-------. 1 ruser ruser 94 Aug 9 12:29 authorized_keys
[ruser@ip-172-31-4-114 ~]$
新規ユーザー(ruser)でSSH接続できるかどうか確認します。正常であれば、この時点でSSH接続できるようになります。
[user@almalinux ~]$ sudo sudo ssh -i ~/.ssh/test-keypair.pem ruser@(ec2-パブリックIPv4 DNS)
A newer release of "Amazon Linux" is available.
Version 2023.1.20230809:
Run "/usr/bin/dnf check-release-update" for full release and version update info
, #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Tue Aug 22 08:12:24 2023 from ***.***.***.***
[ruser@ip-172-31-4-114 ~]$
ec2-user の削除
完全に不要であれば、ec2-user ユーザー自体を削除します。
[ruser@ip-172-31-4-114 ~]$ sudo userdel -r ec2-user
[ruser@ip-172-31-4-114 ~]$