今回はイマドキのVPSであるKAGOYA CLOUD VPSにUbuntuをセットアップし、セキュアに運用する方法を紹介します。とはいえ他のVPSサービスにもそのまま利用できます。
VPS放浪記
筆者は諸般の事情でKAGOYA CLOUD VPSを借りることにしました。
主に動作させるのはNextcloudサーバーです。一般的なVPSサービスのストレージ容量は
筆者が使用したことのあるVPSサービスはこれで3社目ですが、いずれもOSテンプレートとして最新のUbuntu LTS
KAGOYA CLOUD VPSのよかったところ
KAGOYA CLOUD VPSのよかったところは、前述のとおり大容量プランが用意されていることと、比較的新しいハードウェアを使用しているところです。具体的なCPUのスペックはここでは述べませんが、なんと
OSテンプレートのよくないところ
KAGOYA CLOUD VPSだけでなく少なくとも筆者の知っている限りですが、OSテンプレートのよくないところはrootアカウントが有効になっており、必ず初回はこれでログインしないといけないことです。Ubuntuはrootユーザーが無効になっており、これを使うのはどうにも抵抗があります。なので可能な限り早急にrootユーザーを無効にするのが目標の1つです。
とはいえKAGOYA CLOUD VPSはrootユーザーのログインに秘密鍵が必須
インスタンス作成
ではセットアップを初めましょう。まずはアカウントを作成し、続けてインスタンスを作成します
「OSテンプレート」
「ログイン用認証キー」
あと変更すべきなのは
OpenSSHでのログイン
では作成したインスタンスにログインします。前述のとおり秘密鍵を使用してログインする必要がありますので、実行するコマンドは次のとおりです。
$ ssh root@(IPアドレス) -i (ダウンロードした秘密鍵)
ユーザーの作成
rootでログインしたら、何はなくてもまずは普段使用するユーザーを作成します。なお作成するユーザーは例として
# adduser ikuya # gpasswd -a ikuya sudo
ikuyaユーザーを作成し、sudoコマンドを使えるようにしました。
作成したユーザーでログインする際も公開鍵認証を使用するのが望ましいため、公開鍵をコピーします。
コピーする方法はいくつか考えられます。
~/.ssh/
を手でコピーするauthorized_ keys ssh-copy-id
コマンドを実行するssh-import-id
コマンドを実行する
1は原始的な方法であまりおすすめしません。よく使われるのは2ですが、GitHubやLaunchpadに公開鍵を登録している場合は3を使用するのが簡単でしょう。今回は3を行います。
# sudo -i -u ikuya $ ssh-import-id-gh ikunya
ssh-import-id-gh
コマンドは、引数で指定したユーザーのGitHubに登録している公開鍵を取得します。Launchpadの場合はssh-import-id-lp
になります。
作成したユーザーでOpenSSHによるリモートログインができることを確認し、sudoコマンドが実行できることを確認してください。ユーザーの作成はここまででおしまいです。
なおデフォルトではOpenSSHのパスワード認証が有効になっていますが、公開鍵認証のみに変更するのがおすすめです。具体的な方法は紹介しませんが、このあたりが不案内であればそもそも
不要なユーザーの削除
不要なユーザーといいつつrootユーザーは削除できないため、厳密にはパスワードをオフにします。次のコマンドを実行してください。
$ sudo passwd -l root
あとなぜかubuntuユーザーもいるため、こちらは削除します。
$ sudo deluser ubuntu
ファイアウォールの設定
ファイアウォールは、VPSサービスによってはオプション機能で用意している場合もあります。しかし、UbuntuにはUFWという優れたファイアウォールツールがあるので、これを使用するのがいいでしょう。本連載で最初にUFWを紹介したのは15年前
とはいえ使い方は非常に簡単です。
- OpenSSHでのアクセス
(ポート22) は制限付きで開放する - あとはすべて拒否する
という設定をする場合は以下のコマンドを実行します。
$ sudo ufw limit 22 $ sudo ufw enable
これだけです。limit
の意味は第76回をご覧ください。
筆者の個人的な見解としては、OpenSSHによる公開鍵認証を使用し、パスワード認証を使用せず、ポート22を制限付きで開放すれば充分にセキュアな状態を保てると考えています[2]。もちろん、よりセキュアな状態の設定も可能です。
ドメインの設定
ドメイン名でアクセスする場合は、このあたりでドメインを設定するといいでしょう。筆者の機能はVPSの機能を使用しておらず、別のサービスで設定していますので解説は省略します。
VPSサービスにはIPv4だけではなくIPv6のIPアドレスも割り当てられているので、AレコードだけではなくAAAAレコードも登録しましょう。
ミラーサーバーの設定
KAGOYA CLOUD VPSのOSテンプレートにあるUbuntuは、アップデートの取得先がマスターサーバー
自動アップデート
VPSにログインして手動でパッケージのアップデートをするのは手間なので、自動実行するように設定します。Nextcloudサーバーのように自分しか使わない場合
そのような場合、/etc/
を以下の差分を参考に変更してください。不要なパッケージは削除し、再起動の必要がある場合は朝5時に実行するような設定です。
--- /etc/apt/apt.conf.d/50unattended-upgrades.orig 2023-01-25 22:02:26.797891680 +0900
+++ /etc/apt/apt.conf.d/50unattended-upgrades 2023-02-04 20:41:21.766881618 +0900
@@ -80,27 +80,27 @@
// Remove unused automatically installed kernel-related packages
// (kernel images, kernel headers and kernel version locked tools).
-//Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
+Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
// Do automatic removal of newly unused dependencies after the upgrade
-//Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
+Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
// Do automatic removal of unused packages after the upgrade
// (equivalent to apt-get autoremove)
-//Unattended-Upgrade::Remove-Unused-Dependencies "false";
+Unattended-Upgrade::Remove-Unused-Dependencies "true";
// Automatically reboot *WITHOUT CONFIRMATION* if
// the file /var/run/reboot-required is found after the upgrade
-//Unattended-Upgrade::Automatic-Reboot "false";
+Unattended-Upgrade::Automatic-Reboot "true";
// Automatically reboot even if there are users currently logged in
// when Unattended-Upgrade::Automatic-Reboot is set to true
-//Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
+Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
// If automatic reboot is enabled and needed, reboot at the specific
// time instead of immediately
// Default: "now"
-//Unattended-Upgrade::Automatic-Reboot-Time "02:00";
+Unattended-Upgrade::Automatic-Reboot-Time "05:00";
// Use apt bandwidth limit feature, this example limits the download
// speed to 70kb/sec
もし再起動したくないとか、5年以上使いたいという場合はUbuntu Pro採用を検討してください。
また最近のUbuntuは第676回で紹介したPhased Update
サーバー運用するには、遅らせても構わないアップデートあればトラブル回避のため、遅らせるに越したことはありません。というわけで遅らせます。次のコマンドを実行してください。
$ echo 'APT::Get::Never-Include-Phased-Updates "true";' | sudo tee /etc/apt/apt.conf.d/99-Phased-Updates
終わりに
記事としてはここでおしまいですが、あくまでVPSの準備が整ったというだけであり、サーバーとしての本格利用はここからです。引き続き健闘を祈ります。