Ubuntu Server 18.04にて検証した手順です。
※「{{ }}」にて囲まれている部分は変数を表します(Jinja2などのテンプレートエンジンでもレンダリング可能なようにしてあります)。
【コンソール】に表示される案内に沿ってインストールを実施していきます。
※バージョンによって変わる可能性があります。
- Install Ubuntu Server を選択(自動で選択される)
- 言語を選択(この時点ではEnglishを選択)
- キーボードレイアウトを選択(Japaneseを選択)
- Install Ubuntuを選択
- ネットワーク設定を行う(この時点ではDHCPにして素通りが良い)
- プロキシサーバの設定を行う(なければDoneで)
- ミラーサーバを日本に変更(http://jp.archive.ubuntu.com/ubuntu/)
- インストール先のディスクの設定を実施(基本的には全領域をext4でフォーマット)
- アカウントプロフィールの設定
- SSH Serverをインストールするにチェックを入れる
- その他必要なサーバについてチェックを入れてインストールを行う
インストール完了後、Bootディスクを抜いて再起動を実施
-
【コンソール】インストール時に設定したユーザーとしてログインする
-
【コンソール】「ip a」にてIPアドレスを確認する
-
他の端末からrootユーザーでSSH接続を行う
※このとき、「ip a」で確認したIPアドレスで接続する
他の端末におけるSSH接続方法は割愛 -
パスワードを変更する
$ passwd {{ Username }} $ sudo passwd root
-
rootに昇格する
$ su -
-
sudoersを編集する
# visudo ===== -#Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" +Defaults env_keep += "PATH" +Defaults env_keep += "HOME" +Defaults timestamp_timeout=30 =====
-
IPアドレスを設定する
# ip a # /etc/netplan/80-default-netcfg.yaml +++++ DHCPの場合 +++++ ===== network: ethernets: {{ NICName }}: dhcp4: true version: 2 ===== +++++ 固定の場合 +++++ ===== network: ethernets: {{ NICName }}: addresses: - {{ IPAddress }}/{{ MaskBit }} gateway4: {{ DefaultGateway }} dhcp4: false version: 2 =====
-
必要なモジュールのインストール
# apt update # apt upgrade # apt install build-essential language-pack-ja console-data asp traceroute python3-pip fonts-ipafont dkms zsh bc
-
タイムゾーンの設定
# timedatectl set-timezone 'Asia/Tokyo' # timedatectl status
-
ホストネームの追加設定
# sed -i -r -e 's/^(127\.0\.0\.1.*)localhost(.*)$/\1localhost\t{{ Hostname }}\2/' -e 's/^(::1.*)localhost6(.*)$/\1localhost6\t{{ Hostname }}\2/' /etc/hosts
-
ログインシェルをzshに変更する
# chsh -s /bin/zsh root # chsh -s /bin/zsh {{ Username }}
-
「nano」をアンインストールして、「vim」にリンクを貼る
# apt purge nano # ln -s /usr/bin/vim /bin/nano
-
DNSサーバの設定を行う
複数のIPを記載する際は半角空白区切り# sed -i -r 's/^#DNS=$/DNS={{ DNSServer }}/' /etc/systemd/resolved.conf
-
systemd-resolvedの有効化と再起動
# systemctl enable systemd-resolved # systemctl restart systemd-resolved
-
[/etc/resolv.conf] をsystemd-resolved側の設定にする
# rm /etc/resolv.conf # ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
-
systemd-timesyncdの設定
# sed -i -r -e 's/^#NTP=/NTP=ntp.jst.mfeed.ad.jp time.cloudflare.com/' -e 's/^#FallbackNTP=.*$/FallbackNTP=0.jp.pool.ntp.org 1.jp.pool.ntp.org 2.jp.pool.ntp.org 3.jp.pool.ntp.org/' /etc/systemd/timesyncd.conf
-
systemd-timesyncdの有効化
# timedatectl set-ntp true
-
sshdの設定
# sed -i -r -e 's/^#(Port )22$/\1{{ SSHPort }}/' -e 's/^#(PermitRootLogin ).*$/\1no/' -e 's/^#(PermitEmptyPasswords no)$/\1/' /etc/ssh/sshd_config # echo -e "\n#For Judgement of Cascade Proxy\nAcceptEnv SOURCE_SSH_CONNECTION" >> /etc/ssh/sshd_config
-
ufwの設定
# ufw default deny # ufw limit from {{ NetworkAddress }}/{{ MaskBit }} to any port {{ SSHPort }} proto tcp # ufw enable
-
ufwの設定の確認
# ufw status
-
ufwの有効化
# systemctl enable ufw
-
SSDの自動trimデーモンの有効化と起動
# systemctl enable --now fstrim.timer
-
systemd-timesyncdの状態確認
# timedatectl status
-
systemctlのserviceの状態を確認
# systemctl list-units --type=service | less
-
再起動
# reboot