Preparing for installation
February 11, 2019 · View on GitHub
OSセットアップや必要ソフトウェアのインストール手順です。
Amazon EC2にUbuntu Server 18.04 LTSのインスタンスを新規作成した場合を前提とした手順です。
1. OSセットアップ
1.1. パッケージ最新化
パッケージを最新化します。
$ sudo apt update && sudo apt -y upgrade && sudo apt -y dist-upgrade && sudo apt -y autoremove && sudo apt -y autoclean
1.2. OSユーザ変更
新規OSユーザを作成し、ubuntuユーザの使用を閉塞します。
デフォルトユーザであるubuntuユーザを狙った攻撃に対する予防策の一つです。
OSユーザ作成
$ sudo adduser honey
sudoができる権限を付与
$ sudo gpasswd -a honey sudo
sshログインするための鍵をコピー
$ sudo mkdir /home/honey/.ssh
$ sudo cp /home/ubuntu/.ssh/authorized_keys /home/honey/.ssh/
オーナー、パーミッションを適切に設定
$ sudo chown honey:honey /home/honey/.ssh/
$ sudo chown honey:honey /home/honey/.ssh/authorized_keys
$ sudo chmod 700 /home/honey/.ssh/
$ sudo chmod 600 /home/honey/.ssh/authorized_keys
オーナー、パーミッションを確認
$ sudo ls -la /home/honey/
total 24
drwxr-xr-x 3 honey honey 4096 Jan 6 11:13 .
drwxr-xr-x 4 root root 4096 Jan 6 11:13 ..
-rw-r--r-- 1 honey honey 220 Jan 6 11:13 .bash_logout
-rw-r--r-- 1 honey honey 3771 Jan 6 11:13 .bashrc
-rw-r--r-- 1 honey honey 807 Jan 6 11:13 .profile
drwx------ 2 honey honey 4096 Jan 6 11:14 .ssh
$ sudo ls -la /home/honey/.ssh/
total 12
drwx------ 2 honey honey 4096 Jan 6 11:14 .
drwxr-xr-x 3 honey honey 4096 Jan 6 11:13 ..
-rw------- 1 honey honey 390 Jan 6 11:14 authorized_keys
honeyユーザでsshログインし、ubuntuユーザのログインを閉塞します。
$ sudo usermod -s /usr/sbin/nologin ubuntu
1.3. タイムゾーンの変更
タイムゾーンを日本に変更します。
$ sudo timedatectl set-timezone Asia/Tokyo
$ timedatectl
Local time: Sun 2019-01-06 20:25:15 JST
Universal time: Sun 2019-01-06 11:25:15 UTC
RTC time: Sun 2019-01-06 11:25:16
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
1.4. ssh設定変更
ssh接続ポートを60022番ポートに変更と、rootユーザの直接ログインを閉塞します。
60022番ポート以外のポート番号にする場合は、Install手順に記載しているiptablesの設定変更が必要です。
また、Amazon EC2上に構築する場合は、セキュリティグループのインバウンド設定を編集し、マイIPから60022番ポートへ接続を許可します。
設定ファイルをバックアップ
$ sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org
ポート番号の変更、rootユーザの直接ログインを閉塞。
$ sudo sed -i 's|#Port 22|Port 60022|' /etc/ssh/sshd_config
$ sudo sed -i 's|#PermitRootLogin prohibit-password|PermitRootLogin no|' /etc/ssh/sshd_config
変更結果を確認
$ diff -u /etc/ssh/sshd_config.org /etc/ssh/sshd_config
--- /etc/ssh/sshd_config.org 2018-09-13 00:59:27.529679607 +0900
+++ /etc/ssh/sshd_config 2019-01-06 20:36:29.691682382 +0900
@@ -10,7 +10,7 @@
# possible, but leave them commented. Uncommented options override the
# default value.
-#Port 22
+Port 60022
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
@@ -29,7 +29,7 @@
# Authentication:
#LoginGraceTime 2m
-#PermitRootLogin prohibit-password
+PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
sshサービスを再起動
$ sudo systemctl restart ssh
その後、60022番ポートでsshログインできることを確認します。
1.5. Swap領域確保
2GBのSWAP領域を確保します。
Swap領域の作成
$ sudo mkdir /var/swap
$ sudo dd if=/dev/zero of=/var/swap/swap0 bs=1M count=2048
$ sudo chmod 600 /var/swap/swap0
$ sudo mkswap /var/swap/swap0
Swap領域の有効化
$ sudo swapon /var/swap/swap0
Swap領域の自動マウント
$ sudo echo '/var/swap/swap0 swap swap defaults 0 0' >> /etc/fstab
Swap領域の確認
$ sudo swapon -s
Filename Type Size Used Priority
/var/swap/swap0 file 2097148 0 -2
2. 必要ソフトウェアのインストール
2.1. Dockerインストール
公式のインストール手順を参考にインストールします。
$ sudo apt-get remove docker docker-engine docker.io
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce
2.2. Docker-Composeインストール
公式のインストール手順を参考にインストールします。
バージョンアップに伴い、URLのバージョン番号は変わるため、公式を参照してください。
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version
docker-compose version 1.23.2, build 1110ad01
2.3. logrotateインストール
最初からインストール済みのため、作業不要です。