AWSのLightsailでUbuntu20.04を使ってみる!(Webサーバー構築①)

AWSのLightsailでUbuntu20.04を使ってみる!(Webサーバー構築①)

2023/12/02

Lightsailでは、OSだけでなくアプリも一緒にインストールされた状態で使うこともできます。しかし一からカスタマイズして使いたかったので、OSのみでインスタンスを作成して、必要なアプリを入れてWebサーバを構築していきます。

インスタンスの作成

Ubuntu 20.04 LST を選択して、インスタンスを作成します。

インスタンスが作成されます。「保留中」と表示されますが、30秒ほど待つと「実行中」に変わります。

インスタンス名(Ubuntu-1)をクリックして、ネットワーキングの設定を開きます。

「静的IPをアタッチする」をクリックして、パブリックIPを割り当てます。

デフォルトユーザーで接続

デフォルトユーザーでSSHへ接続するには「ブラウザを使用する」もしくは「デフォルトキーを使用する」の方法があります。

ブラウザを使用してSSHに接続

接続から「SSHを使用して接続」をクリック

ブラウザでSSHが起動します。

デフォルトキーを使用してSSHに接続

接続の「デフォルトキーのダウンロード」で秘密鍵をダウンロードします。

ダウンロードした秘密鍵を、Windowsの場合は「C:\Users\{user_name}\.ssh\***.pem」に、Mac/Linuxの場合は「~/.ssh/LightsailDefaultKey-ap-northeast-1.pem」に保存しておくといいと思います。

本記事では、秘密鍵のパスを「.ssh/LightsailDefaultKey-ap-northeast-1.pem」と表記します。

ターミナル/コマンドプロンプトを開いて、SSHに接続します。

>ssh -i .ssh/LightsailDefaultKey-ap-northeast-1.pem {user}@{host}
  • {user}:ユーザー名 (画面では ubuntu)
  • {host}:接続先 (画面では 43.206.28.215)

この画面が表示されたら「yes」を入力してEnterを押します。

一番下が「{user}@ip-***: ~$」になっていればSSHの接続完了です。

新たにユーザーを作成してSSH接続

デフォルトで用意されているユーザー(ここでは ubuntu)をそのまま使うと、セキュリティ的によろしくないので、新しくユーザーを作成します。

ユーザー作成

ユーザー追加

ユーザーを追加します。「test_user」の部分に好きなユーザー名を指定します。(以下、ユーザー名を「test_user」とします。適宜置き換えてください。)

New password: でパスワードの入力を求められます。このときキーを押しても何も反映されませんが、入力できているので、入力できたらEnterを押します。

Retype new password: でパスワードを再度入力します。

userの情報を入力しますが、何も入力せずにEnterを連打します。

最後に入力した情報が正しいか聞かれるので、大文字の「Y」を押してEnterを押します。

$ sudo adduser test_user
Adding user `test_user' ...
Adding new group `test_user' (1001) ...
Adding new user `test_user' (1001) with group `test_user' ...
Creating home directory `/home/test_user' ...
Copying files from `/etc/skel' ...
New password: # ← ここでパスワードを入力する
Retype new password: # ← 再度パスワードを入力する
passwd: password updated successfully
Changing the user information for test_user
Enter the new value, or press ENTER for the default
        Full Name []:
 # ← ここは何も入力せずにEnter
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] Y # ← Y を入力してEnter

sudoグループに追加

作成するユーザーはデフォルトだとsudoが使えないので、グループに追加します。

$ sudo gpasswd -a test_user sudo
Adding user test_user to group sudo

所属グループを確認して、sudoが表示されるか確認します。

$ groups test_user
test_user : test_user sudo

パスワードログインを許可

Ubuntuのデフォルトの設定では、SSHに接続する際にパスワードで接続することを拒否されるので、パスワードで接続するのを許可させます。

「/etc/ssh/sshd_config」のファイルを編集します。「PasswordAuthentication yes」にします。

$ sudo sed -i 's/PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config

最後にSSHを再起動しておく。

$ sudo systemctl restart ssh

これで準備完了です。SSHのターミナルを閉じます。

$ exit

パスワードでSSH接続

ターミナル/コマンドプロンプトを開いて、SSHに接続します。パスワードが求められるので、先程設定したパスワードを入力します。

{host}はデフォルトキーを使用してSSHに接続で確認してください。

>ssh test_user@{host}
test_user@43.206.28.215's password: # ←設定したパスワードを入力

「test_user@ip-**:~$」のように表示されていれば、パスワードを用いたSSHの接続確認ができました。

秘密鍵でSSH接続

キーペアの作成

秘密鍵と公開鍵のキーペアを作成する。SSHには接続せず、ターミナル/コマンドプロンプトで行う。

キーペアのファイル名をここでは「test_key」とします。パスフレーズを入力すると、この鍵を用いてSSH接続するときにパスフレーズの入力が求められます。

2つの鍵が生成されます。

  • test_key:秘密鍵(自分のPCに保存する鍵)
  • test_key.pub:公開鍵(Lightsailに上げる鍵)
>ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (**/.ssh/id_rsa): **/.ssh/test_key # ←キーペアを保存するファイルパスを指定
Enter passphrase (empty for no passphrase): # ←パスフレーズを入力(空白でもよい)
Enter same passphrase again: # ←再度パスフレーズを入力
Your identification has been saved in **/.ssh/test_key
Your public key has been saved in **/.ssh/test_key.pub
The key fingerprint is:
SHA256:vlpqAupmSV+MkfLMYbtOUa3KtgNvore8PSsxBtn+qQ0 ****
The key's randomart image is:
+---[RSA 4096]----+
|                 |
|      .          |
| o  .. .         |
|o..=. .          |
| o*.*.  S        |
| oB*oo .         |
|.oEXo.  o        |
|.*=X* .o .       |
|*oOB==o..        |
+----[SHA256]-----+

公開鍵の登録

「test_key.pub」の中身をコピーしておきます。

次に、パスワードでSSH接続をします。

>ssh test_user@{host}

公開鍵の登録を行います。ターミナル/コマンドプロンプトで右クリックするとコピーしたものをペーストすることができます。

登録が完了したらターミナル/コマンドプロンプトを閉じておきます。

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ echo "{コピーした公開鍵}" >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ exit

SSH接続

作成したユーザーとキーペアでSSH接続できるか確認します。

>ssh -i .ssh\test_key test_user@{host}

セキュリティ強化

パッケージアップデート

$ sudo apt update
$ sudo apt upgrade -y

SSH設定

ポート変更

SSHのポート番号はデフォルトで22ですが、そのままだとセキュリティ的によくないので、基本的には変更します。例えば、22から22222に変更します。

$ sudo sed -i 's/#Port.*/Port 22222/g' /etc/ssh/sshd_config

ネットワーキングの設定から「IPv4ファイアウォール」の「ルールを追加」をクリックします。

「ポートまたは作成」に22222を入力して「作成」を押します。

ログインログの変更

$ sudo sed -i 's/#SyslogFacility.*/SyslogFacility AUTHPRIV/g' /etc/ssh/sshd_config
$ sudo sed -i 's/#LogLevel.*/LogLevel VERBOSE/g' /etc/ssh/sshd_config

Rootのログイン禁止

$ sudo sed -i 's/#PermitRootLogin.*/PermitRootLogin no/g' /etc/ssh/sshd_config

パスワードログインを禁止

$ sudo sed -i 's/PasswordAuthentication.*/PasswordAuthentication no/g' /etc/ssh/sshd_config

最後にSSHを再起動しておく。

$ sudo systemctl restart ssh

ここでターミナル/コマンドプロンプトを閉じると、間違った設定にしているときに、SSH接続できなくなる可能性があるので、閉じないでおく。

SSH接続

新たにターミナル/コマンドプロンプトを開く。ポート番号を変更したので、SSH接続できるかを確認する。

> ssh -i .ssh\test_key test_user@{host} -p 22222