【補足1】DifyのためのConoHa VPS初期セキュリティ設定ガイド

Dify環境構築

この記事は、メイン記事『【構築】ConoHa VPSではじめるDifyコミュニティ版 導入・起動ガイド』の補足記事です。 Difyをインターネット上で安全に公開・運用するために強く推奨される、以下の3つの初期セキュリティ設定について詳しく解説します。

  1. SSHのセキュリティ強化: 不正アクセスを防ぐため、サーバーへの入り口を固めます。
  2. OS標準ファイアウォール(UFW)の設定: 必要な通信(Dify用)以外をすべて遮断します。
  3. Dockerのsudoなし実行設定: Difyの管理を便利にします。

 

1. SSHのセキュリティ強化(ポート変更・rootログイン禁止)

サーバー契約時のデフォルト設定(22番ポート、パスワード認証可)は、世界中からの攻撃対象となり非常に危険です。必ず設定を変更してください。

前提条件: ConoHa VPSの契約時にSSHキーを登録し、ローカルPCからSSHキーを使ってroot(またはdifyadmin)でログインできることを確認していること。

 

ステップ 1.1: SSH設定ファイルを開く

difyadmin ユーザー(または root)でサーバーにログインし、SSHの設定ファイル sshd_config を編集します。

# 'vi' (または 'nano') エディタで設定ファイルを開きます
sudo vi /etc/ssh/sshd_config

 

ステップ 1.2: SSHポートの変更

攻撃者は決まって 22 番ポート(SSHの標準ポート)を狙ってきます。これを推測されにくい番号(例: 10022など、1024〜65535の間)に変更します。

# viエディタ内で「/Port 22」と入力して検索
- #Port 22
+ Port 10022 
  • Port 22 の行を探し(コメントアウト # されている場合は解除し)、番号を変更します。

 

ステップ 1.3: rootユーザーでの直接ログインを禁止

万が一パスワードが漏洩しても、最高権限の root で直接ログインされるのを防ぎます。

# viエディタ内で「/PermitRootLogin」と入力して検索
- #PermitRootLogin prohibit-password
+ PermitRootLogin no
  • PermitRootLogin の行を探し、値を no に変更します。

 

ステップ 1.4: パスワード認証の禁止(SSHキー認証のみに限定)

パスワードを使った総当たり攻撃を完全に無効化し、SSHキーを持つPCからしかログインできないようにします。これが最も重要な設定です。

# viエディタ内で「/PasswordAuthentication」と入力して検索
- #PasswordAuthentication yes
+ PasswordAuthentication no
  • PasswordAuthentication の行を探し(コメントアウト # されている場合は解除し)、値を no に変更します。

 

ステップ 1.5: 設定を保存し、SSHサービスを再起動

vi エディタで、Esc キーを押し、:wq と入力してEnterを押し、保存終了します。

# 変更した設定をSSHサービスに反映させます
sudo systemctl restart sshd

[重要] 接続テスト(ロックアウト防止) 絶対に現在ログイン中のターミナルは閉じないでください。 別の新しいターミナルウィンドウを開き、変更後の設定でSSHログインできるかを必ずテストします。

# 別のターミナルから、変更後のポートとSSHキーでログインを試す
ssh -i [あなたの秘密鍵のパス] -p 10022 difyadmin@[サーバーのIPアドレス]

もしログインに失敗した場合は、開いたままの古いターミナルで sshd_config の設定を見直してください。

 

2. OS標準ファイアウォール(UFW)の詳細設定

ConoHaが提供する「セキュリティグループ」(サーバーの外側)とは別に、OS内部のファイアウォール(UFW)も設定することで、セキュリティを二重に強化します。

ここでは、「新しく設定したSSHポート」と「Difyが使うWebポート(80/443)以外のすべての着信を拒否します。

 

ステップ 2.1: UFWの初期設定

# 1. まず、すべての着信を拒否(deny)し、発信(outgoing)は許可する設定にします
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 2. 【最重要】ステップ1で変更した「新しいSSHポート」を許可します
# (これを忘れると、UFW有効化後にサーバーからロックアウトされます)
sudo ufw allow 10022/tcp  # (例: 10022番ポートの場合)

# 3. Difyが使用するWebポートを許可します
sudo ufw allow 80/tcp    # (HTTP用)
sudo ufw allow 443/tcp   # (HTTPS用。SSL化ガイドで必須)

 

ステップ 2.2: UFWの有効化

# 1. UFWを有効にします
sudo ufw enable
  • Command may disrupt existing ssh connections. Proceed with operation (y|n)?(SSH接続が切断されるかも)と警告されますが、y を入力してEnterを押します。

 

ステップ 2.3: UFWの状態を確認

# 1. 設定が正しく反映されているか確認します
sudo ufw status verbose
  • Status: active と表示され、To の欄に許可したポート(例: 10022/tcp, 80/tcp, 443/tcp)のみが ALLOW IN となっていれば成功です。

 

3. Dockerを sudo なしで実行する設定

メイン記事の手順では、Difyの起動に sudo docker compose up -d のように毎回 sudo が必要でした。これは、difyadmin ユーザーにDockerを操作する権限がないためです。

以下の設定を行うと、difyadmin ユーザーが sudo なしで docker コマンドを実行できるようになり、管理が便利になります。

 

ステップ 3.1: difyadmin ユーザーを docker グループに追加

ConoHaのDockerイメージでは、最初から docker というグループが作成されています。

# 1. 'difyadmin' ユーザーを 'docker' グループに追加します
sudo usermod -aG docker difyadmin

[注意] セキュリティ上の意味 docker グループに所属するユーザーは、実質的に root と同等の権限を持つことになります(Dockerコンテナを通じてホストOSを操作できるため)。信頼できるユーザーのみをこのグループに追加してください。

 

ステップ 3.2: 設定を反映させる(再ログイン)

グループの変更をOSに認識させるため、サーバーから一度ログアウトし、再度ログインします。

# 1. ログアウト
exit

# 2. 再度SSHで 'difyadmin' としてログイン
# ssh -i [あなたの秘密鍵のパス] -p 10022 difyadmin@[サーバーのIPアドレス]

 

ステップ 3.3: 動作確認

再ログイン後、sudo を付けずに docker コマンドが実行できるか確認します。

# 1. dify/docker ディレクトリに移動
cd dify/docker

# 2. "sudo" なしでコンテナの状態を確認
docker compose ps

コメント

error: Content is protected !!