【AWS】EC2インスタンス構築及び構築後の各種設定手順(初期設定手順)

EC2 インスタンスの構築自体は簡単ですが、構築した後の各種設定(セキュリティや時刻など)について詳しく解説します。

 

 

EC2 インスタンスの作成手順

AWS 管理画面にログインし、メニューより「サービス」「コンピューティング」「EC2」をクリックします。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

「インスタンスの作成」ボタンをクリックします。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

 

今回は Red Hat Enterprise Linux を選択します。「選択」ボタンをクリックします。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

「手順2:インスタンスタイプの選択」「無料利用枠の対象」「t2.micro」を選択します。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

「手順3:インスタンスの詳細の設定」画面で下図のように設定します。

サブネットの CIDR ブロックは「172.31.32.0/20」なので IP アドレスは「172.31.32.10」に設定します。

設定が完了したら「次の手順:ストレージの追加」ボタンをクリックします。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

「手順4:ストレージの追加」でディスクの「サイズ(GiB)」「ボリュームタイプ」を設定して「次の手順:タグの追加」ボタンをクリックします。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

 

「手順5:タグの追加」で下図のようにタグを追加します。

「次の手順:セキュリティグループの設定」ボタンをクリックします。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

 

 

「手順6:セキュリティグループの設定」で SSH のみポートを開けて「確認と作成」ボタンをクリックします。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

 

「手順7:インスタンス作成の確認」画面で設定内容を確認し「起動」ボタンをクリックします。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

 

新しいキーペアを作成する場合は「新しいキーペアの作成」を選択し、キーペア名を設定し「キーペアのダウンロード」ボタンをクリックます。

 

 

 

 

 

下図のようなキーペアがダウンロードされることを確認します。

※キーペアの内容は、下図で BEGIN RSA PRIVATE KEY の記述からもわかりますように秘密鍵(RSA 秘密鍵)です。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

 

 

「インスタンスの作成」ボタンをクリックします。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

 

 

下図のように「インスタンスは現在作成中です」の状態になっていることを確認します。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

左側ペインより「EC2ダッシュボード」「インスタンス」をクリックして、作成したインスタンスが下図のように「running」の状態になっていることを確認します。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

EC2 インスタンスへのログイン(Tera Term)

一番最初のログインは「ec2-user」アカウントでログインします。

以下、Tera Term を使用してのログイン方法です。

 

Tera Term を起動し、ホストに「IPv4 パブリック IP」もしくは「パブリック DNS (IPv4)」を入力します。

サービスは「SSH」を選択し「OK」ボタンをクリックします。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

 

下図の「SSH 認証」画面で以下のように入力します。

  • ユーザ名 ← ec2-user を入力します。
  • パスフレーズ ← 空欄にします。(ec2-user にはパスフレーズはありません)
  • RSA/DSA/ECDSA/ED25519 鍵を使う ← チェックを入れます。

「秘密鍵」ボタンをクリックします。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

 

 

先ほどダウンロードしたキーペア(RSA 秘密鍵、今回の場合は test-ec2instance-key.pem ファイル)を選択して「開く」ボタンをクリックします。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

 

 

秘密鍵を選択したら「OK」ボタンをクリックします。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

 

 

以下のようにログインできることを確認します。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

 

新アカウントを作成し権限を割り当てる

ec2-user アカウントはデフォルトのアカウントですが、セキュリティを考慮し ec2-user アカウントを削除し、作業用のアカウントを作成します。

以下のように設計します。

  • アカウント名 ← test
  • test アカウントのパスワード ← test1234
  • 権限 ← sudo コマンドで root にスイッチできる(/etc/sudoers の設定をする)
  • SSH ログインでの認証方式 ← 鍵認証

 

 

test アカウントを作成する

test アカウントを作成します。

[ec2-user@ip-172-31-32-10 ~]$ sudo su –
[root@ip-172-31-32-10 ~]# useradd test

 

 

test アカウントのパスワードを設定します。

[root@ip-172-31-32-10 ~]# passwd test 
Changing password for user test. 
New password: ← 設定したいパスワードを入力します。
Retype new password: ← 設定したいパスワードを入力します。 
passwd: all authentication tokens updated successfully. 
[root@ip-172-31-32-10 ~]#

 

 

 

 

sudo コマンドで root にスイッチできるよう権限設定をする(/etc/sudoers を編集する)

次に test アカウントが sudo コマンドで root にスイッチできるよう権限設定をします。

具体的には visudo コマンドで /etc/sudoers ファイルを編集します。

「test            ALL=(ALL)       NOPASSWD: ALL」を追加することでパスワードなしで root にスイッチできるようになります。

[root@ip-172-31-32-10 ~]# visudo

 

## Same thing without a password 
# %wheel        ALL=(ALL)       NOPASSWD: ALL 
test            ALL=(ALL)       NOPASSWD: ALL ← この 1 行を追加します。

 

 

 

root にスイッチできるか確認します。

[root@ip-172-31-32-10 ~]# su – test ← 一旦 test にスイッチします。
[test@ip-172-31-32-10 ~]$ sudo su – ← ノーパスワードで root にスイッチできることを確認します。
Last login: Sun Mar 17 04:54:33 UTC 2019 on pts/1
[root@ip-172-31-32-10 ~]#

 

 

 

SSH ログインするための鍵認証(公開鍵認証)の設定をする

次に test アカウントがリモートより鍵認証(公開鍵認証)で SSH ログインできるように設定します。

 

EC2 インスタンス上より以下のコマンドで鍵を作成します。

※本来ならローカルの Windows でカギを作成して、公開鍵を EC2 インスタンスにアップロードしたいところですが、今回は リモートで鍵を作成して、ローカルに秘密鍵を持ってきて、リモート上の秘密鍵を削除する方式にします。

[root@ip-172-31-32-10 ~]# su – test ← test アカウントにスイッチします。

[test@ip-172-31-32-10 ~]$ ssh-keygen -t rsa ← ssh-keygen コマンドを実行します。
Generating public/private rsa key pair. 
Enter file in which to save the key (/home/test/.ssh/id_rsa):  ← 鍵ファイルのディレクトリを指定します。
Created directory ‘/home/test/.ssh’. 
Enter passphrase (empty for no passphrase):  ← パスフレーズを設定します。
Enter same passphrase again:  ← パスフレーズを設定します。
Your identification has been saved in /home/test/.ssh/id_rsa. 
Your public key has been saved in /home/test/.ssh/id_rsa.pub. 
The key fingerprint is: 
SHA256:nwN0sbNGrO2ECaIQ4en7SjIN5wqPNhSSDMNsiEUQiRQ test@ip-172-31-32-10.ap-northeast-1.compute.internal 
The key’s randomart image is: 
+—[RSA 2048]—-+ 
|%E+       .      | 
|O=.      . o     | 
|==  . . . *      | 
|++ . . o B o     | 
|o.+     S =      | 
| *.      * .     | 
|=oo       =      | 
|+B.        .     | 
|+.+.             | 
+—-[SHA256]—–+ 
[test@ip-172-31-32-10 ~]$

 

 

 

鍵を確認します。

[test@ip-172-31-32-10 ~]$ cd .ssh/ 
[test@ip-172-31-32-10 .ssh]$ ls -lh 
total 8.0K 
-rw——-. 1 test test 1.8K Mar 17 05:37 id_rsa 
-rw-r–r–. 1 test test  434 Mar 17 05:37 id_rsa.pub 
[test@ip-172-31-32-10 .ssh]$

 

 

 

秘密鍵(id_rsa)をローカルに持ってきます。

Tera Term よりダウンロードするか、EC2 インスタンス上で秘密鍵(id_rsa)を cat コマンドで開いてコピペします。

今回はリモートの EC2 インスタンス上で秘密鍵(id_rsa)を cat コマンドで開いて、それをコピペする方法にします。

[test@ip-172-31-32-10 .ssh]$ cat id_rsa 
—–BEGIN RSA PRIVATE KEY—– 
Proc-Type: 4,ENCRYPTED 
DEK-Info: AES-128-CBC,247F374ABB985723D42C6F2C3957AF75 
 
Fxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0 
Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs 
wEqJoFMbXSp6YEpCvmNQFD95lxsqnFhObGlRMy2M62Rzulpehg7/w+cIZkj9AY97 
evcoOQS+8ertufWHvstkNx8xo64ekKRmsXsJBNWANLSYYWvABRcCreXdpqJJFB90 
T7m1ZHmfiw4LBn6/d0ikjDH2hLwJggv73YpE2jyF5oV8wDNLJ9N3vVr0+PEWw07/ 
QAxJQOalsXSj8+7/AxXq/mVv9f2FqSggvgOV90DFbcY924iTWbDeeZpBMchLSFJQ 
Szts2Oss8/VlsY9TVex8ZTD9QQ4HCfFDPxP8DcY8T2PASvnpT/5EyxKDLeWE71NF 
cDj3FZDQHYWFFhTYqNo/InexAWjo0AWbuPHnCmCfcX7ItWZQEJVkj5uGFlQkYMhb 
skIgqdDpFQ+ZXVEHU2eGNEHjSeydgHHA+AGU9Z+2oFej+P0JbgvT6aQoRfm1Kylu 
coANsGvdXWhX8yK2HN0m8WHh0K8stJmC/Mmbr/BoY97nKWOQTiafUF7KxD4ewATH 
1YR86zhqZCHjA/6pefwG58to8llqjAZhqcXj+0NKD6A8lZMOmKJjYGdn7msM4uuU 
eHwcs35Me3w50dFA9hNdnWkyRGzu7DFqMy4AY8j0Fz5Xl3k9/gQH87SKZKpj83uj 
2NIa2dfpPdNQ6qCDZfmk3XFzCxB6PQVCGRA2ufiElOhpii4xGOAbk7aKBvbC0aZF 
xuf4Yq5pHuzw+DFdWlfTROQHAORRc4O+MaKeW8Z7GXkawvMh1bSjVWcOGTjWaM2z 
tievXX2yERPvUlOpXd4tPj9xrXORq28ym1dyO0we8Ke13Vn+wU6HDySbZPxQQK1D 
YTGOQzQ1c47Ee8NxibemygFujWEwAkiFR9V12JDj1+f+n0CWKcP30aA2m5fzCix4 
fHBk57xHapiYq96fT/LvqWFrxsxibEqw7YPEYTBJ3krZD8PiWRY/gvRoC+l0LB03 
c+VLmGH4ampf1r/MT0f4EohHGh2bvs4tMFR/wxacDOw81BCwSRWr120Y9N6p0f+b 
lE6qfFB9e3tfiFtwG+m6U6EyezTk6nkDYGBGl/QIVfXbb70WdEbrK8mrjzmFpfgF 
Ezh3bLWQoEqRi7iiXKHL+NikdWHPz1S4SL7m9iPkqfQg1OFsPNGKeJGtjvyadtxh 
jkpCGN1YW/AB1WGlDz5YOt9AHA/WQZDGkY9bT4Rcd+ryASTtnQQN6bQ+W1Tgs205 
CfAGoQL4xDsUT5jMLJS3bhenclamdYD8D5D7/WDTSpoTRNVhI9elyc+z6galvK4T 
rQSI7c6HHvjbivGY0BFdztGYofme+XkLorh2fG+WUUIZw64eNr6Q/nEPB+Ex/vi+ 
7jgHsnGSN5PBAcTF+f0JQBazXSmg/gGxoV+3/hPCTDZZaWQclVA/ThzVE/4CRaNd 
CCpGFsGex0wLUzkMlQ9/zYK+3B4gOPICW6RfrLimBbhMGdvqoKVTJw+sgVqGHC2z 
—–END RSA PRIVATE KEY—– 
[test@ip-172-31-32-10 .ssh]$

 

 

 

 

 

公開鍵をauthorized_keysファイルに追加します。

[test@ip-172-31-32-10 .ssh]$ cat id_rsa.pub >> authorized_keys
[test@ip-172-31-32-10 .ssh]$

 

 

 

authorized_keysファイルの権限を「600」に変更します。

[test@ip-172-31-32-10 .ssh]$ ls -lh 
total 12K 
-rw-rw-r–. 1 test test  434 Mar 17 05:50 authorized_keys 
-rw——-. 1 test test 1.8K Mar 17 05:37 id_rsa 
-rw-r–r–. 1 test test  434 Mar 17 05:37 id_rsa.pub 
[test@ip-172-31-32-10 .ssh]$ chmod 600 authorized_keys 
[test@ip-172-31-32-10 .ssh]$ ls -lh 
total 12K 
-rw——-. 1 test test  434 Mar 17 05:50 authorized_keys 
-rw——-. 1 test test 1.8K Mar 17 05:37 id_rsa 
-rw-r–r–. 1 test test  434 Mar 17 05:37 id_rsa.pub 
[test@ip-172-31-32-10 .ssh]$

 

 

 

秘密鍵を削除します。

[test@ip-172-31-32-10 .ssh]$ rm id_rsa
[test@ip-172-31-32-10 .ssh]$

 

 

 

 

Tera Term で test アカウントで鍵認証で SSH ログインできるか確認する

ここまで作業したら Tera Term で test アカウントで鍵認証でリモートの EC2 インスタンスに SSH ログインできるか確認します。

 

Tera Term を起動してホストにパブリック IP アドレスを入力し「OK」ボタンをクリックします。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

 

 

下図のように各項目を入力します。

  • ユーザ名 ← test アカウントを入力します。
  • パスフレーズ ← ssh-keygen コマンドで鍵を作成する際に設定したパスフレーズを入力します。
  • 秘密鍵 ← ローカルにコピーした秘密鍵のファイルを指定します。

設定を入力したら「OK」ボタンをクリックします。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

 

下図のように test アカウントで鍵認証による SSH ログインができることを確認します。

【AWS】EC2インスタンス構築及び構築後の各種設定手順

 

 

 

 

root にスイッチできることを確認します。

[test@ip-172-31-32-10 ~]$ sudo su –
Last login: Sun Mar 17 04:55:02 UTC 2019 on pts/1
[root@ip-172-31-32-10 ~]#

 

 

ec2-user アカウントの削除

ここまで動作確認が出来たらセキュリティ上の理由により「ec2-user」アカウントを削除します。

 

userdel コマンドで「ec2-user」アカウントを削除します。

[root@ip-172-31-32-10 ~]# cat /etc/passwd | grep ec2-user
ec2-user:x:1000:1000:Cloud User:/home/ec2-user:/bin/bash
[root@ip-172-31-32-10 ~]# userdel ec2-user
[root@ip-172-31-32-10 ~]# cat /etc/passwd | grep ec2-user
[root@ip-172-31-32-10 ~]#

 

 

 

タイムゾーン(Timezone)の修正

デフォルトでは、EC2 インスタンスのタイムゾーン(Timezone)は「UTC」になっています。

[root@ip-172-31-32-10 ~]# date
Sun Mar 17 06:25:51 UTC 2019
[root@ip-172-31-32-10 ~]#

 

 

timedatectl コマンドで、「UTC」「JST」に変更します。

※Red Hat 7系(CentOS 7系)の場合は timedatectl コマンドを利用できるので便利です。

[root@ip-172-31-32-10 ~]# timedatectl set-timezone Asia/Tokyo
[root@ip-172-31-32-10 ~]#

 

 

タイムゾーンが変更されたことを確認します。

[root@ip-172-31-32-10 ~]# date
Sun Mar 17 15:28:43 JST 2019
[root@ip-172-31-32-10 ~]#

 

 

OS が再起動しても UTC に戻らないことを確認します。

[root@ip-172-31-32-10 ~]# reboot

 

 

OS 再起動後に再度タイムゾーンを確認します。

[test@ip-172-31-32-10 ~]$ date
Sun Mar 17 15:33:25 JST 2019
[test@ip-172-31-32-10 ~]$

 

 

 

ロケールの設定

EC2 インスタンスはデフォルトでは以下のロケール「en_US.UTF-8」になっています。

[root@ip-172-31-32-10 ~]# cat /etc/locale.conf
LANG=en_US.UTF-8
[root@ip-172-31-32-10 ~]#

 

 

locale コマンドでも確認できます。

[root@ip-172-31-32-10 ~]# locale
LANG=en_US.UTF-8
LC_CTYPE=”en_US.UTF-8″
LC_NUMERIC=”en_US.UTF-8″
LC_TIME=”en_US.UTF-8″
LC_COLLATE=”en_US.UTF-8″
LC_MONETARY=”en_US.UTF-8″
LC_MESSAGES=”en_US.UTF-8″
LC_PAPER=”en_US.UTF-8″
LC_NAME=”en_US.UTF-8″
LC_ADDRESS=”en_US.UTF-8″
LC_TELEPHONE=”en_US.UTF-8″
LC_MEASUREMENT=”en_US.UTF-8″
LC_IDENTIFICATION=”en_US.UTF-8″
LC_ALL=
[root@ip-172-31-32-10 ~]#

 

 

 

ロケールがデフォルトの「en_US」のため、コマンド結果も英語で返ってきます。

[root@ip-172-31-32-10 ~]# c
-bash: c: command not found
[root@ip-172-31-32-10 ~]#

 

 

特に「en_US」でも問題ないですが、日本語ロケールに変更する場合は「ja_JP.utf8」を設定します。

[root@ip-172-31-32-10 ~]# vi /etc/locale.conf

 

#LANG=en_US.UTF-8 ← コメントアウトします。
LANG=ja_JP.UTF-8 ← 追加します。

 

 

OS が再起動しても日本語ロケールであることを確認します。

※わざわざ毎回 reboot しなくてもいいですが、EC2 インスタンスの場合は OS 再起動が数秒レベルで完了するので、OS 再起動確認までした方がいいです。

[root@ip-172-31-32-10 ~]# reboot

 

 

ロケールが日本語に変わっています。

[test@ip-172-31-32-10 ~]$ locale
LANG=ja_JP.UTF-8
LC_CTYPE=”ja_JP.UTF-8″
LC_NUMERIC=”ja_JP.UTF-8″
LC_TIME=”ja_JP.UTF-8″
LC_COLLATE=”ja_JP.UTF-8″
LC_MONETARY=”ja_JP.UTF-8″
LC_MESSAGES=”ja_JP.UTF-8″
LC_PAPER=”ja_JP.UTF-8″
LC_NAME=”ja_JP.UTF-8″
LC_ADDRESS=”ja_JP.UTF-8″
LC_TELEPHONE=”ja_JP.UTF-8″
LC_MEASUREMENT=”ja_JP.UTF-8″
LC_IDENTIFICATION=”ja_JP.UTF-8″
LC_ALL=
[test@ip-172-31-32-10 ~]$

 

 

コマンド結果も日本語で返ってきます。

[test@ip-172-31-32-10 ~]$ a
-bash: a: コマンドが見つかりません
[test@ip-172-31-32-10 ~]$

 

 

 

/etc/sudoers の設定(Defaults requiretty

通常(デフォルトでは)、セキュリティの観点より sudo コマンドを利用する場合は、tty(コンソール、端末)が必要な設定をしています。

 

しかし、以下のケースで設定が必要になります。

  • cron で定期的に sudo コマンドで処理をする場合
  • リモートから ssh コマンドでログインして、そのままコマンドを実行する場合(例:ssh host ls -l など)
  • Ansible や Serverspec などでリモート処理をする場合

 

Defaults requiretty の設定例

■全部のユーザーに対して許可する場合

#Defaults requiretty ← この 1 行をコメントアウトします。

 

 

■特定のユーザーに対して許可する場合

Defaults:root   !requiretty ← この 1 行をコメントアウトします。

 

 

SELINUX

他に必要なら SELINUX の設定をします。

 

 

 

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメント一覧 (1件)

コメントする

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください