VPSを安全に使うセキュリティ対策まとめ|危険と言われる理由と必須の初期設定

2026年10月に発生した大手事業者のVPS(仮想専用サーバー)における不正アクセス事案などをきっかけに、「VPSを使うのは危険なのではないか」「自分のサーバーやパソコンも狙われるのではないか」と不安を感じている方が増えています。

結論から言うと、VPSという仕組み自体が一律に危険なわけではありません。共用レンタルサーバーと比較して自由度が高く、個人開発やWebサービス、FX自動売買など幅広い用途に活用できる便利なサービスです。

一方で、その自由度の高さは「管理者権限(root や Administrator)が利用者に渡され、利用者自身がセキュリティを管理する責任」と表裏一体です。インフラ基盤を守る事業者任せにするのではなく、管理画面・OS・ネットワーク・データ保護のそれぞれに適切な対策を行うことで、リスクを大幅に軽減できます。

この記事では、特定のサービスに忖度せず、すべてのVPS利用者が安全にサーバーを運用するために知っておくべき「責任共有モデル」とメリット・デメリットの基本から、契約直後の管理画面防御、OSの必須初期設定、Docker利用時のファイアウォール貫通罠、そして万が一サーバーが侵害されても致命傷を防ぐデータ保護の鉄則までを体系的に解説します。

  1. この記事で行うこと
  2. 前提条件・対象読者
  3. 1. なぜ「VPSは危険」と言われるのか?事業者と利用者の責任境界線
    1. VPSの仕組みと「責任共有モデル」の基本
    2. VPSを利用するメリットとは?危険性だけではない自由度と利便性
    3. 代表的な3つの侵入・流出パターン
  4. 2. 【契約・管理画面編】VPSを契約したら最初に固めるアカウント防御
    1. 手順1:コントロールパネルの2要素認証(二段階認証)を必ず有効化する
    2. 手順2:OS外側の「パケットフィルター / セキュリティグループ」とOS内ファイアウォールの役割分担
    3. セキュリティ機能と運用の透明性でVPSを選ぶなら
  5. 3. 【OS初期設定編】乗っ取りを防ぐLinux・Windows共通の必須設定
    1. 手順1:root直接ログインの禁止と一般作業ユーザーの確認
    2. 手順2:SSHパスワード認証の廃止と公開鍵認証への完全移行
    3. 手順3:接続元PCを巻き込まないリモート接続設定(ドライブ共有・ForwardAgent無効化)
    4. 手順4:OS内ファイアウォール(ufw)のIPv6対応確認とセキュリティ自動更新
    5. 手順5:Windows VPSの場合に確認したい追加セキュリティ設定
  6. 4. 【データ保護・運用編】「万が一サーバーが侵害されても致命傷を防ぐ」設計
    1. 鉄則1:VPS上に「奪われてはいけない認証情報・平文データ」を置かない
    2. 鉄則2:VPS内部ではなく「外部の独立した環境」へバックアップを退避する
    3. 鉄則3:Docker利用時の落とし穴(ufwをバイパスするポート公開問題)
  7. 5. VPSを安全に運用するためのセキュリティチェックリスト
  8. 6. よくある質問(FAQ)
    1. Q1. レンタルサーバー(共用サーバー)とVPSはどちらが安全ですか?
    2. Q2. SSHのポート番号(22番)は別の番号に変更すべきですか?
    3. Q3. 個人開発や学習用のVPSでも、ここまで対策する必要がありますか?
  9. 7. まとめ
  10. 次に読むおすすめ記事
  11. 参考情報

この記事で行うこと

  • VPSが危険と言われる技術的な理由と「責任共有モデル」、およびVPSならではのメリットの整理
  • 契約直後に実施すべきコントロールパネルの2要素認証と上位パケットフィルターの設定
  • OS内部(Linux / Windows)で乗っ取りを防ぐための認証・ファイアウォール・自動更新設定
  • Docker利用時にOSのファイアウォール(ufw 等)がバイパスされる落とし穴と対策
  • 万が一VPS側が侵害・停止しても致命傷を防ぐ「機密情報を置かない運用」と外部バックアップ設計

前提条件・対象読者

この記事は、以下のような用途でVPSを利用している方、またはこれから導入を検討している方を対象としています。

  • 個人開発やWebアプリケーション、ブログ、APIサーバーの本番環境としてLinux VPSを運用する方
  • FX自動売買(MT4 / MT5等)や各種Bot、開発環境としてWindows VPSやLinux VPSを利用する方
  • 共用レンタルサーバーからVPSへのステップアップを検討しており、セキュリティ面の違いを知りたい方
  • 対象環境: 国内・海外の各種VPSサービス(さくらのVPS、ConoHa、Xserver VPS、AWS Lightsail 等)
  • 必要な権限: VPSコントロールパネルの契約者アカウント権限、およびサーバーOSの管理者権限(sudo / Administrator)

1. なぜ「VPSは危険」と言われるのか?事業者と利用者の責任境界線

VPSのセキュリティを正しく理解するためには、まず「どこまでをサーバー会社が守り、どこからを利用者が守るのか」という境界線と、VPS本来の特性を知る必要があります。

VPSの仕組みと「責任共有モデル」の基本

クラウドやVPSの世界には、AWS(Amazon Web Services)などが定義している「責任共有モデル(Shared Responsibility Model)」という共通の原則があります。

共用レンタルサーバーでは、OSやWebサーバーソフト(ApacheやNginxなど)のアップデート、OS内部の通信制御の多くを事業者が管理します。一方、VPSでは1台の物理サーバーを仮想化技術で分割し、そのうちの1区画(仮想マシン)を丸ごと利用者に貸し出します。

管理レイヤー共用レンタルサーバーVPS / クラウド(IaaS)VPSにおける具体的な管理内容
物理設備・データセンター事業者の責任事業者の責任施設の入退室管理、電源、空調、物理サーバーの保守
仮想化基盤・ホストOS事業者の責任事業者の責任ハイパーバイザーの保護、管理コンソール基盤の保護
ネットワーク基盤事業者が管理事業者が管理物理ネットワーク、上位スイッチ、パケットフィルター基盤の提供
ゲストOS(Ubuntu / Windows等)事業者が管理利用者が管理OSのセキュリティパッチ適用、不要サービスの停止
OS内部の通信制御・リモート接続事業者が管理する範囲が多い利用者が管理SSH(22番)やRDP(3389番)の認証設定、OS内ファイアウォール(ufw等)
ミドルウェア・アプリケーションサービス仕様による(CMS等は利用者)利用者が管理Webサーバー、DB、Docker、常駐プログラム等の設定と脆弱性対応
アカウント・保存データ事業者と利用者で分担事業者と利用者で分担管理画面の2要素認証、サーバー内機密データの管理・アクセス権制御
バックアップサービス仕様による利用者が計画・実施独立した外部環境・ローカルPCへの定期バックアップ退避と復元確認

なお、これは一般的な管理範囲の整理です。実際の責任分担はサービスの提供形態や契約内容によって異なります。特にクラウドサービスでは、IaaS・PaaS・SaaSによって利用者が管理する範囲が変わります。また、共用レンタルサーバーであっても、WordPress本体やプラグインの更新・管理画面のパスワード保護などは利用者側の責任となります。

このように、VPSでは「ゲストOSの中身と通信制御・データ保護」のセキュリティ責任が利用者側にあります。自由になんでもインストールできる反面、初期状態のまま放置すれば攻撃者の標的になりやすいのが実情です。

VPSを利用するメリットとは?危険性だけではない自由度と利便性

VPSには利用者自身がサーバーを管理しなければならないという負担がありますが、それを上回る多くのメリットがあります。

  1. OSやソフトウェアを自由に選択できる
    共用レンタルサーバーでは、事業者が用意した環境や機能の範囲内でしか利用できないことが一般的です。一方、VPSではUbuntuやDebian、AlmaLinux、Windows ServerなどのOSを選択でき、必要に応じてNginx、Docker、PostgreSQL、Node.js、Pythonなどを自由に導入できます。自分が使いたい技術やバージョンに合わせて環境を構築できるため、個人開発やシステム検証にも適しています。
  2. 他の利用者の影響を受けにくい
    共用レンタルサーバーでは、複数の利用者が同じOS・Webサーバー環境を共有しているため、他の利用者のアクセス増加や処理負荷によって自分のWebサイトやアプリケーションの動作に影響が及ぶ場合があります。VPSでは仮想マシンごとにCPUやメモリなどのリソースが割り当てられるため、共用環境よりも自分の用途に合わせたリソース管理がしやすくなります(ただし、物理サーバー自体は他の利用者と共有しているため、完全に独立した物理専用サーバーと同じではありません)。
  3. 常時稼働するプログラムを実行できる
    VPSは24時間稼働させることができるため、以下のような用途にも適しています。
    – FX自動売買(MT4 / MT5)
    – PythonやNode.jsで作成したBot
    – Web APIやバックグラウンド処理、定期実行プログラム
    – Dockerを利用したWebアプリケーションや開発・検証用サーバー
    自宅のパソコンを常時起動しておく必要がなく、外出先からも管理できます。
  4. 月額料金を抑えて自分専用のサーバー環境を持てる
    国内VPSサービスには、月額数百円から利用できるプランもあります。物理サーバーを購入したりデータセンターを直接契約したりすることなく、比較的低コストで自分専用の仮想サーバー環境を持ち、本格的なインフラ運用を経験できる点も大きな魅力です。

このように、VPSは危険だから避けるべきサービスではなく、「自由度の高さと引き換えに利用者側の管理責任が増えるサービス」と理解することが大切です。

代表的な3つの侵入・流出パターン

VPSをめぐるセキュリティ被害は、主に以下の3つの経路で発生します。

  1. 利用者側のOS・リモート接続設定の不備
    典型的なのが、SSH(ポート 22)やWindowsリモートデスクトップ(ポート 3389)をインターネット全体に開放したまま、推測されやすいパスワード認証を許可しているケースです。グローバルIPアドレスが割り当てられたVPSには、契約直後から世界中のボットによる総当たり攻撃(ブルートフォース攻撃)や脆弱性スキャンが24時間絶え間なく届きます。
  2. コントロールパネル(管理画面)のアカウント乗っ取り
    OSの中身をどれだけ堅牢にしても、VPS事業者のWeb管理画面(コントロールパネル)にログインされたら終わりです。管理画面を乗っ取られると、ブラウザ上のVNCコンソールから直接サーバーを操作されたり、OSを再インストールされたり、勝手に高スペックなサーバーを追加されて高額請求(クリプトジャッキング等)を受けたりします。
  3. 事業者側の管理基盤インシデントやリモート接続設定の死角
    2026年10月に発生したGMOインターネットグループの「お名前.com デスクトップクラウド」の事案では、一部のお客様のサーバー環境に第三者による不正なプログラムが設置されていたことが確認されました。被害拡大を防ぐため、2026年10月21日には対象サービスの全プランのサーバーが順次停止されました。また、影響を受けた可能性があるサーバーは26,739件と公表されています(ただし、この数字は対象となり得るサーバー数を示しており、そのすべてで不正アクセスや情報取得が確認されたことを意味するものではありません)。
    このように、事業者側の基盤や管理系が標的となるケースや、リモート接続時にローカルPCのドライブ共有を有効にしていたことで接続元PC側のデータまで危険に晒される構造的なリスクも存在します。

つまり、安全にVPSを利用するには「①管理画面を守る」「②OSの入口を固める」「③万が一サーバー側が侵害・停止しても致命傷にならないデータ運用を行う」という3段構えの対策が不可欠です。

2. 【契約・管理画面編】VPSを契約したら最初に固めるアカウント防御

OSにログインしてコマンドを叩く前に、まずはVPS事業者のコントロールパネル(会員メニュー)側で2つの防御壁を設定します。

手順1:コントロールパネルの2要素認証(二段階認証)を必ず有効化する

最優先で行うべきなのが、VPS事業者の会員メニューおよびコントロールパネルへのログインに対する「2要素認証(二段階認証)」の設定です。

  • パスワードの使い回しをやめる: 他社サービスから流出したID・パスワードのリストを使った「リスト型攻撃」を防ぐため、パスワードマネージャーを用いてランダムで長い固有のパスワードを設定します。
  • 認証アプリ(TOTP)等による2要素認証を有効化する: Google AuthenticatorやMicrosoft Authenticatorなどの認証アプリによるワンタイムパスワードを設定します。
  • バックアップコード(回復コード)を安全に保管する: スマートフォンの紛失や故障時にログインできなくなるロックアウトを防ぐため、発行されたバックアップコードはVPS上ではなく手元の安全な場所(暗号化されたパスワード管理ツールや紙の金庫保管など)に控えておきます。

例えば、さくらインターネットでは、2025年12月3日から会員メニューへのログイン時に2要素認証が必須化されています。認証アプリ(TOTP)のほか、メールやSMS、音声電話による認証方式が用意されており、バックアップコードも利用できます。このように、VPSを選ぶ際には、サーバー本体の機能だけでなく、契約者アカウントを保護する仕組みが整備されているかも確認しておきましょう。

手順2:OS外側の「パケットフィルター / セキュリティグループ」とOS内ファイアウォールの役割分担

多くのVPSサービスでは、OS内部のファイアウォール(Linuxの ufw や firewalld、Windows Defender ファイアウォール)とは別に、VPS事業者の上位ネットワーク側(仮想スイッチ)で通信を遮断できる「パケットフィルター」や「セキュリティグループ」の機能が提供されています。

上位パケットフィルターを使うメリット:

  • OS内部のファイアウォールをバイパスしてしまうソフトウェア(後述するDockerのポート公開など)を使っていても、上位ネットワークの対象範囲内でブロックされていれば外部から到達できない
  • サーバー自体のCPUやメモリなどのリソースを消費せずに不正パケットを破棄できる
  • 自宅やオフィスの固定IPアドレスがある場合、SSH(22番)等の接続元IPアドレスを管理画面から直感的に絞れる

ただし、OS内部のファイアウォールと上位パケットフィルターはそれぞれ異なる場所で通信を制御する仕組みであり、サービスごとに「仕様上の制限」や「併用時の注意事項」が異なります。必ず契約先VPSの公式マニュアルで仕様を確認してください。

例えば『さくらのVPS』のコントロールパネルで提供されているパケットフィルター機能の場合、公式マニュアルで以下の仕様と注意事項が明記されています。

通信の種類 / 項目さくらのVPS「パケットフィルター」での扱い利用者側での注意点
IPv4の指定ポート(SSH 22、Web 80/443、カスタム 1〜32767)フィルタリング可能(接続元IP制限も可能)SSH等は必要に応じて接続元IP(自宅やオフィスの固定IP等)を絞る
TCP / UDP の 32768〜65535 番ポートVPSから外部へ通信した際の戻りパケットを通すため、該当範囲を無条件許可ステートレス方式の仕様のため、高位ポートの制御や厳密な状態管理が必要な場合はOS側ファイアウォールで制御する
IPv6通信対象外(常にすべて許可される)パケットフィルターだけではIPv6通信を制御できないため、IPv6を利用する場合はOS内部のファイアウォールによる対策が必要
ICMP(ping 等)、フラグメントパケット、UDP 123番(NTP)制限不可(常に許可される)仕様として把握し、OS側のカーネル・更新を最新に保つ
Windows Serverプラン非対応(利用不可)「さくらのVPS for Windows Server」ではパケットフィルター機能を利用できないため、Windows Defender ファイアウォール等で制御する

また、さくらのVPS公式マニュアルでは、「OS内部でファイアウォール設定を行っている場合、設定の重複や意図しない通信遮断の恐れがあるため、パケットフィルターを利用しないことを推奨する(併用する場合は双方で必要な通信が許可されていることを確認する)」旨が案内されています。

このように、両方を併用できるクラウド・VPSサービスもありますが、さくらのVPSのように「IPv4のみ・シンプル運用なら上位パケットフィルターに一本化する」「IPv6通信の遮断やエフェメラルポート帯(32768〜65535番)まで含めたステートフルな制御を行いたい場合はOS内部のファイアウォール(ufw 等)を中心に設計する」といった使い分けが求められるケースもあります。自環境の要件(IPv6利用の有無やDocker利用の有無)に合わせて、どこで通信を遮断するかを明確に設計しましょう。

セキュリティ機能と運用の透明性でVPSを選ぶなら

ここまで紹介したように、VPSを安全に利用するには、事業者のセキュリティ機能だけでなく、利用者自身が適切な設定と運用を行うことが重要です。これからVPSを始める方は、料金だけでなく、管理画面の認証機能、パケットフィルター、緊急時のコンソール機能、公式マニュアルの充実度なども比較して選びましょう。

国内データセンター(石狩・東京・大阪)で運用されている『さくらのVPS』は、コントロールパネルの2要素認証や上位パケットフィルター、SSH接続不能時にブラウザから直接操作できるVNCコンソール・シリアルコンソールが標準で備わっており、公式マニュアルで仕様の制限事項まで詳しく公開されています。

2026年11月時点の料金(税込)は、初期費用無料で月額643円(石狩リージョン・512MBプラン)から利用できます。なお、Ubuntu 24.04 LTSおよびUbuntu 26.04 LTSを利用する場合は、いずれもメモリ1GB以上のプラン(石狩リージョンで月額880円〜)が対象となります(512MBプランでは提供されていないため注意してください)。また、申し込み時にクレジットカード払いを選択して無料お試しにチェックを入れると「2週間無料お試し(最大2台まで)」が利用できますが、お試し期間終了後は自動的に本登録(有料契約)へ移行するため、試用のみで終了する場合は期間内の解約手続きが必要である点など、申込画面で最新の適用条件を確認してください。

あわせて、さくらのVPSを導入する際は以下の注意点(デメリット・利用者側の負担)も理解した上で判断しましょう。

  • VPSの管理にはLinuxやWindowsの基本的な操作・セキュリティ知識が必要になる
  • OSのアップデートやファイアウォール等のセキュリティ管理は利用者自身の責任で行う必要がある
  • 標準のディスク領域とは別に、利用者自身でバックアップの取得・保存先を設計する必要がある(VPS本体の停止やアカウント障害、誤操作などに備え、外部ストレージやローカルPCへの定期バックアップやオプション機能の活用を検討してください)

PR

3. 【OS初期設定編】乗っ取りを防ぐLinux・Windows共通の必須設定

管理画面側の防御を固めたら、次はVPSのOS内部の初期設定を行います。ここでは特に利用者の多いUbuntu(Linux)の手順と、Windows VPSで必須となる設定の両方を解説します。

手順1:root直接ログインの禁止と一般作業ユーザーの確認

Linuxサーバーにおいて、最高権限を持つ root ユーザーでの直接SSHログインを許可しておくことは危険です。攻撃者はよく使われる特権ユーザー名を狙って総当たり攻撃を仕掛けてくるほか、最初から最高権限で侵入されると被害が即座にシステム全体へ及ぶためです。

近年のVPS標準OS(さくらのVPSのUbuntu 24.04 / 26.04など)では、初期状態から root での直接ログインが禁止されており、ubuntu などの初期管理ユーザーが用意されているケースが増えています。

もし初期状態が root ログインのみのVPSを使用している場合は、以下のコマンドで一般作業用ユーザーを作成し、sudo 権限(管理者権限への昇格権限)を付与してください。

# 新しい作業用ユーザー(例: appadmin)を作成
sudo adduser appadmin

# sudoグループに追加して管理者権限を付与(Ubuntu / Debian系)
sudo usermod -aG sudo appadmin

日常の作業はすべて一般ユーザーで行い、システム設定を変更するときだけ sudo を付ける運用を徹底します。なお、root ログインを禁止しただけでは一般ユーザー名に対する総当たり攻撃は防げないため、必ず次の「手順2:公開鍵認証への移行とパスワード認証の無効化」とセットで実施してください。

手順2:SSHパスワード認証の廃止と公開鍵認証への完全移行

SSH接続では、キーボードからパスワードを入力する方式(パスワード認証)を廃止し、暗号鍵のペアを使う「公開鍵認証」のみを許可します。また、固定IPアドレスがある環境では、第2章の上位パケットフィルターでSSHの接続元IPもあわせて制限するとさらに強固になります。

  1. 手元のパソコン(WindowsのPowerShellやMac/Linuxのターミナル)で、安全性の高いEd25519方式の鍵ペアを作成します(パスフレーズを設定してください)。
ssh-keygen -t ed25519
  1. 作成した公開鍵(~/.ssh/id_ed25519.pub)を、VPSのコントロールパネルの「SSHキー登録機能」でOSインストール時に自動配置するか、サーバー内の ~/.ssh/authorized_keys に登録します(パーミッションは ~/.ssh が 700、authorized_keys が 600)。
  1. 公開鍵で正常にSSHログインできることを確認したら、サーバー側の設定でパスワード認証を無効化します。

ここで技術的に非常に重要な注意点があります。 さくらのVPSなどで「コントロールパネルにSSH公開鍵を登録しただけ(または後から管理画面に追加しただけ)」では、稼働中OSのパスワード認証は自動的に無効になりません。さらに、Ubuntu 22.04 / 24.04以降の環境では、メインの /etc/ssh/sshd_config の先頭付近で Include /etc/ssh/sshd_config.d/*.conf が辞書順(昇順)に読み込まれ、50-cloud-init.conf などの分割設定ファイル側で PasswordAuthentication yes が指定されているケースがあります。

OpenSSHの /etc/ssh/sshd_config は「最初に一致した設定値が優先される(First Match Win)」仕様であるため、50-cloud-init.conf で yes が書かれている状態でメイン設定ファイル(/etc/ssh/sshd_config)の後半に PasswordAuthentication no と追記しても、先に読み込まれた 50-cloud-init.conf の yes が優先され、パスワード認証が無効化されない落とし穴があります。

そのため、以下の手順で既存の指定を確認した上で、辞書順で最も先に読み込まれる 00-local.conf を作成(または既存の .conf を整理)し、最後に必ず sshd -T で実効設定値を確認してください。

# 1. 既存の設定ファイル内で該当項目がどう指定されているか確認
grep -rn "PasswordAuthentication\|PermitRootLogin\|KbdInteractiveAuthentication" \
  /etc/ssh/sshd_config /etc/ssh/sshd_config.d/

# 2. 優先して読み込まれる設定ファイルを作成
sudo nano /etc/ssh/sshd_config.d/00-local.conf

/etc/ssh/sshd_config.d/00-local.conf に以下の内容を記述して保存します。

PasswordAuthentication no
PermitRootLogin no
KbdInteractiveAuthentication no

保存後、構文チェックと実効設定値の確認を行います。

# 3. 構文チェック(何もエラーが出なければOK)
sudo sshd -t

# 4. 実際に適用される設定値の確認
sudo sshd -T | grep -E \
  "passwordauthentication|permitrootlogin|kbdinteractiveauthentication"

出力結果が以下のようにすべて no になっていれば、設定は正しく反映されています(※なお、設定ファイル内に Match 条件付きのブロックがある場合は、接続ユーザーや接続元によって実効値が変わるため、必要に応じて sudo sshd -T -C user=appadmin,host=192.0.2.1,addr=192.0.2.1 のように条件を指定して確認します)。

passwordauthentication no
permitrootlogin no
kbdinteractiveauthentication no

確認できたら、最後にSSHサービスを再起動します。

# 5. SSHサービスを再起動(Ubuntu / Debian系)
sudo systemctl restart ssh

※再起動する際は、現在のSSH接続を残したまま、新しく別のターミナルウィンドウを開いて公開鍵でSSH接続できることを確認してから作業を完了してください(ロックアウト防止)。

SSH公開鍵の作成からエイリアス設定までの詳しい手順は、sshサーバの接続設定手順(公開鍵証明書の作成・登録・エイリアスでの接続方法など) でも解説しています。

手順3:接続元PCを巻き込まないリモート接続設定(ドライブ共有・ForwardAgent無効化)

意外と見落とされがちなのが、「もし接続先のVPSが攻撃者に侵害されていた場合、そこに接続した手元のパソコンまで被害を受ける」という逆方向のリスクです。

  • Windows(RDP接続)の場合:
    リモートデスクトップ接続(mstsc.exe)の「ローカル リソース」タブで、「ドライブ」の共有(ドライブリダイレクト)や不要な「クリップボード」共有のチェックを外してください。ドライブ共有がオンになっていると、VPS側から手元PCのファイル(\\tsclient\C 等)へアクセスできる経路が開いてしまいます。
  • Linux(SSH接続)の場合:
    手元PCの ~/.ssh/config で、不要なSSHエージェント転送(ForwardAgent yes や -A オプション)を使わないでください。エージェント転送を有効にして侵害されたサーバーへ入ると、手元PCの ssh-agent にソケット経由で不正な署名要求を送られ、別サーバーへの踏み台にされるリスクがあります。

これらの接続元PCを守るための具体的な設定確認手順については、以下の記事で詳しく解説しています。

手順4:OS内ファイアウォール(ufw)のIPv6対応確認とセキュリティ自動更新

OS内部でファイアウォール(Ubuntuの場合は ufw)を利用する場合は、必要なポートだけを明示的に開けます(※前述の通り、VPS事業者によっては上位パケットフィルターとの重複を避けるため、どちらか一方での管理が推奨される場合があります。双方を併用する場合は必要な通信が両方で許可されていることを確認してください)。

特に、上位のパケットフィルターでIPv6通信が制限できない環境でIPv6を有効にしている場合は、ufw 側でIPv6のフィルタリングが有効(IPV6=yes)になっていることを必ず確認してください。

# 1. ufwでIPv6が有効(IPV6=yes)になっているか確認
grep '^IPV6=' /etc/default/ufw

# 2. デフォルトで外部からの着信をすべて遮断、内部からの発信は許可
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 3. 【重要】ファイアウォール有効化前に必ずSSHポート(例: 22/tcp)を許可する
sudo ufw allow 22/tcp

# 4. Webサーバーを公開する場合のみ HTTP(80) / HTTPS(443) を許可
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 5. ファイアウォールを有効化し、状態(v6ルール含む)を確認
sudo ufw enable
sudo ufw status verbose

あわせて、OSの脆弱性(CVE)が放置されるのを防ぐため、unattended-upgrades によるセキュリティパッチの自動適用を設定しておきましょう。

なお、unattended-upgrades は主にUbuntuのAPTパッケージ管理対象となる更新を自動適用する仕組みです。Dockerイメージやコンテナ内のアプリケーション、Node.js(npm)やPython(pip / uv)等で独自に導入したソフトウェアは自動更新されないため、別途更新管理を行う必要があります。詳しい設定手順は以下の記事を参照してください。

手順5:Windows VPSの場合に確認したい追加セキュリティ設定

FX自動売買(MT4 / MT5)などでWindows VPSを利用する場合は、LinuxのSSHとは異なり、リモートデスクトップ(RDP)による接続が中心になります。手順3のドライブ共有無効化に加えて、Windows VPS側で以下の設定を必ず確認してください。

  • ネットワークレベル認証(NLA)を有効にする: RDPのセッション確立前にユーザー認証を要求することで、未認証の不正な接続試行に対する防御を強化します。
  • 接続元IPアドレスまたはVPNで制限する: 可能であれば、VPS事業者のファイアウォール機能やWindows Defender ファイアウォールで、自宅やオフィスなど許可したIPアドレスからのみRDP接続できるように絞るか、TailscaleなどのVPN経由でのみ接続する構成にします(※なお、「さくらのVPS for Windows Server」はコントロールパネルのパケットフィルター機能に非対応のため、OS内のWindows Defender ファイアウォールやVPNを用いて制御します)。
  • 管理者アカウントを日常利用しない: 普段のアプリケーション実行や作業には一般ユーザーを利用し、必要なときだけ管理者権限(Administrator)を使用します。
  • Windows Updateを定期的に適用する: OSやリモートデスクトップ関連の脆弱性を放置しないよう、更新プログラムを適用します。

なお、RDPの待ち受けポート番号を標準の 3389 番から変更するだけでは、ポートスキャンによって容易に特定されるため十分な対策にはなりません。公開ポートの制限、強固なパスワード、NLA、接続元IPアドレスの制限を組み合わせて多層防御を行ってください。

4. 【データ保護・運用編】「万が一サーバーが侵害されても致命傷を防ぐ」設計

ここまで管理画面とOSの防御を解説してきましたが、セキュリティの世界に「100%破られない環境」は存在しません。ゼロデイ脆弱性や設定ミス、あるいは事業者側のインシデントによって、ある日突然サーバーが停止したり侵害されたりする可能性は常にあると考えるべきです。

万が一の事態が起きても「致命傷(資産の喪失や全アカウントの連鎖乗っ取り)」を防ぐための3つの運用鉄則を押さえておきましょう。

鉄則1:VPS上に「奪われてはいけない認証情報・平文データ」を置かない

VPSを運用する上で最も危険なのは、サーバーのディスク内に「自分のすべてにアクセスできるマスター情報」を保存してしまうことです。

  • 普段使っているGoogleアカウントやApple ID、パスワードマネージャーのマスターパスワードをVPS上のブラウザに保存しない
  • AWSやGCPなどのクラウド全体を操作できる管理者APIキー(ルートアカウントや AdministratorAccess 権限のクレデンシャル)をVPS内の .env や設定ファイルに置かない
  • GitHubの個人アクセストークン(PAT)やデプロイ鍵を置く場合は、全リポジトリ権限ではなく「対象リポジトリのみ・読み取り専用(または最小限のスコープ)」に絞ったトークンを発行する
  • FX自動売買や暗号資産Bot等でVPSを利用する場合は、全資産が入ったメイン口座ではなく、運用に必要な最小限の資金だけを分けた専用口座・サブアカウントを使用し、出金権限を持たないAPIキー(取引限定スコープ)のみを設定する

「このVPSの中身が今日すべて攻撃者に見られても、他のサービスやメイン資産には被害が波及しない」という状態(信頼境界の分離)を作ることが、最大の防御になります。

鉄則2:VPS内部ではなく「外部の独立した環境」へバックアップを退避する

バックアップを取得していても、その保存先が「同じVPSの別ディレクトリ」や「同じVPSアカウント内の別サーバー」だけでは不十分です。

  • ランサムウェアに感染した場合、サーバー内からマウントされているバックアップ領域もまとめて暗号化・破壊されます
  • アカウント乗っ取りや事業者側の大規模障害・予防停止が発生した場合、コントロールパネルごとアクセスできなくなり、事業者側のスナップショット機能も取り出せなくなります

そのため、データベースのダンプや重要な設定ファイル・コンテンツは、必ず以下のような「VPSとは別のアカウント・認証情報で保護された外部環境」へ定期的に退避し、実際にデータを取り出して復元できるかどうかのテストも実施してください。

  • 手元のローカルPCや社内NASから、定期的に rsync や scp でVPS上のバックアップデータをプル(引き抜き)形式でダウンロードする
  • AWS S3、Cloudflare R2、Google Cloud Storageなどの外部オブジェクトストレージへ、VPS側からは必要最小限の書き込み権限のみを持つAPIキーを使って暗号化転送する。可能であれば、オブジェクトのバージョニングや変更・削除を制限するイミュータブル(変更不可)な保存機能も併用し、ランサムウェアやサーバー侵害によって過去のバックアップまで上書き・破壊されない仕組みを構築する
  • ソースコードやインフラ構成ファイル(Dockerfile や設定ファイル)は最初からGitHub等のリモートリポジトリで管理し、いつVPSが消えても別のVPSで短時間で再構築できるようにしておく

鉄則3:Docker利用時の落とし穴(ufwをバイパスするポート公開問題)

個人開発やWebアプリ運用でVPS上にDockerを導入する場合、必ず知っておくべき重大な仕様があります。

Docker公式ドキュメント(Packet filtering and firewalls)でも警告されている通り、Linux環境で docker run -p 8080:8080 や docker-compose.yml の ports: - "8080:8080" を指定してコンテナを起動すると、DockerデーモンがOSの iptables(または nftables)のルールを直接書き換えます。

その結果、Ubuntuの ufw で 8080 番ポートを遮断(deny)していたとしても、ufw の通常のルールがバイパスされてインターネット全体に 8080 番ポートがそのまま公開されてしまいます。

管理画面ツール(pgAdmin、phpMyAdmin、各種ダッシュボード)やデータベース(PostgreSQL 5432、MySQL 3306、Redis 6379)をこの状態で起動し、外部から直接不正アクセスされる事故が後を絶ちません。

Docker利用時の安全なポート指定方法:

# ❌ 危険な例:すべてのネットワークインターフェース(0.0.0.0)に公開され、ufwを貫通する
services:
  db:
    image: postgres:16
    ports:
      - "5432:5432"

# ⭕ 安全な例1:外部公開不要なDBなら ports 自体を書かない(同一Dockerネットワーク内からは通信可能)
services:
  db:
    image: postgres:16

# ⭕ 安全な例2:ホスト上のNginxリバースプロキシやSSHトンネルからのみ接続する場合は 127.0.0.1(ローカルループバック)を明示する
services:
  app:
    image: my-web-app:latest
    ports:
      - "127.0.0.1:8080:8080"

なお、Docker Engine 28.0.0未満のバージョンでは、127.0.0.1 にバインドした公開ポートであっても、同一L2ネットワーク(ローカルリンク層)上の別ホストからアクセスできてしまう問題が報告されており、Docker 28.0.0以降で制限が強化されました。Dockerは常に最新の安定版へ更新し、localhost へのバインドだけを過信しないようにしてください。

また、VPSコントロールパネル側の上位パケットフィルターで 80 番・443 番・22 番以外を遮断しておけば、IPv4の対象ポート(1〜32767番)については万が一 0.0.0.0 にバインドしてしまった際の防波堤になります。ただし、上位パケットフィルターにはIPv6通信がすべて許可される点や、戻りパケットのために 32768〜65535 番ポートが無条件許可されるといった制限があるため、コンテナ側のバインドアドレス指定(127.0.0.1)、Docker本体の最新化、およびIPv4・IPv6の両方を考慮したファイアウォール設計を組み合わせてください。

5. VPSを安全に運用するためのセキュリティチェックリスト

契約時から日常運用までに確認すべき項目を一覧表にまとめました。ご自身のVPS環境と照らし合わせて点検してみてください。

フェーズチェック項目危険な状態(NG)安全な推奨状態(OK)対策の目的
契約・管理画面会員メニュー・コンパネの認証IDとパスワードのみ(使い回し)固有パスワード + 2要素認証(TOTP等)有効化管理画面の乗っ取り・勝手なサーバー操作の防止
契約・管理画面上位パケットフィルター未設定(全ポート開放)仕様とOS内FWとの重複有無を確認し、不要ポートを遮断不要通信の排除・Dockerポート公開ミス時の防波堤
OS初期設定管理者ログインroot や Administrator を常用一般ユーザーで作業 + PermitRootLogin no特権アカウント侵害時の被害拡大防止
OS初期設定SSH認証方式(Linux)パスワード認証が有効公開鍵認証のみ(00-local.conf 作成と sshd -T 確認)ブルートフォース攻撃による不正侵入の防止
OS初期設定RDP接続設定(Windows)3389番を全公開・NLA無効NLA有効化 + 接続元IP制限またはVPN経由接続リモートデスクトップ経由の不正侵入防止
OS初期設定リモート接続(クライアント側)RDPドライブ共有ON / SSH ForwardAgent yesドライブ共有OFF / ForwardAgent no(SSHエージェント転送を無効化し、必要に応じて ProxyJump を利用)接続先サーバーから手元PCへの逆方向侵害の防止
OS初期設定OS内ファイアウォール無防備、またはIPv6未保護ufw 等の有効化(/etc/default/ufw の IPV6=yes 確認)IPv6や高位ポートを含めたステートフルな通信制御
アプリ・Dockerコンテナのポート公開- "5432:5432" で全公開非公開、または "127.0.0.1:8080:8080" に限定(Docker 28.0.0以降推奨)Dockerによる ufw バイパス事故の防止
データ・運用サーバー内の保存データメイン口座や全権限APIキーを平文保存最小権限の専用トークン・サブ口座のみ配置万が一の侵害時に被害範囲を局所化する
データ・運用バックアップと更新管理同一VPS内のみ保存・初期状態のまま放置別環境の外部ストレージへバージョニング等で定期退避(復元確認)+ OSとコンテナの更新ランサムウェア感染や基盤停止時のデータ消失・脆弱性放置の防止

6. よくある質問(FAQ)

Q1. レンタルサーバー(共用サーバー)とVPSはどちらが安全ですか?

用途と管理スキルによって異なります。WordPressでブログやコーポレートサイトを運営するだけで、Linuxコマンドやセキュリティ設定に自信がない場合は、事業者がOSやWebサーバーの保守・WAF(Web Application Firewall)設定まで一括で行ってくれる「共用レンタルサーバー」を選ぶ方が安全に運用しやすくなります(ただしWordPress自体の更新や管理画面保護は必要です)。

一方、Dockerを使った独自アプリ開発、Node.jsやPythonの常駐プログラム、FX自動売買、自由なミドルウェア構成が必要な場合はVPSが適しています。VPSを選ぶ場合は、本記事で紹介した初期設定と自動更新をセットで導入してください。

Q2. SSHのポート番号(22番)は別の番号に変更すべきですか?

ポート番号を 22 番から別の番号(例: 10022 など)に変更すると、機械的なボットによる無差別なログイン試行ログを大幅に減らす効果はあります。

ただし、攻撃者はポートスキャンによって変更後のSSHポートを容易に特定できるため、ポート番号の変更は「暗号鍵(公開鍵認証)の代わり」にはなりません。まずは「公開鍵認証への移行とパスワード認証の完全無効化」および「可能な場合は接続元IPアドレスの制限(またはTailscale等のVPN併用)」を最優先で行ってください。また、さくらのVPSのパケットフィルターのように 32768〜65535 番ポートが常に許可される環境では、変更先ポートを 32767 以下に設定してフィルター対象に含めることも重要です。

Q3. 個人開発や学習用のVPSでも、ここまで対策する必要がありますか?

はい、必要です。攻撃者のボットは「大企業のサーバーか、個人の学習用サーバーか」を区別しません。インターネット上にグローバルIPアドレスを持って公開されたすべてのサーバーを機械的にスキャンし、隙間があれば侵入して仮想通貨のマイニング(クリプトジャッキング)や他者へのDDoS攻撃の踏み台として悪用します。

個人用の小さなサーバーであっても、乗っ取られて犯罪の踏み台にされれば回線停止や損害につながるため、「2要素認証」「公開鍵認証(パスワード無効化)」「ファイアウォール・パケットフィルター」「重要機密を置かない」の4点は必ず最初から実施してください。

7. まとめ

VPSは、共用レンタルサーバーと比較して自由度が高く、個人開発やWebサービス、FX自動売買など幅広い用途に活用できる非常に便利なサービスです。

一方で、その自由度の高さは利用者自身がセキュリティを管理する責任と表裏一体です。事業者任せにするのではなく、管理画面・OS・ネットワーク・データ保護のそれぞれに適切な対策を行うことで、リスクを大幅に軽減できます。

  • VPSは「責任共有モデル」であり、ゲストOSより上の認証・通信制御・データ保護は利用者自身の責任で行う
  • 契約直後にコントロールパネルの「2要素認証」を確認・設定し、事業者の仕様に合わせて上位の「パケットフィルター」やOS内の「ファイアウォール(ufw のIPv6対応含む)」を適切に構成する
  • SSHは公開鍵認証へ移行し、00-local.conf の設定と sshd -T コマンドでパスワード認証と root 直接ログインが確実に無効化されていることを確認する
  • Windows VPSではNLAの有効化、ドライブ共有のオフ、接続元IP制限またはVPN接続を組み合わせる
  • Dockerのポート公開(-p)は ufw を貫通するため、Dockerを最新版(28.0.0以降)に保ちつつ外部公開不要なポートは 127.0.0.1 にバインドする
  • 万が一のサーバー侵害や基盤停止に備え、VPS上にマスター認証情報を置かず、バックアップは必ず外部の独立した環境へバージョニング等で退避して復元手順も確認しておく

ぜひこの記事のチェックリストを活用して、安心・安全なVPS運用をスタートさせてください。

次に読むおすすめ記事

リモートデスクトップ(RDP)やSSH接続において、接続先のサーバーから「接続元の手元PC」へ被害が及ぶのを防ぐ具体的なクライアント設定については、以下の記事で詳しく解説しています。

Ubuntuサーバーの初期設定からSSH構築、自動セキュリティ更新、トラブルシューティングまでを体系的に学びたい方は、以下の完全ガイドもあわせて参考にしてください。

Ubuntu・Linux完全ガイド|初期設定からサーバー構築まで
UbuntuをはじめとするLinux環境は、エンジニアの日常に欠かせない存在となっています。自宅・職場を問わず、開発サーバーの構築、WSL2上のLinux活用、デスクトップ環境のカスタマイズなど、Linuxを活用する場面は年々広がっています…

参考情報