MENU

Difyを守る鉄壁の3騎士!Linuxセキュリティ対策

当ページのリンクには広告が含まれています。

ローカル環境(Linuxサーバー)でDifyを運用する際、セキュリティ対策は避けて通れません。「動けばいい」で放置していると、不正アクセスやリソース枯渇のリスクにさらされます。

この記事では、Dify環境を堅牢に守るための「鉄壁の3騎士」とも呼べる3つのオープンソースツールを紹介し、その導入手順を解説します。

  1. Netdata (監視): リアルタイムでサーバーの健康状態を可視化
  2. Fail2Ban (防御): 攻撃者を検知して自動的にBAN(遮断)
  3. Trivy (予知): コンテナや設定の脆弱性を事前にスキャン
目次

1. Trivy (予知):脆弱性を事前にチェック

まずは「守るべき対象(Dify)」自体に穴がないかを確認します。Trivyは、Dockerイメージや設定ファイルに含まれる既知の脆弱性をスキャンするツールです。

詳しいインストール方法やスキャン手順については、以下の詳細記事で解説しています。まずはここからチェックを始めましょう。

2. Fail2Ban (防御):攻撃を自動遮断

次に、外部からの攻撃に対する「盾」を用意します。Fail2Banはログを監視し、不正なログイン試行などを検知すると、そのIPアドレスをファイアウォールで自動的にブロックします。

インストールと設定

# インストールと設定ファイルの準備
sudo apt update && sudo apt install fail2ban -y
sudo cp /etc/jail.conf /etc/jail.local

設定ファイル(/etc/fail2ban/jail.local)を編集し、基本的な防御ルールを記述します。

[DEFAULT]
# 1時間に5回攻撃してきたIPを、24時間遮断する
findtime = 3600
maxretry = 5
bantime = 86400

# ホワイトリスト ← 自身のIPを除外(重要!)
ignoreip = 127.0.0.1/8 ::1 <あなたのPCのIPアドレス>

[sshd]
enabled = true

[nginx-http-auth]
enabled = true
logpath = /var/log/nginx/error.log

[nginx-botsearch]
enabled = true
logpath = /var/log/nginx/access.log

起動と確認

sudo systemctl restart fail2ban

# 正しく動いているか確認
sudo fail2ban-client status

Jail listに sshd, nginx-http-auth, nginx-botsearch の3つが表示されていれば稼働中です。これで、パスワード総当たり攻撃などの脅威からサーバーが守られます。

fail2banの運用(起動/停止)

fail2banは通常、常時起動されますが、必要な内容がブロックされてしまった場合には、以下の停止、起動を実施します。

# 接続のブロックを解除 
sudo fail2ban-client unban --all

# 一旦停止
sudo systemctl stop fail2ban

# jail.localに対してチェックを除外する様に「ホワイトリスト」に追加
sudo nano /etc/fail2ban/jail.local

# 起動
sudo systemctl start fail2ban

3. Netdata (監視):サーバーの健康状態を可視化

最後に、サーバー内部の状況をリアルタイムで監視する「目」を取り付けます。Netdataは、CPU負荷やトラフィック、Dockerコンテナの状態を美しいグラフィカルなダッシュボードで表示してくれます。

netdataは、リアルタイムパフォーマンスモニタリングができるツールで、長期間の監視データの蓄積などはできないので、過去のパフォーマンスグラフを参照すると言ったことはできません。

インストール

# インストールスクリプトの実行(数分かかります)
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel --no-updates

※途中で「Do you want to enable automatic updates?」と聞かれたら、勝手に設定が変わらないよう no を選択して進めて大丈夫です。

ファイアウォールの開放

netdataは、APIを使用しクライアントのブラウザに表示されるため、FireWall等でポートの開通をする必要があります。

LinuxのFireWallの設定は、以下のコマンドを実行してください。

# Netdataのポート(19999)を許可
sudo ufw allow 19999/tcp

# 設定を反映
sudo ufw reload

※サーバ側で接続Portを制限している場合には、19999のportも開放して下さい。

2. ダッシュボードへのアクセス確認

インストールが終わると、ブラウザから以下のURLで現在のサーバーの状況が見られるようになります。

  • URL: http://あなたのサーバーIP:19999

※画面右下の「Skip and use the dashboard anonymously」を選択するとダッシュボードが表示されます。

Difyコンテナ名の表示設定

標準のままだと、Difyのコンテナが「ID(英数字の羅列)」で表示されてしまい、どれが apidb か分かりにくいです。これを名前で表示するように設定します。

# NetdataがDockerグループにアクセスできるようにする
sudo usermod -aG docker netdata

# 設定を反映させるためにNetdataを再起動
sudo systemctl restart netdata

Fail2Banとの連携

Fail2Ban を導入した場合は、「今、何件ブロックしているか」をグラフで見られるようにします。

# Fail2Banログへのアクセス権限をNetdataに与える
sudo usermod -aG adm netdata
sudo systemctl restart netdata

ダッシュボードへのアクセス

ブラウザで http://{サーバーIP}:19999 にアクセスすると、以下のようなダッシュボードが表示されます。

Netdataダッシュボード

右側のメニューから「Docker Containers」を選べば、Difyの各コンテナ(api, worker, weaviateなど)のリソース消費状況が一目瞭然です。また、「Fail2Ban」セクションでは、ブロックした攻撃の数を確認でき、守られている実感が湧きます。

まとめ

この3つのツールを導入することで、Difyの運用環境は劇的に安全になります。

  • Trivyで穴を塞ぎ、
  • Fail2Banで攻撃を弾き、
  • Netdataで異常を即座に察知する。

どれも無料で利用でき、サーバーへの負荷も軽微です。ぜひ導入して、安心安全なAIライフを送ってください。

【推奨】業務システム化に有効なアイテム

生成AIを学ぶ

システム化のパートナー

VPSサーバの選定

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次