AWSでAmazonLinux2を立ち上げたときの初期設定をまとめておきます。だいたい、AzureでもAWSでも似たような感じですね。
AmazonLinux2の初期設定
Selinux
AmazonLinux2はデフォルトでSelinuxが無効となっている。なので、なにもしない。CentOS7 はデフォルトで有効です。
ユーザ作成・パスワード設定
AmazonLinux2のデフォルトでは、ec2-user というユーザを利用してログインするので、専用ユーザを作成してログインできるようする。ec2-userは鍵認証(パスフレーズ無し)でログインするようになっているので、不正ログインの可能性は極めて低いですが、デフォルトユーザを使うのはやめておきたいという意図です。
鍵認証でなくパスワード認証でログインできるようにする
※ssh接続は接続元IPを制限するので、安全性は問題なしとする
※ssh用のセキュリティグループで、ソースが限定されていて、接続先のインスタンスに関連付けられていること
新ユーザ作成
事前に、rootへ昇格して実施。
1 2 |
[root@az2 ~]# adduser new_user [root@az2 ~]# passwd new_user |
rootパスワード設定
1 2 3 4 |
[root@az2 ~]# passwd Changing password for user root. New password: Retype new password: |
参考:デフォルトの秘密鍵を利用してログインできるようにする場合
今回は、接続元IP制限+パスワード認証 とするので不要だが手順として残しておく。
やることは、新しく作成したユーザのホームディレクトリ配下に .ssh ディレクトリを作成して、ec2-user の authorized_keys をコピーして、それぞれパーミッション/所有者設定を変更する。
1 2 3 4 5 6 7 8 |
# .sshディレクトリ作成 [root@az2 ~]# mkdir /home/new_user/.ssh [root@az2 ~]# chmod 700 /home/new_user/.ssh [root@az2 ~]# chown new_user.new_user /home/new_user/.ssh # authorized_keysファイルをコピー [root@az2 ~]# cp -p /home/ec2-user/.ssh/authorized_keys /home/new_user/.ssh/ [root@az2 ~]# chown new_user.new_user /home/new_user/.ssh/authorized_keys |
ssh設定変更
ssh設定ファイル編集
バックアップをとったうえで、設定ファイル /etc/ssh/sshd_config を変更する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
### パスワードログイン許可 #追加 PasswordAuthentication yes #削除 PasswordAuthentication no ### rootログイン不可 #追加 PermitRootLogin no #削除 #PermitRootLogin yes ### デフォルトユーザでのsshログイン禁止 #追加 DenyUsers ec2-user |
設定反映
sshプロセスを再起動する。
1 |
[root@az2 ~]# systemctl restart sshd |
ログイン確認
作成したユーザでパスワード認証でログインし、"su -" でroot昇格できることを確認する。
ホスト名
ふつうに、/etc/hostname を変更する。
CentOSの場合、ホスト名が自動で割り振られて、再起動するとクリアされてしまうという情報が、webでは多数あった。
当環境ではなかったので、AmazonLinux2だと大丈夫なのか。マシン再起動でも、インスタンスの停止(ElasticIPを使用していない環境なのでグローバルIPは変更された状態)でも
ホスト名はクリアされませんでした。
タイムゾーン変更
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# 変更前 [root@az2 ~]# date Mon Jun 22 14:45:17 UTC 2020 [root@az2 ~]# timedatectl Local time: Mon 2020-06-22 14:49:11 UTC Universal time: Mon 2020-06-22 14:49:11 UTC RTC time: Mon 2020-06-22 14:49:11 Time zone: n/a (UTC, +0000) NTP enabled: yes NTP synchronized: no RTC in local TZ: no DST active: n/a # 変更 [root@az2 ~]# timedatectl set-timezone Asia/Tokyo # 変更後 [root@az2 ~]# timedatectl Local time: Mon 2020-06-22 23:49:22 JST Universal time: Mon 2020-06-22 14:49:22 UTC RTC time: Mon 2020-06-22 14:49:22 Time zone: Asia/Tokyo (JST, +0900) NTP enabled: yes NTP synchronized: no RTC in local TZ: no DST active: n/a [root@az2 ~]# date Mon Jun 22 23:49:26 JST 2020 |
localeとキーボードレイアウト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 変更前 [root@az2 ~]# localectl status System Locale: LANG=en_US.UTF-8 VC Keymap: n/a X11 Layout: n/a # 変更 [root@az2 ~]# localectl set-locale LANG=ja_JP.utf8 [root@az2 ~]# localectl set-keymap jp106 # 変更前 [root@az2 ~]# localectl status System Locale: LANG=ja_JP.utf8 VC Keymap: jp106 X11 Layout: jp X11 Model: jp106 X11 Options: terminate:ctrl_alt_bksp |
LANG環境変数
1 2 3 4 5 6 7 8 9 10 |
# 変更前 [root@az2 ~]# echo $LANG en_US.UTF-8 # 変更 [root@az2 ~]# export LANG=ja_JP.UTF-8 # 変更後 [root@az2 ~]# echo $LANG ja_JP.UTF-8 |
historyにタイムスタンプ
例えば、不正ログインが疑われる際のコマンド履歴などの確認やオペレーションの事後確認のためなど、念の為、追加しておきます。そもそも不正ログインされたときにはコマンド履歴なんかは消されてるんでしょうが。。なので、念の為です。以下の内容を、~/.bashrc に追記します。
1 2 3 4 5 6 7 |
# 以下追記 ※タイムゾーンあり HISTTIMEFORMAT='%Y-%m-%d %T%z ' ※タイムゾーンなし HISTTIMEFORMAT='%Y-%m-%d %T ' |
ログインシェルを再起動して反映します。
1 2 3 4 5 6 7 |
[root@az2 ~]# exec $SHELL -l [root@az2 ~]# history 50 2020-06-22 23:52:45 history 51 2020-06-22 23:52:45 vi .bashrc 52 2020-06-22 23:52:45 exec $SHELL -l 53 2020-06-22 23:52:48 history |
パッケージアップデート
1 |
[root@az2 ~]# yum -y update |
firewalldインストール
デフォルトで入っていないため、インストールしておきます。SSHの接続元IP制限も忘れずに実施。
1 |
[root@az2 ~]# yum -y install firewalld |
まとめ
AzureでもAWSでも似たような感じですね。次はGCPかな。その次はOracleCloud で、その次は、IBMCloudとかでしょうかね。
Azure/CentOS7 の場合の初期設定手順は以下にまとめています。
-
【AWS】AmazonLinux2の初期設定リスト~これだけはやっとく~
AWSでAmazonLinux2を立ち上げたときの初期設定をまとめておきます。だいたい、AzureでもAWSでも似たような感じですね。 AmazonLinux2の初期設定 Selinux Amazon ...
以上です。
↓↓↓ 持っていると便利な一冊 ↓↓↓