VPSを契約して、OSをインストールする。SSHでログインできることを確認したら、次は何をするでしょうか。
すぐにDockerを入れたり、Nginxを設定したり、WordPressを動かしたくなる人もいると思います。新しいサーバーを手に入れたときは、早く何かを動かしたくなるものです。
ただ、インターネットに公開されたVPSなら、その前に済ませておきたい作業があります。サーバーのセキュリティ対策です。
SSHの標準ポートである22番ポートには、外部から接続を試みるスキャンやログイン試行が届くことがあります。特別なWebサイトを公開していなくても、グローバルIPアドレスを持つサーバーは外部からアクセスできる状態になり得ます。
もちろん、VPSを契約したら必ず数日で攻撃される、という意味ではありません。しかし、初期設定のまま管理用ポートを公開し続ける理由もありません。
SSHの設定変更、管理ユーザーの作成、ファイアウォールの設定、ログイン試行への対策……。一つずつ手作業で設定すると、時間がかかるうえ、設定漏れも起こりやすくなります。
そこで今回は、SSHやUFW、Fail2banなどの設定をまとめて自動化するオープンソースツール「vps-security-hardening」を紹介します。
VPSの初期設定を効率化したい人に向けて、主な機能、実行前の準備、利用時の注意点、手作業で設定する場合との違いまで解説します。
VPSの初期設定で、なぜセキュリティ対策が必要なのか

VPSは自由度が高い反面、サーバーの管理も自分で行う必要があります。
共用レンタルサーバーなら、OSやSSHなどの基盤部分は基本的にサービス提供会社が管理します。一方、VPSではOSの更新やログイン制御、ファイアウォールなどを自分で設定する場面が多くなります。
例えば、rootユーザーでSSH接続できる状態を放置していると、rootアカウントに対するログイン試行を直接受ける可能性があります。パスワード認証が有効な場合、弱いパスワードや使い回しのパスワードはリスクになります。
ここで必要なのは、単にSSHのポート番号を変更することだけではありません。
- rootでの直接ログインを制限する
- 管理用の一般ユーザーを作成する
- SSH鍵認証を適切に設定する
- 不要なポートへの外部アクセスを制限する
- ログイン失敗が繰り返された場合に対処する
- OSやソフトウェアの更新を確認する
こうした対策を組み合わせることで、サーバーの管理環境を整えていきます。
ポート番号を22番から別の番号に変えると、標準ポートへの機械的なアクセスを減らせる場合があります。ただし、ポート変更だけでサーバーが安全になるわけではありません。認証とアクセス制御を適切に設定することが重要です。
vps-security-hardeningとは?
vps-security-hardening は、VPSに対する基本的なセキュリティ設定を自動化するためのツールです。公開されているプロジェクト情報では、SSHの設定、管理ユーザーの作成、Fail2ban、UFW、Docker関連の確認などをまとめて実行する仕組みが紹介されています。<Cite refs={[“turn753183search0″,”turn753183search4”]}/>
リポジトリはGitHubの wlzh/skills で確認できます。利用する際は、リポジトリ内の vps-security-hardening ディレクトリにあるREADME、スクリプト、ライセンス、対応OSを確認してください。
このツールの便利なところは、SSH設定やファイアウォール設定を別々の手順書に従って進めるのではなく、決められた流れでまとめて実行できることです。
例えば、初めてVPSを契約した人が、SSHの設定を変更したあとにUFWを有効化しようとして、SSHの許可ルールを入れ忘れると、サーバーに接続できなくなることがあります。
一つひとつの作業は難しくなくても、実行する順番や設定同士の関係を理解していないと、思わぬトラブルにつながります。自動化ツールは、こうした作業を整理するうえで役立ちます。
ただし、自動化されているからといって、内容を確認せずに実行してよいわけではありません。サーバーのOSや現在の設定、公開しているサービスによっては、追加の調整が必要になることがあります。
主な機能:SSHからDockerまでまとめて対策

このツールで扱う主な項目を、実際の運用に沿って見ていきましょう。
SSHの設定と管理ユーザーの作成
まず重要なのが、サーバーへのログイン方法です。
ツールは管理用の一般ユーザーを作成し、sudoによる管理操作を行えるように設定する構成になっています。また、rootのパスワードによる直接ログインを制限し、SSHポートや鍵認証の設定を整えます。<Cite refs={[“turn753183search0″,”turn753183search4”]}/>
SSH鍵認証を利用すると、パスワードだけに頼らないログイン方式を構成できます。ただし、秘密鍵の保管やアクセス権限の管理は利用者自身が行う必要があります。
Fail2banによるログイン試行への対策
Fail2banは、ログに記録された繰り返しの認証失敗などを検出し、設定した条件に応じて接続元を一時的に遮断するためのツールです。
SSHへの不審なログイン試行が多い環境では、追加の防御策になります。ただし、Fail2banだけですべての攻撃を防げるわけではありません。強固な認証設定と組み合わせて使うことが大切です。
UFWによるファイアウォール設定
UFWはLinuxで利用されるファイアウォール管理ツールの一つです。
必要な通信だけを許可し、使わないポートへの外部アクセスを制限することで、サーバーの公開範囲を管理しやすくなります。
このツールではSSHのポート変更に合わせた設定も行います。実行前に新しいSSHポートをVPS事業者側のファイアウォールでも許可しておく必要があります。
Dockerを使う場合の注意点
Dockerを利用している場合、コンテナのポート公開設定にも注意が必要です。
Dockerはネットワークルールを独自に設定することがあり、構成によってはUFWで想定していた制御と異なる結果になることがあります。
そのため、データベースやRedisなど、外部公開する必要のないサービスは安易にポートを公開しないことが重要です。必要なサービスだけを外部に公開し、コンテナのポート割り当てと実際の通信経路を確認しましょう。
実際の使い方:実行前の準備から設定確認まで

ここでは、ツールの紹介情報に記載された実行形式を例に、作業の流れを整理します。
実際に実行する前に、必ず最新のREADMEとスクリプトを確認してください。以下はコマンドの形式を理解するための例であり、すべての環境でそのまま動作することを保証するものではありません。
1. VPS側のファイアウォールを確認する
最初に、VPS事業者の管理画面でファイアウォールやセキュリティグループを確認します。
SSHのポートを変更する予定なら、新しいポートへの接続を許可しておきます。OS側のUFWだけを変更しても、事業者側のファイアウォールが通信を遮断していれば接続できません。
2. ローカル環境に必要なツールを準備する
紹介されている実行方法では、SSH接続を自動化するために sshpass を利用します。使用するOSに応じて導入方法を確認し、ツールのREADMEに従って準備してください。<Cite refs={[“turn753183search4″,”turn753183search5”]}/>
なお、sshpass はパスワードを使ったSSH接続を自動化するツールです。導入しただけで安全性が高まるわけではなく、パスワードの取り扱いには注意が必要です。
3. コマンドの引数を設定する

公開されている使用例は、次のような形式です。
./scripts/harden-vps.sh \
--ip <VPS_IP> \
--root-pass <ROOT_PASSWORD> \
--user <NEW_USER> \
--user-pass <NEW_USER_PASSWORD> \
--port <SSH_PORT>
各引数の意味は次の通りです。
| 引数 | 意味 |
|---|---|
--ip | 接続先VPSのIPアドレス |
--root-pass | rootのパスワード |
--user | 新しく作成する管理ユーザー名 |
--user-pass | 新しいユーザーのパスワード |
--port | 変更後に使用するSSHポート |
山括弧で囲まれた部分は説明用のプレースホルダーです。実際に使用するときは、自分のVPSに合わせた値に置き換えます。
ここで特に注意したいのが、パスワードをコマンドの引数として渡す点です。環境によっては、コマンド履歴やプロセス情報などから値が見えてしまう可能性があります。実際のスクリプトがパスワードをどのように扱うかを確認し、使い回しのパスワードを避け、不要なログに認証情報を残さないようにしてください。
4. 実行後は別の接続で確認する

設定が完了したら、元のSSH接続をすぐに閉じず、新しいターミナルから新しいユーザーとポートでログインできるか確認します。
あわせて、次の項目を確認します。
- 新しいSSHポートで接続できる
- SSH鍵認証が利用できる
- sudoで必要な管理操作ができる
- UFWが有効になっている
- Webサーバーなど、必要なサービスにアクセスできる
- Fail2banが正常に動作している
この確認が終わるまでは、既存の接続を維持しておくほうが安全です。設定を誤ると、SSHで再接続できなくなる可能性があるためです。
手作業で設定する場合と何が違う?
VPSのセキュリティ対策は、シェルスクリプトを使わなくても手作業で設定できます。重要なのは、どの方法が自分の環境に合っているかです。
| 比較項目 | 手作業で設定 | 自動化ツールを利用 | 管理サービスを利用 |
|---|---|---|---|
| 初期設定の手間 | 多い | 少なくしやすい | サービスによる |
| 設定内容の理解 | 学びやすい | スクリプトの確認が必要 | 内部設定が見えにくい場合も |
| 設定漏れ | 作業者による | ツールの実装や環境に依存 | 提供範囲による |
| 環境に合わせた調整 | 自由度が高い | 対応範囲の確認が必要 | 制約がある場合も |
| 向いている人 | Linuxを学びたい人 | 初期設定を効率化したい人 | サーバー管理を任せたい人 |
個人的には、Linuxの設定を一つずつ学びたい人なら手作業にも十分な価値があると思います。一方、複数のVPSを管理していて、毎回同じ初期設定を繰り返しているなら、自動化のメリットは大きくなります。
ただし、ツールが設定してくれる範囲と、自分で管理する必要がある範囲は分けて考えましょう。バックアップ、アプリケーションの更新、ログの確認、アクセス権限の見直しなどは、初期加固が終わった後も必要です。
初心者がつまずきやすいポイント

SSHのポートを変更したら接続できなくなった
よくある原因は、OS側のファイアウォールかVPS事業者側のファイアウォールで、新しいポートが許可されていないことです。
変更前に新しいポートを許可し、設定後は別の接続からログインを確認してください。もし接続できなくなった場合に備えて、事業者が提供するWebコンソールやVNCなどの復旧手段も事前に確認しておくと安心です。
rootのパスワード認証を無効にしたら、管理できなくなった
rootログインを制限する前に、新しい管理ユーザーとSSH鍵認証が正しく動作することを確認してください。
設定を変更する順番が重要です。新しいログイン方法が使えることを確かめずに、現在の接続方法を無効にしないようにしましょう。
UFWを有効にしたらWebサイトが表示されない
Webサイトを公開する場合、HTTPの80番ポートやHTTPSの443番ポートなど、必要な通信を許可する必要があります。
SSHだけを考えてファイアウォールを設定すると、Webサーバーやその他のサービスへの通信まで遮断してしまうことがあります。実際に公開しているサービスを洗い出してからルールを設定してください。
自動化したから、もうセキュリティ対策は不要だと思ってしまう
これは避けたい考え方です。
初期設定の自動化は、セキュリティ対策の出発点にすぎません。OSやアプリケーションの更新、バックアップ、アクセスログの確認、不要なポートの整理など、継続的な管理も必要です。
また、ツールの更新状況や対応OSが変わることもあるため、利用前にはリポジトリの最新情報を確認しましょう。
メリット・デメリットと利用時の注意点
このツールの最大のメリットは、VPSの初期加固で繰り返し発生する作業を、一つの手順にまとめられることです。SSH、管理ユーザー、Fail2ban、UFWなどを個別に設定する負担を減らせます。
一方で、サーバーの設定をまとめて変更するため、環境に合わない設定が含まれていると、SSH接続や公開サービスに影響が出る可能性があります。
特に、すでにWebサイトやDockerコンテナを動かしているVPSに適用する場合は慎重に判断してください。新規構築直後のVPSと、複数のサービスが稼働している本番サーバーでは、必要なファイアウォールルールも異なります。
可能であれば、最初は重要なデータがない検証用VPSで試し、設定内容と動作を確認してから本番環境に適用するのがおすすめです。
まとめ:VPSを使い始める前に、まず管理用の入口を整える
VPSを契約すると、早くアプリケーションを動かしたくなります。しかし、公開サーバーでは、サービスを構築する前にSSH、管理ユーザー、ファイアウォールなどの基本設定を整えておくことが大切です。
vps-security-hardening は、こうした初期設定を効率化したい人にとって、検討する価値のあるオープンソースツールです。手作業で設定する時間を減らし、基本的な対策をまとめて進められる点が魅力です。
ただし、実行前のバックアップや復旧手段の確認、スクリプトの内容確認、新しいSSH接続のテストは省略しないでください。パスワードをコマンド引数で扱う点にも注意が必要です。
VPSのセキュリティ対策は、一度設定したら終わりではありません。 初期設定を整えた後も、OSやソフトウェアの更新、バックアップ、ログの確認を続けることが重要です。
Linuxの基本を学びながら自分で管理したい人にも、複数のVPSの初期設定を効率化したい人にも、まずは検証環境で試し、自分の運用に合うか確認してみてください。

评论