馬とテニスのIT革命
馬とテニスとリラックマが好きな IT 系のエンジニアです。
AWS

AmazonLinuxで新しいユーザを作成してec2-userを削除する

AmazonLinux ではデフォルトで ec2-user というユーザが作成されています。

これは AmazonLinux で EC2 を構築した際にも紹介しました。

あわせて読みたい
AWSでWebサーバ用途にEC2(AmazonLinux)の環境を構築するAmazonLinux2 が正式リリースされて 1 ヶ月以上が経過しました。 次に新しく EC2 を作るなら乗り換えるのもアリかな...

またこの ec2-user は、EC2 インスタンスを構築する際に設定する秘密鍵でアクセス可能となっています。

要は authorized_keys にその秘密鍵に対応する公開鍵の情報が設定されているということです。

/home/ec2-user/.ssh/authorized_keys

今回は、この ec2-user とは別のユーザを作成し、ec2-user でアクセスできないようにしていきます。

ec2-userのユーザを削除する理由

わざわざ用意されている ec2-user をなぜ削除するの?って疑問に思う人もいるかもしれません。

その理由は大きく 2 つあります。

  • デフォルトで用意されているユーザなので狙われる
  • 秘密鍵にパスフレーズがない

AWS で管理されているサーバなら ec2-user というユーザがいるだろうと推測されると、ssh のアタックがあるかもしれません。

まあ、鍵認証であればそう簡単にはアクセスできないですが、気分的には推測されるユーザ名はなくしておきたいところです。

パスフレーズについてですが、何も敵は外部だけではありません。

敵は社内にいるかもしれませんし、例え秘密鍵を持っている PC が他の人に触られたとしてもパスフレーズが空じゃなければ救われます。

新しいユーザの作成

先に ec2-user を削除すると操作できなくなってしまうので、新しいユーザをまず作ります。

その新しいユーザが ssh で EC2 にアクセスできることが確認出来てから ec2-user は削除しましょう。

まずは、ec2-user で EC2 に接続し root になります。

root ユーザになる際にもパスワード設定しておくとより安全ですがここでは省略します。

$ sudo su -

試しに saratoga というユーザを追加します。

$ adduser saratoga

.sshディレクトリのコピー

ディレクトリを新たに作成してもいいですが、ここでは ec2-user の /home/ec2-user/.ssh ディレクトリを /home/saratoga にコピーします。

$ cp -r /home/ec2-user/.ssh /home/saratoga/

また、/home/saratoga/.ssh 配下の権限を変更しておきます。

$ chown -R saratoga:saratoga /home/saratoga/.ssh

そのまま authorized_keys をすぐに書き換える場合はこれでいいですが、すぐに saratoga ユーザ用の公開鍵を設定しない場合は一旦、authorized_keys は削除しておきましょう。

$ rm -f /home/saratoga/.ssh/authorized_keys

saratogaユーザでアクセスするための鍵を作成

ローカル PC で公開鍵と秘密鍵のキーペアを作成します。

鍵の作成される場所と、パスフレーズを設定したら鍵が生成されます。

-C はコメントオプションなので任意で構いません。

$ ssh-keygen -t rsa -C "saratoga key"

出来上がった鍵ペアのうち、公開鍵を EC2 の saratoga ユーザの authorized_keys に設定します。

公開鍵は id_rsa.pub というファイル名になっていますので、そのファイルの中身をコピーして authorized_keys に追記します。

$ vi /home/saratoga/.ssh/authorized_keys

新たに authorized_keys を作った場合は権限を変更しておきましょう。

$ chown saratoga:saratoga /home/saratoga/.ssh/authorized_keys

$ chmod 600 /home/saratoga/.ssh/authorized_keys

root権限の付与

saratoga ユーザに root ユーザへの昇格権限を付与します。

$ visudo

ここに以下を追記します。ここまでアクセスができたら OK として今回はパスワードなしにします。

saratoga ALL=(ALL) NOPASSWD: ALL 

ファイルの途中に以下の記述があるので、この下くらいに書いておくとわかりやすいと思います。

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
### ここに追加する ###

root になる時に saratoga ユーザのパスワードを要求したい場合は、追加する設定を以下のようにします。

saratoga ALL=(ALL) ALL

その場合、事前に saratoga ユーザにパスワードを設定しておきましょう。

$ passwd saratoga

saratogaでsshアクセス

ここまで設定ができたら、saratoga ユーザで ssh の接続を試してみます。

先ほど作成した秘密鍵を使って EC2 に ssh します。

設定したパスフレーズを使って認証に成功したら、コンソールにアクセスができているハズです。

ec2-userの削除

これでようやく ec2-user の削除ができます。

ec2-user の ssh でのアクセスを止めて、ユーザ自体を残しておくことも可能ですが、どうせ使わないと思うのでズバっと削除しちゃいましょう。

ちなみに削除する際は、ec2-user から root になったユーザではなく、saratoga から root になって削除します。

$ userdel -r ec2-user
Web API The Good Parts

オライリーの「Web API」に特化した本です。最近の多くの Web サービスは API が活用されていますが、その技術はこれまでの Web サイトとそれほど大きく変わりません。

今後、マイクロサービス化が進む中で知っておいて損はない内容が詰め込まれており、現場のエンジニアやこれから Web 系のエンジニアを目指す人にもオススメの一冊です。

created by Rinker
¥2,376
(2018/10/20 14:06:04時点 Amazon調べ-詳細)

あなたにオススメ