Amazon EC2(Amazon Linux2)の初期環境設定


今回は備忘録がてら、AWSでEC2(Amazon Linux2)を作るとき、デフォルト設定から使いやすいように初期環境設定を変更する手順について記事にします。私は検証環境でEC2を立てるときに、「日本語化して…」、「タイムゾーンを日本時間にして…」とか色々手動でやってます。そして手動でコマンドを入力しているのでよくコマンドを忘れます笑。皆さんはどうしているのですかね?...EC2起動時のユーザデータ設定やCloudFromationを使えよ!というツッコミはなしでお願いしますm(_ _)m

今回のゴール

日本語環境、ロケールは日本、時間も日本時間に合わせたLinuxサーバを構築する
具体的に設定する項目は以下です。
- モジュールなどを最新版にUpdateする
- 言語設定を日本語に変更
- タイムゾーンを日本時間に変更
- 時刻同期先(NTPサーバ)をntp.pool.orgに変更
- ホスト名を自分で決めた名前に変更する

前提

設定対象はAmazon Linux2なのでベースはCentOS v7です。
本番用サーバなら設定変更前にAMIのコピーをお忘れなく。
操作はEC2にユーザ(ec2-user)でSSHログインした状態から開始しています。

実際にやってみた

rootにスイッチ

sudo su root
コマンドの先頭が"$"でしたが"#"になりRootにスイッチしていることが分かります

モジュールなどを最新版にUpdateする

yum -y update
コマンドオプションの「-y」はアップデートしますか?と聞かれてたときに自動的にYesと回答するものになります
上記コマンドを実行して"Complite!"と表示されればOKです

日本語化する

#今の言語設定を確認
 echo $LANG
#日本語に設定変更
 localectl set-locale LANG=ja_JP.UTF-8
#設定変更反映のため再起動
 reboot
#変更が反映された確認
 echo $LANG    ⇒ja_JP.UTF-8 が表示されればOK

タイムゾーンを日本時間に変更

#今のシステムクロック(時間設定)を確認
date
#タイムゾーンを日本時間に変更
timedatectl set-timezone Asia/Tokyo
#システムクロックが変更されたか確認
date    ⇒2021年  5月 30日 日曜日 12:20:51 JST にように表示されればOK

時刻同期先(NTPサーバ)の変更

#今の刻同期先(NTPサーバ)の確認
systemctl status chronyd ⇒chronyd(旧ntpd)が起動しているか確認
chronyc tracking ⇒今どこを参照しているか確認
chronyc sources ⇒参照の候補の一覧を表示させる

#今の時刻同期先(NTPサーバ)コンフィグを保存
cd /etc
cp chrony.conf new_chrony.conf

#設定コンフィグを編集して、時刻同期先(NTPサーバ)をntp.pool.orgに変更
vi /etc/chrony.conf

変更箇所は「3行目の先頭に#をつけて、コメントアウト」させ、その下の行に「pool ntp.pool.org iburst」を追加する ※4行目を書き足す

  1 # use the Amazon Time Sync Service (if available)
  2 # and allow for IPv6-only connections (via ULA)
  3 #server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
  4 pool ntp.pool.org iburst
  5 server fd00:ec2::123 auto_offline iburst minpoll 4 maxpoll 4
  6
  7 # Use public servers from the NTP Pool Project project.
  8 # Please consider joining the pool (http://www.pool.ntp.org/join.html).
  9
 10 # This will use (up to):
 11 # - 1 source from [013].amazon.pool.ntp.org each (IPv4 only atm)
 12 # - 2 sources from 2.amazon.pool.ntp.org which is IPv6 enabled as well
 13 # This means by default, up to 2 dual-stack and up to 3 additional IPv4-        only
 14 # sources will be used.
 15 pool 0.amazon.pool.ntp.org iburst maxsources 1
 16 pool 1.amazon.pool.ntp.org iburst maxsources 1
 17 pool 2.amazon.pool.ntp.org iburst maxsources 2
 18 pool 3.amazon.pool.ntp.org iburst maxsources 1
 19
 20 # Record the rate at which the system clock gains/losses time.
 21 driftfile /var/lib/chrony/drift

  ~~以下略~~

#設定変更のためchronyd をサービス再起動
systemctl restart chronyd

#時刻同期先(NTPサーバ)の変更確認
chronyc tracking

#Reference ID が変更されていることを確認

Reference ID    : 81FA23FA (x.ns.gin.ntt.net) ⇒同期先のNTPサーバ
Stratum         : 3
Ref time (UTC)  : Sun May 30 03:32:15 2021
System time     : 0.000000306 seconds fast of NTP time
Last offset     : -0.004103613 seconds
RMS offset      : 0.004103613 seconds
Frequency       : 22.927 ppm fast
Residual freq   : -79.384 ppm
Skew            : 0.021 ppm
Root delay      : 0.143610477 seconds
Root dispersion : 0.004326822 seconds
Update interval : 0.8 seconds
Leap status     : Normal




chronyc sources

#"*"がついているサーバが変更されていることを確認
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? realnames.com                 0   8     0     -     +0ns[   +0ns] +/-    0ns
^+ ntp.exact-time.org            1   6   377    49  +2817us[+2817us] +/-  125ms
^- vbrandl.net                   3   6   177    46    -72us[  -72us] +/-  168ms
^+ time.cloudflare.com           3   6   377    51  +1867us[+1867us] +/-   62ms
^* sh03.paina.net                2   6   377    54  -5159us[-6106us] +/-   55ms
^+ x.ns.gin.ntt.net              2   6   377    51   -346us[ -346us] +/-   75ms

ホスト名を変更

#今のホスト名を確認
hostname

#ホスト名を変更
vi/etc/hostname
元のホスト名は#をつけてコメントアウトさせて、ファイルの最上位に設定したいホスト名を追記

#変更反映のためログアウトもしくは再起動
reboot

#反映されているか確認
hostname

おまけ(新規ユーザを作成し、Password認証でログインできるようにする)

①新規ユーザ作成

#ユーザ作成
useradd testuser

#作成したユーザにPWを設定
passwd testuser

②作成したユーザでrootにスイッチできるようする

#グループ[wheel]にtestuserを追加
usermod -G wheel testuser

作成したユーザに管理者権限を付与

#設定ファイルを編集
visudo

 ## Allow root to run any commands anywhere のところに以下を追記
 root    ALL=(ALL)       ALL
 testuser  ALL=(ALL)       ALL

③作成したユーザでSSHでpassword認証でログインできるようにする
※セキュリティ上非推奨のため自己責任でお願いします

#password認証を有効化するため、/etc/ssh/sshd_configを編集およびコピーを作成しておく
cd /etc
cd ssh
cp sshd_config new_sshd_config
vi /etc/ssh/sshd_config

#変更箇所は61行目付近の「PasswordAuthentication yes」の"#"を消して有効化


 53 #HostbasedAuthentication no
 54 # Change to yes if you don't trust ~/.ssh/known_hosts for
 55 # HostbasedAuthentication
 56 #IgnoreUserKnownHosts no
 57 # Don't read the user's ~/.rhosts and ~/.shosts files
 58 #IgnoreRhosts yes
 59
 60 # To disable tunneled clear text passwords, change to no here!
 61 PasswordAuthentication yes
 62 #PermitEmptyPasswords no
 63 #PasswordAuthentication no

sshd を再起動

systemctl restart sshd

終わりに

LinuxというかCLIで設定していると大した設定していないけど、「ITエンジンやってるぜ!」感が出せて楽しいとい思うのは私だけでしょうか(笑)

参考にしたサイト

Red Hat Enterprise Linux 5、6、7、および 8 で一般的な管理コマンド
新しいNTPクライアント&サーバ、chrony
5分でできる!NTP(chrony)の設定方法【CentOS7
AWS EC2(Linux)パスワード認証設定方法