VPSのサムネイル

VPS

【個人ユーザー向け】最低限これはやっておきたい、VPSのセキュリティ設定

初心者でもできるSSHポート変更やIP制限から、rootログイン禁止、鍵認証、ファイアウォール設定、不審アクセス監視まで、個人ユーザー向けに最低限やっておきたい、必須対策を知識レベル別に解説します。

編集ノート:SERVERSUSでは、パートナーリンクからコミッションを得ています。コミッションが記事の意見や、サービスの評価に影響を与えることはありません。

知識レベル別に解説

専門知識がない場合

Linuxの知識がない、コマンドラインに慣れていないという方は、セキュリティ設定を行うのは難しいかもしれません。

専門知識がなくも、現在のVPSサービスはブラウザからある程度のセキュリティ設定を行うことができる場合がほとんとです。

専門知識がない場合は、

  1. パケットフィルタリングでSSH接続するIPを制限する
  2. SSHのポートを変更する

この二つをやっておくことで、未設定に比べてセキュリティリスクを下げることができます。

それぞれの方法は、後ほど解説します。

専門知識がある程度ある場合

専門知識がある場合は、先ほどの強化策に加えて、以下のようなセキュリティ設定を追加しましょう。

  1. rootログインの禁止 / 一般ユーザーの追加
  2. パスワードログインの禁止 / SSH鍵認証の利用

ここまでやっておくと、かなりセキュリティが強化されます。個人レベルであれば、ここまでやっておけば「100%大丈夫」とは言えませんが、概ね安心です。

それぞれの方法は、後ほど解説します。

セキュリティにこだわりたい場合

さらにセキュリティを強化したい場合は、以下のような設定も追加で行うと良いでしょう。

  1. ファイアウォールの追加
  2. 不審なアクセスの監視

ここまでやっておけば、個人レベルであれば「100%とは言えないが、100%に近いレベル」と言えるでしょう。

それぞれの方法は、後ほど解説します。

セキュリティ設定方法

パケットフィルタリングでSSH接続するIPを制限する

多くのVPSサービスは、VPSに到達する前にサービス側でパケットフィルタリングを行うことができるようになっています。例えば、XServer VPSやWebArena Indigoでは、SSH接続を許可するIPアドレスを指定することができます。

パケットフィルタリングをする際は、

  1. PORT: 後述する変更したSSHポート
  2. IPアドレス: 自身の使っているIPアドレス

の二つを設定すればOKです。IPアドレスは、コマンドからも調べることができますが、IPアドレス調査サイトを使うのも手です。

パケットフィルタリングを設定することで、サービス側がVPSサーバーに到達する前に、アクセスを遮断してくれます。

パケットフィルタリングは意外と万能で、たとえばWebサーバーをVPSで運用しているなら、「80番、443番ポート"だけ"を許可」とすると、契約者自身ですらSSHログインができなくなります。

SSHする時だけパケットフィルタリングにアクセスを許可するIPアドレスを追加して、SSH接続が終わったら削除する、とするだけでもかなりセキュリティは高めることができます。初心者の方は、この方法が簡単で知識も不要なのでおすすめです。

SSHのポートを変更する

SSHのポートは、デフォルトで22番ポートが使用されています。このポートは、世界中の攻撃者が狙っているポートですので、変更しておきましょう。

SSHのポートを変更するには、以下のコマンドを実行します。

# SSH設定ファイルのPORTを49152に変更
sudo sed -i '/^#Port 22/aPort 49152' /etc/ssh/sshd_config

# SSHサーバーを再起動
sudo systemctl restart sshd

これだけなら、専門知識がなくてもコピペだけでできると思います。

rootログインの禁止 / 一般ユーザーの追加

Linuxでは、「root」という最高権限を持ったユーザーが必ず作成されます。rootユーザーは権限がある上にどのサーバーでも通用するユーザー名なので、攻撃者が狙いやすいというデメリットがあります。

そのため、rootログインを禁止することで、攻撃を防ぐことができます。

# rootログイン禁止
sudo sed -i '/^#PermitRootLogin/aPermitRootLogin no' /etc/ssh/sshd_config

このコマンド一発で、rootユーザーのログインが禁止できます。このままログアウトしてしまうと、サーバーにログインできなくなるので、一般ユーザーも作成しましょう。

# 一般ユーザーの追加
sudo adduser <ユーザー名>
# sudoグループに追加
sudo usermod -aG sudo <ユーザー名>

この二つをやっておけば、rootと同じ権限のユーザーでログインできるようになります。

パスワードログインの禁止 / SSH鍵認証の利用

一般ユーザーを作成したら、鍵認証でログインできるように設定をします。

まずは、自分のローカルで鍵を作成します。

# 鍵の作成
ssh-keygen -t rsa -b 4096

# 公開鍵をVPSにコピー
ssh-copy-id -i ~/.ssh/id_rsa.pub <ユーザー名>@<IPアドレス>

# 鍵認証でログイン
ssh <ユーザー名>@<IPアドレス>

ログインができたら、SSHのパスワードログインを禁止して、SSHログイン時は鍵認証を必須としましょう。

# パスワードログイン禁止
sudo sed -i '/^#PasswordAuthentication/aPasswordAuthentication no' /etc/ssh/sshd_config


# SSHサーバーを再起動
sudo systemctl restart sshd

これで鍵認証でしかログインできなくなります。

ファイアウォールの追加

PCでも使われているファイアウォールは、上記のパケットフィルタリングで通過してきたアクセスに対して、VPSサーバー側でガードするアプリケーションです。

パケットフィルタリングが入国審査、ファイアウォールが入国後の建物に入るための鍵のようなイメージです。

Linuxではファイアウォールは無料ソフトウェアを使うことができます。

# ファイアウォールのインストール
sudo apt install ufw

# ファイアウォールの起動
sudo ufw enable

# ポートを解放
sudo ufw allow 49152/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

これだけなので、かなり簡単です。「sudo ufw allow ....」コマンドについては、解放するポートを指定します。上記の例では、49152は先ほどSSHのポートを変更したポート番号です。80と443は、HTTPとHTTPSのポート番号です。

これ以外にもアプリなどによって使うポートがあるので、必要に応じて解放しておきましょう。

不審なアクセスの監視

ここまで設定をしても、まだ攻撃者はセキュリティの穴を狙ってきます。そこで、攻撃者のIPアドレスを監視して、攻撃を防ぐことができるソフトウェアを導入しましょう。

# fail2banのインストール
sudo apt install fail2ban

# fail2banの設定ファイルを開く
sudo nano /etc/fail2ban/jail.local

# [sshd]の設定を変更
[sshd]
enabled = true
port = 49152

# fail2banの起動
sudo systemctl start fail2ban

# fail2banの自動起動
sudo systemctl enable fail2ban

fail2banは、SSHのログイン失敗を監視して、一定回数以上失敗したIPアドレスを自動的にブロックするソフトウェアです。

ただ、fail2banは自分がミスした際にもIPアドレスをブロックしてしまうことがありますので、注意が必要です。特に、SSHのポートを変更した場合は、fail2banの設定ファイルを変更する必要があるので注意しましょう。


価格は記載がある場合を除き、すべて税込みです。

関連キーワード

VPSの新着記事

VPSの新着ガイド

もっと見る