ログ監視型・自動防御デーモン

サーバを狙う相手を、
ログから見つけて自動で締め出す。

Smart Shield は、ログを常時監視して攻撃元 IP を自動でブロックする常駐デーモンです。 正規表現によるルールベース検出と、AI (Claude / Gemini) を使ったログ解析を組み合わせ、 SSH・Nginx・Apache への攻撃を未然に止めます。

smart-shield — live
$ python -m shield -c config/shield.yaml run smart-shield starting (dry_run=false, jails=2, ai=on, auto-diagnose=on) WARNING jail | spike: 6.7 req/s — running auto-diagnose BAN ip=203.0.113.7 jail=nginx-auth reason=5 failures in 120s AI-BAN ip=198.51.100.42 reason=slow credential stuffing conf=0.92 iptables -I INPUT -s 203.0.113.7 -j DROP UNBAN ip=203.0.113.7 (ban expired, firewall rule removed) $ python -m shield explain 198.51.100.42 現在の ban: あり — jail=ai source=ai-ban 残り 7180 秒 攻撃として検知した行: 12 件 / イベント履歴を表示
Why Smart Shield

監視 → 判断 → ブロック → 解除 まで、全部自動。

普段は何もしなくて構いません。攻撃があれば自動で気付き、ブロックし、時間が経てば自動で解除します。

即時のルール検出

「同じ IP から findtime 秒以内に max_retries 回の失敗」を正規表現で検知し、その場でファイアウォールに DROP を登録します。

🤖

AI によるログ解析

定期的に直近ログを Claude / Gemini に投げ、低速スキャンや credential stuffing など、単純ルールに乗らない不審な動きを抽出して ban します。

🔥

OS ファイアウォール連携

Linux は iptables、Windows は netsh。Smart Shield 自身はパケットを触らず軽量。落ちてもブロックは効いたまま残ります。

🧪

安心の dry-run モード

最初は dry_run で起動。実際にはブロックせず「もし本番ならこのタイミングで止めていた」記録だけを残し、誤検知が無いか確認できます。

♾️

再犯者の永久 ban

一定期間に何度も ban された相手は自動で永久 ban に格上げ。手動で --permanent 指定や設定での永久化も可能です。

📒

すべて監査可能

試行記録・ban・イベントは SQLite に永続化。いつ・誰を・なぜブロックしたかを後から SQL で追跡でき、再起動後も状態を復元します。

Dual Engine

独立して動く、2つの判定エンジン。

片方が拾えなかった相手を、もう片方が拾う。高速なルールと、文脈を読む AI の補完関係です。

① Rule Engine — 即時

パターン一致でリアルタイムに止める

  • SSH / Nginx / Apache の失敗ログを正規表現で検出
  • スライディング窓カウンタで「N 回 / findtime 秒」を判定
  • 判断は一瞬。攻撃の最中にその場でブロック
  • 同梱フィルタ: sshd / nginx-auth / apache-auth
② AI Engine — 定期

単純ルールが見抜けない攻撃を捉える

  • 数分ごとに直近ログをまとめて Claude / Gemini へ
  • 低速スキャン・credential stuffing・shell 探索を検出
  • confidence がしきい値以上のものだけ採用 (誤検知抑制)
  • コスト最優先なら Gemini で月数百円から
How it works

ログ 1 行から、ブロックまで。

サーバが書き出すログを追いかけ、怪しい IP を OS ファイアウォールへ。時間が経てば自動で解除します。

1

tail

ログの末尾を 1 行ずつ追いかける (ローテーション対応)

2

判定

ルール / AI の二経路で不審な IP を抽出

3

ブロック

whitelist を除外し、OS ファイアウォールに DROP を登録

4

解除

期限切れの ban を自動で外す (永久 ban は対象外)

Investigate

負荷もエラーも、原因がすぐにわかる。

アクセスが急増したときも、エラーが増えたときも、原因を素早く切り分け。外部送信ゼロの集計を基本に、「なぜ ban したのか」の説明まで対応します。AI 解説はトグルで ON にできます。

📊

diagnose

直近ログを末尾読みし、送信元 IP・パス・User-Agent・エラー署名を Python で正確に集計。件数は LLM に数えさせないので、負荷やエラーの原因を素早く特定できます。

🚨

トラフィック急増を自動で診断

デーモン内で常時動き、リクエストレートの急上昇を検知すると自動で diagnose を実行。rate_threshold(req/s) を超えると発火し、cooldown_seconds で再実行を抑えて API コストに天井を設けます。結果はログと SQLite の両方に記録され、後から監査できます。

🔎

explain <ip>

特定 IP の ban 記録・検知した実ログ行・イベント履歴を表示。ban していない IP なら「Smart Shield 以外に原因がある」と切り分けます。履歴ゼロなら AI を呼ばず API も消費しません。

At a glance

軽量・常駐・マルチプラットフォーム。

2
判定エンジン
(ルール + AI)
3
同梱フィルタ
(sshd/nginx/apache)
¥数百〜
AI 運用コスト
(月 / Gemini Flash)
2 OS
Linux / Windows
対応
Coverage

インターネットに面したサーバへ。

ウェブサーバ・SSH サーバ・踏み台など、外からアクセスされる側に常駐させます。クライアント PC には入れません。

対象ソフト拾うログ主な検出内容
OpenSSH/var/log/auth.log ほかパスワード/公開鍵失敗、無効ユーザ、認証中の切断
Nginxaccess.log401/403 連発、/.env /wp-admin /.git/ 等の探索
Apacheaccess_log + error_log401/403、scanner パス、mod_auth_basic 失敗、mod_security ブロック

これら以外のソフトも、フィルタを 1 つ書けば同じ枠組みで監視できます。

導入から運用まで、すべて Passarea にお任せください。

設定・チューニング・保守は Passarea がまとめて代行します。お客様がコマンドや運用を覚える必要はありません。サーバ環境に合わせて最適な形で導入しますので、まずはお気軽にご相談ください。