Hyper-V上にUbuntuサーバを構築してみる

DockerやらSonarQubeやらGitLabやら、いろいろ試したいものがあったので、Hyper-V上にUbuntuサーバを構築することに。
とりあえず構築手順を忘れないようにメモ。

運用してみてなにか変更あれば追記していきます。

Hyper-V上にUbuntuを構築する

STEP01:Ubuntuサーバのイメージファイル(.isoファイル)をダウンロードする

下記サイトから、Ubuntuサーバのイメージファイル(.isoファイル)をダウンロードします。
https://jp.ubuntu.com/download

GUI版とCLI版がありますが、今回はCLI版を選択しました。
「Ubuntu Server 22.04.1 LTS」をダウンロードします。
picture 1

STEP02:Hyper-V上に仮想マシンを構築する

スタートメニューから「Windows 管理ツール」>「Hyper-Vマネージャー」を選択します。
※Hyper-Vは、デフォルトでは無効化されています。Hyper-Vを有効化する方法は参考URLに記載しているサイト等、いろいろなサイトで紹介されているので調べてみてください。
picture 2

Hyper-Vマネージャ画面が起動したら、画面左側のツリービューに「Hyper-Vマネージャー」>「<自分のPC名>」が表示されていることを確認し、「<自分のPC名>」を選択します。
picture 3

ツールバーの「操作」>「新規」>「仮想マシン」を選択します。
picture 4

仮想マシンの新規作成ウィザードが表示されます。
「開始する前に」の説明を読み、「次へ」ボタンを選択します。
picture 5

名前と場所の指定では、Hyper-V上で表示される仮想マシン名と、仮想マシンを構築するフォルダを設定します。
picture 6

仮想マシンの世代を選択します。
今回は第2世代を選択します。
picture 7

仮想マシンで使用するメモリの割り当てを設定します。
割り当てるメモリ容量はあとからでも変更できるので、とりあえず2GB割り当てました。
picture 8

ネットワークの構成を設定します。
今回は外部ネットワークと接続できる仮想スイッチを作成して割り当てました。
picture 9

仮想スイッチの設定
picture 10

仮想ハードディスクを作成します。
「仮想ハードディスクを作成する」を選択し、仮想ハードディスクのサイズを設定します。
今回は256GBに設定しました。
picture 11

インストールオプションを選択します。
「ブートイメージファイルからオペレーティングシステムをインストールする」を選択し、「メディア」>「イメージファイル(.iso)」に先ほどダウンロードしたUbuntuサーバのイメージファイル(.isoファイル)を選択します。
picture 12

最後に設定内容を確認し、「完了」ボタンをクリックして仮想マシンを作成します。
picture 13

仮想マシンの作成が完了すると、Hyper-Vマネージャーの「仮想マシン」一覧に、作成した仮想マシンが表示されます。
picture 14

STEP03:仮想マシンにUbuntuサーバをインストールする

作成した仮想マシンに、Ubuntuサーバをインストールしていきます。
仮想マシンを起動する前に、仮想マシンの設定を行います。

作成した仮想マシンを右クリックし、設定を選択します。
picture 15

チェックポイントの設定を行います。
チェックポイントとは、ある時点の仮想マシンの状態を保存しておくことができる機能です。
デフォルトでは、仮想マシン起動時に自動でチェックポイントを作成する状態となっています。
私は任意のタイミングでチェックポイントないし別の手段で仮想マシンをバックアップしたいので、自動チェックポイントの機能を無効化しておきます。
「チェックポイント」>「自動チェックポイントを使用する」のチェックを外します。
picture 35

「統合サービス」の「ゲストサービス」にチェックを入れます。
picture 43

セキュアブートの設定を無効化します。
画面左のツリービューから「セキュリティ」を選択し、「セキュアブートを有効にする」チェックボックスのチェックを外します。
picture 16

セキュアブートを無効化したら、仮想マシンを起動します。
picture 17

仮想マシンの状態が「実行中」となったことを確認し、仮想マシンに接続します。
picture 18

仮想マシンに接続すると、Ubuntuサーバのインストール画面が表示されます。
言語選択では、「English」を選択します。
picture 19

インストーラのアップデートを行うか確認されます。
今回はダウンロードした22.04.1のままインストールするので、「Continue without updating」を選択します。
picture 20

キーボードのレイアウトを選択します。
私は日本語配列のキーボードを使用しているので、「Japanese」を選択しました。
picture 21

インストール内容を設定します。
デフォルトのUbuntuサーバか、最小限の構成でUbuntuサーバをインストールするかを選択します。
今回はデフォルトのままインストールするので、「Ubuntu Server」にチェックが入っていることを確認し、次に進みます。
picture 22

ネットワークの設定を行います。
今回はDHCPでIPv4アドレスを自動で割り当てるので、設定は変えずにそのまま次へ進みます。
picture 23

プロキシ設定です。
今回は使用しないので、設定せずに次へ進みます。
picture 24

aptコマンドでパッケージをダウンロードする時に参照するサーバの設定です。
自動で近くのサーバが選択されるので、設定を変更せずに次へ進みます。
picture 25

ストレージの設定です。
仮想マシン作成時に設定したストレージ(今回の場合は256GBの仮想ストレージ)が選択されていることを確認し、次へ進みます。
picture 26

ストレージのパーティション設定です。
特に変更せず、そのまま次へ進みます。
picture 27

選択したディスクのフォーマットを行ってよいかを確認する画面となります。
今回は仮想マシンに新規インストールするため、「Continue」を選択してフォーマットします。
picture 28

サーバ名、ユーザ名、パスワードを設定します。
picture 29

SSHサーバをインストールするかを設定します。
今回はインストールするため、「Install OpenSSH Server」にチェックを入れ、次へ進みます。
picture 30

よく使われるソフトをインストールするか選択できます。
そのうちDockerを使用するつもりですが、その時にインストール手順含め確認したいので、今回は何も選択せずに次へ進みます。
picture 31

インストールが開始されます。
終了まで待ちます。
picture 32

一番下のメニューが「Reboot Now」に変わったら、インストール完了です。
「Reboot Now」を選択して、再起動しましょう。
picture 33

再起動後、設定したユーザ名とパスワードでログインします。
「<ユーザ名>p<サーバ名>:~$」が表示されたらログイン成功です。
picture 34

STEP04:Ubuntuサーバの初期設定をする

  • 仮想CD/DVDドライブの設定

仮想マシンから仮想CD/DVDドライブを取り外しておきます。
作成した仮想マシンを右クリックし、設定を選択します。
picture 15

「SCSIコントローラー」>「DVDドライブ」を選択し、削除ボタンをクリック。
picture 42

  • パッケージリストの更新
sudo apt update
picture 36
  • インストールされているパッケージの更新
sudo apt upgrade

「Do you want to continue?」は「Y」を入力し、Enter。
picture 37

インストールが完了すると、デーモンを再起動するか確認される。
再起動が必要なデーモンに自動でチェックが入っているようなので、そのままOKを選択。
picture 38

再起動完了。
picture 39

  • 自動アップデートの設定

unattended-upgradesをインストール。

sudo apt install unattended-upgrades
picture 40
sudo dpkg-reconfigure -plow unattended-upgrades

「Yes」を選択。
picture 41

ls /etc/apt/apt.conf.d/

以下ファイルがあることを確認。
「20auto-upgrades」
「50unattended-upgrades」
picture 44

「50unattended-upgrades」を編集する。

vi /etc/apt/apt.conf.d/50unattended-upgrades

「”$ {distro_id}:$ {distro_codename}-updates”;」部分がコメントアウトされているので、コメントアウト部を削除して有効化します。
picture 45

アップデート後、自動で再起動するように設定します。
「Unattended-Upgrade::Automatic-Reboot」を「true」に設定します。
また、再起動の時間を普段使っていない時間にするため、「Unattended-Upgrade::Automatic-Reboot-Time」を「04:00」に設定します。
picture 46

※viの使い方を毎回忘れるので参考サイトメモ…
viの基本的な使い方
vi で書き込みが出来ない場合の対応方法 エラー E45 / E505 / E212

  • ssh設定

sshの設定を変更していきます。
rootログインやらパスワード認証やらは禁止しておいて、ssh接続には公開鍵を使用するようにします。

vi /etc/ssh/sshd_config

sshを待ち受けるポート番号を変更します。
デフォルトの22ポートです。
これはssh接続に使用する一般的なポート番号のため、セキュリティを考えてポート番号を変更しておきます。
picture 47

rootログインを禁止します。
picture 48

パスワード認証によるssh接続を禁止します。
picture 49

PAM認証を禁止します。
picture 50

sshの設定が完了したら、sshサービスを再起動します。

sudo systemctl restart ssh
picture 51
  • ファイアウォール設定

Ubuntuサーバのファイアウォールとして、ufwをインストールします。

sudo apt install ufw
picture 52

ufwの設定で、IPv6サポートをOFFします。

vi /etc/default/ufw
picture 53

使用するポートを解放します。
とりあえずsshポートだけ開けておきます。

sudo ufw allow 1105
picture 54

解放したポート以外、すべてのポートを閉じます。

sudo ufw default deny
picture 55

設定後、ufwを有効化します。
解放したポートだけが表示されることを確認します。

sudo ufw enable
sudo ufw status
picture 56
  • timezone設定

timezoneを設定&確認。

sudo ln -sf /user/share/zoneinfo/Asia/Tokyo /etc/localtime
sudo dpkg-reconfigure --frontend noninteractive tzdata
strings /etc/localtime
picture 60
  • ntp設定

ntpサービスをインストールします。

sudo apt install ntp
picture 61

とりあえずOK。
picture 62
picture 63

ntpサービスを一旦停止します。

sudo service ntp stop
sudo service ntp status
picture 64

ntpdateをインストールします。

sudo apt install ntpdate

とりあえずOK。
picture 65
picture 66

ntpサーバを選択します。

sudo ntpdate ntp.nict.jp
picture 67

デフォルトのnptサーバをコメントアウトし、「pool ntp.nict.jp iburst」を追加します。

vi /etc/ntp.conf
picture 68

ntpサービスを起動します。

sudo service ntp start
sudo service ntp status
picture 69
  • 再起動

ここまで設定したら、再起動します。

sudo reboot
  • ウイルス対策ソフトインストール

Ubuntuで使用できるウイルス対策ソフトのClamAVをインストールします。

sudo apt install clamav clamav-daemon
clamd -V
picture 70

ウイルス定義データベースを自動更新するように設定します。

sudo systemctl enable clamav-freshclam
sudo systemctl status clamav-freshclam
picture 71

次に、ウイルススキャンを自動実行するように設定します。
まずは、ウイルススキャンを行うシェルスクリプトを作成します。

sudo mkdir ~/clamav
picture 72

「~/clamav」に、シェルスクリプトを作成します。

vi ~/clamav/checkvirus.sh

シェルスクリプトは以下の通り。

#!/bin/sh
clamscan --log /var/log/clamav/clamscan.log --infected --recursive --max-filesize=200M --max-scansize=200M / > /dev/null 2>&1

シェルスクリプトに実行権限を付与します。

sudo chmod 700 ~/clamam/checkvirus.sh
ls -l ~/clamav/
picture 74

自動実行するよう、crontabにスクリプトを設定しておきます。

sudo crontab -e

「sudo crontab -e」を実行すると、エディタが開くので、以下設定して保存します。
毎日AM5:00にウイルススキャンするように設定します。

0 5 * * * bash ~/clamav/checkvirus.sh

上記設定が保存されていることを確認します。

sudo crontab -l
picture 75

ここまで設定したらサーバを再起動して、設定した時刻にウイルススキャンされることを確認したら完了です。

参考URL

Windows10や11でHyper-Vを有効化する方法

Ubuntu 22.04 LTS Server インストール

Ubuntu 最低限抑えておきたい初期設定

20200707: Ubuntu 18.04.4 LTS – ntp が自動起動しない

【Ubuntu】ウイルス対策ソフトClamAVのインストール

viの基本的な使い方

vi で書き込みが出来ない場合の対応方法 エラー E45 / E505 / E212