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」を追加する　※４行目を書き足す

      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 で一般的な管理コマンド](https://access.redhat.com/ja/articles/1307383)
[新しいNTPクライアント＆サーバ、chrony](https://qiita.com/yunano/items/7883cf295f91f4ef716b)
[5分でできる！NTP（chrony）の設定方法【CentOS7](https://hackers-high.com/linux/easy-chrony-settings/)
[AWS EC2(Linux)パスワード認証設定方法](https://qiita.com/sakaguchi_/items/d96c50220a8d5c1c78bd)