【Amazon Linux】ec2-userを廃止して同権限のユーザーを追加する
どもども!Fruraのメンズラインも意外とおしゃれでええ感じなことを知ったsaisaiです。
みなさん、Amazon Linux(2)利用しておりますでしょうか。AWS上でEC2を用いて仮想サーバを立てる際、使用OSの筆頭として上がってくるのがAmazon Linux(2)かと思います。
Amazon Linuxにはログインできるデフォルトユーザーとしてec2-userが仮想サーバが立ち上がった時点で自動的に作成されています。このec2-userですが、自動生成初期ユーザーにもかかわらずsudoがパスワードなしで利用できます。
sudoがパスワードなしで利用できるユーザーの存在については賛否両論あるかとは思いますが、筆者は余程クリティカルなサービスでなければアリだと思っています。
ですが、ログイン情報の片割れであるユーザー名が広く知られたものというのはあまり感心しませんので、ec2-userと同権限のユーザを作成してec2-userを無効化しておくことにしました。
設定方法を共有しますので必要に応じて利用してください。
※外部からec2-userでssh接続して実行するプログラムなどが存在しないか十分に確認の上設定してください!
設定方法(詳細解説なし)
先に簡易解説の設定方法を記載しておきます。
とりあえずユーザーの作成とec2-userの無効化をできればOKという方はこちらを参照してください。秘密鍵を使い回すパターンと新規作成するパターンを用意しておきました。
・ec2-userのキーペアを使い回すパターン
#EC2インスタンスにSSH接続した後のオペレーションです
$ sudo su -
$ useradd -u ユーザID ユーザ名
$ usermod -aG wheel ユーザ名
$ groups グループ名 #作成したユーザーがwheelグループに所属していることを確認してください
$ visudo
%wheel ALL=(ALL) NOPASSWD: ALL <-この行の#を削除してください
$ mkdir /home/ユーザ名/.ssh
$ chmod 700 /home/ユーザ名/.ssh
$ cp /home/ec2-user/.ssh/authorized_keys /home/ユーザー名/.ssh
$ chown -R ユーザ名:ユーザ名 /home/ユーザ名/.ssh
***
ここで一度作成したユーザーでSSH接続し、rootユーザにスイッチできるか確認してください。
***
#ec2-userの公開鍵をリネームしてSSH接続できないようにしておきます。
$ mv /home/ec2-user/.ssh/authorized_keys /home/ec2-user/.ssh/authorized_keys.bk
#ec2-userが確実に不要になったことを確認できる場合は削除してもいいでしょう。
$ userdel -r ec2-user
・新規ユーザようにキーペアを発行する場合
サーバ接続前にキーペアを作成しておいてください。以下に作成コマンド例を置いておきます。(秘密鍵にパスワードは不要派なのでノーパス鍵を作成するコマンドです!ご注意ください!)
・Windows(Powershell)
ssh-keygen.exe -q -t rsa -b 4096 -C '""' -N '""' -f 秘密鍵名
・MacOS(ターミナル)
ssh-keygen -q -t rsa -b 4096 -C '' -N '' -f 秘密鍵名
chmod 600 秘密鍵名
#EC2インスタンスにSSH接続した後のオペレーションです
$ sudo su -
$ useradd -u ユーザID ユーザ名
$ usermod -aG wheel ユーザ名
$ groups グループ名 #作成したユーザーがwheelグループに所属していることを確認してください
$ visudo
%wheel ALL=(ALL) NOPASSWD: ALL <-この行の#を削除してください
$ mkdir /home/ユーザ名/.ssh
$ chmod 700 /home/ユーザ名/.ssh
$ vi /home/ユーザー名/.ssh/authorized_keys #公開鍵(pub拡張子の方)の内容をコピペしてください
$ chmod 600 /home/ユーザー名/.ssh/authorized_keys
$ chown -R ユーザ名:ユーザ名 /home/ユーザ名/.ssh
***
ここで一度作成したユーザーでSSH接続し、rootユーザにスイッチできるか確認してください。
***
#ec2-userの公開鍵をリネームしてSSH接続できないようにしておきます。
$ mv /home/ec2-user/.ssh/authorized_keys /home/ec2-user/.ssh/authorized_keys.bk
#ec2-userが確実に不要になったことを確認できる場合は削除してもいいでしょう。
$ userdel -r ec2-user
では次の章より各オペレーションの設定内容を確認していきましょう。
秘密鍵を作成する
新しく作成したユーザに合わせて秘密鍵を新規発行する場合はこの手順を行います。
キーペアを作成するコマンドは以下のとおりです。
・Windows(Powershell)
ssh-keygen.exe -q -t rsa -b 4096 -C '""' -N '""' -f 秘密鍵名
・MacOS(ターミナル)
ssh-keygen -q -t rsa -b 4096 -C '' -N '' -f 秘密鍵名
chmod 600 秘密鍵名
なお、こちらはパスフレーズを使用しないキーペアを作成するコマンドです。-Nオプションでパスフレーズを指定することができますが、今回は空欄、つまりパスフレーズなしを指定しています。
暗号形式はrsa、鍵のbit数は4096を指定、コメントも特になしです!
SSH接続の際、弾かれることがないように秘密鍵の権限は絞っておきましょう。
ユーザ作成
次にec2-userの代わりとなるユーザを作成していきましょう。
まずはいつも通りec2-userでssh接続してください。その後rootユーザにスイッチしておきましょう。
$ sudo su -
続いてユーザを作成します。
$ useradd -u ユーザID ユーザ名
ユーザIDは1000以上の空いているIDを利用しておくと良いでしょう。使用されているIDは下記コマンドで確認できます。
$ cat /etc/passwd
次に作成したユーザをwheelグループに配置します。wheelグループに所属するユーザはsudoを実行することができます。ユーザがwheelグループに所属しているかをgroupsコマンドで確認しておきましょう。
$ usermod -aG wheel ユーザ名
$ groups グループ名
これで作成したユーザはsudoを実行できますが、現時点ではパスワードを必要としているのでパスワードを要求されないように設定します。
$ visudo
%wheel ALL=(ALL) NOPASSWD: ALL <-この行の#を削除してください
これで、sudoをパスワードなしで実行できるec2-userに変わるユーザを作成できました!
公開鍵を配置する
次に作成したユーザでサーバにSSH接続できるように設定します。
まずはSSH接続に必要な公開鍵を配置するディレクトリを作成し、権限を適切なものに変えておきます。
$ mkdir /home/ユーザ名/.ssh
$ chmod 700 /home/ユーザ名/.ssh
ここからはec2-userでの接続に使用している公開鍵を使い回すパターンと新しく作成した公開鍵を使用するパターンでオペレーションが代わりますので注意が必要です。
・ec2-userでの接続に使用している公開鍵を使い回すパターン
すでにec2-userディレクトリ以下に存在する公開鍵を新規ユーザのディレクトリにコピーして利用します。コピーした後公開鍵の所有者を新規ユーザに変更します。
$ cp /home/ec2-user/.ssh/authorized_keys /home/ユーザー名/.ssh
$ chown -R ユーザ名:ユーザ名 /home/ユーザ名/.ssh
・新しく作成した公開鍵を使用するパターン
先ほど作成したキーペアの公開鍵を利用します。作成したキーペアの公開鍵(.pub拡張子の方)の全文を、サーバで作成した公開鍵にコピペすることでサーバ側でも同様の公開鍵を利用することが可能です。作成した公開鍵は権限を絞っておきます。先ほど同様所有者も新規ユーザに変更しておきましょう。
$ vi /home/ユーザー名/.ssh/authorized_keys #公開鍵(pub拡張子の方)の内容をコピペしてください
$ chmod 600 /home/ユーザー名/.ssh/authorized_keys
$ chown -R ユーザ名:ユーザ名 /home/ユーザ名/.ssh
これでSSH接続に必要な設定も完了しました。実際に新規ユーザでSSH接続してrootユーザにスイッチできるか確認しましょう。※必ずこの確認を行ってから次の"ec2-userの廃止"に進んでください。サーバに接続できなくなる可能性があります。
ec2-userを廃止する
新規ユーザでのSSH接続が確認できましたら、ec2-userを廃止しましょう。
方法はたくさんありますが、ここでは例として2つほど紹介しておきます。
・既存の公開鍵をリネームしてec2-userでssh接続できないようにする
使用している公開鍵をリネームして無効化します。これでec-userでのssh接続を遮断しつつ、ユーザを残しておくことが可能です。
$ mv /home/ec2-user/.ssh/authorized_keys /home/ec2-user/.ssh/authorized_keys.bk
名前を元に戻せば再びec2-userで接続できます。
・ec2-userを削除する
ec2-userをもはや必要としない場合は削除してしまうことも可能です。ただし、十分に確認の上自己責任でお願いします。
$ userdel -r ec2-user
以上でec2-userに変わるユーザの作成完了です!
まとめ
今回はec2-userに変わるユーザを作成し、ec2-userを廃止する方法を紹介してみました。
とはいえこの方法がベストかどうかはよく分かりません。ユーザ操作方法や、取り扱いの方針は多く存在するので要件に合わせて正しく設定することが大事かと思います。
ec2-userの代替に限らず、ただ単にlinuxユーザを作成するだけでもこちらの手順は使用できますのでうまく活用していただけたらな思います!
最後まで読んでいただきありがとうございました!
↓オススメ教材