
軽量なWeb攻撃モニター。Goバイナリ1つ + SQLite。OSSECでもWAFでもない。
Web攻撃モニター。nginx / Caddy / アプリの隣に常駐し、アクセスログを追跡して、サイトが偵察や攻撃を受けているときに知らせます。このプロセスが停止しても、サイトの配信は継続します。
WazuhでもOSSECでもWAFでもありません。
コマンドは gpewebdefender です。ホスト、トークン、マップピン、GeoIP、ログパスはフラグまたはenvファイルで指定します — 特定の企業やサーバーに関する情報はコンパイルされていません。
これを一度も実行したことがない場合: このファイルを最初から最後まで一度読み、その後Method AまたはMethod Bを実行してください。「Pick a shape」を飛ばさないでください。
全体像: dochub/index.html または実行中のマネージャーの /docs/。03 · Install & run から始めてください。
実際の運用マシンからのライブダッシュボード。名前とピンは設定したものになります。
アラートが発生したときだけビームが発射されます — 攻撃元の国から攻撃を受けたホストへ — その後消えます。ホストはプレート上に残ります。フィードは同じイベントを番号付きで表示します。

行をクリックします。国のプレート、攻撃タイプのマーク、攻撃を受けたサーバー、および通常のフィールド(ルール、MITRE、証拠)。常設のトラックはありません。

レポート → Insight。同じアラートを分解して表示します。1h / 24h / 7d は実際の時計です。バーまたはホストカードをクリックすると検索できます。CSV / JSON / Copy はそのウィンドウをエクスポートします(セッションCookie、ファイルに取り込みトークンは含まれません)。





マネージャー上のFTS5。キーワード、IP、ホスト、種類。新しい順(When をクリックすると反転)。Elasticsearchは不要です。


Status はオンデマンドです。負荷、メモリ、ディスクが必要なときに Check now(または Check all paired hosts)をクリックします。マネージャーは即座に応答します。ペアリングされたセンサーは次のコマンドポーリング時(数秒)に応答します。チャートはあなたが要求したスナップショットです — バックグラウンドで何もスクレイプされません。ペアリングはブロックと同じフローです(DocHub 20 / 21)。
| 環境 | インストール |
|---|---|
| ノートPCと好奇心 | gpewebdefender demo — 偽の攻撃、あなたのサイトではありません |
| すでにアクセスログを書き出しているLinuxマシン1台 | オールインワン — マネージャーがそのログを追跡。エージェント不要。 |
| 小さな追加マシン + 1台以上のWebサーバー | スプリット — 追加マシンにマネージャー、Web(またはSSH)ホストごとに1エージェント |
ポート8787をインターネットに公開しないでください。デフォルトのリッスンは 127.0.0.1:8787 です。HTTPS + ログインを前面に置くまではSSHトンネルを使用してください。
go build -o gpewebdefender.exe .\cmd\gpewebdefender
gpewebdefender.exe demo
Linux:
go build -o gpewebdefender ./cmd/gpewebdefender
./gpewebdefender demo
http://127.0.0.1:8787 を開く
これらのマップショットは架空です。ダッシュボードを現実として扱う前にDocHub 04 を参照してください。
このリポジトリから、rootとして。Windowsを使用している場合は、まずLinuxバイナリをビルドしてください:
$env:GOOS="linux"; $env:GOARCH="amd64"; $env:CGO_ENABLED="0"
go build -o gpewebdefender-linux-amd64 .\cmd\gpewebdefender
オールインワン(このマシンにアクセスログがある):
chmod +x deploy/install-manager.sh deploy/install-agent.sh
sudo ./deploy/install-manager.sh --all-in-one \
--tail /var/log/nginx/access.log \
--journal \
--home 40.7,-74.0
スプリット(まずモニター、次に各Webマシン):
# on the monitor
sudo ./deploy/install-manager.sh --home 40.7,-74.0
# on a web / SSH box
scp root@MONITOR:/usr/local/bin/gpewebdefender /usr/local/bin/gpewebdefender
scp root@MONITOR:/etc/gpewebdefender/env /etc/gpewebdefender/env
sudo ./deploy/install-agent.sh \
--url http://MONITOR:8787 \
--name web-1 \
--tail /var/log/nginx/access.log \
--journal
MONITOR、web-1、ログパスをあなたの値に置き換えてください。
後で任意 — そのホストがブロック命令を受け取れるようにする: Settings → Paired hosts → フレーズ + コード、次に install-agent.sh に --code ABCD-2341 --block fail2ban を追加。DocHub 20。
次にノートPCから:
ssh -L 8787:127.0.0.1:8787 user@THEBOX
http://127.0.0.1:8787/login を開き、最初のadmin(人)を作成します。これは取り込みトークンではありません。
/usr/local/bin/gpewebdefender にコピーし、chmod +x。useradd --system --home /var/lib/gpewebdefender --shell /usr/sbin/nologin gpewebdefenderrules/ と dochub/ を /var/lib/gpewebdefender/ にコピー。deploy/env.example を /etc/gpewebdefender/env にコピー。長いランダムな GWD_TOKEN を設定。モード 640。deploy/gpewebdefender.service.example をsystemdにコピー。必要に応じてhome / tailを編集。systemctl daemon-reload && systemctl enable --now gpewebdefenderdeploy/gpewebdefender-agent.service.example を同じトークン、安定した --name、--tail / --journal で設定。例は deploy/ にあります。
/login → 最初のadmin。または SIEM_ADMIN_USER + SIEM_ADMIN_PASSWORD を一度設定し、その後パスワード行を削除。US または 40.7,-74.0)、エージェントの --name ごとに1行。.mmdb を配置し、--geoip を渡す。deploy/nginx-gwd.conf.example。公開vhostで /api/ingest を拒否。DocHub 15 と 18。/api/ingest にJSONをPOST。パスワードは絶対に送らない。DocHub 19。gpewebdefender pair --url … --name web-1 --code … --block fail2ban → Approve。DocHub 20。Viewerと取り込みトークンはBANできません。自動ではありません。/.well-known/siem-canary を設置し、公開ホストで GET /@vite/client が200でないことを確認し、アクセスログでは見えないIDOR / webhook / スコア悪用のために kind=secprobe をPOST。パスワードは絶対に送らない。UIが空の場合: デモモードではなく、--tail / エージェントがまだ行を送信していません。journalctl -u gpewebdefender -n 50。
アクセスログに現れるものすべて:
.env、.git、phpMyAdmin、wp-login、actuators)--journal または auth.log 経由の sshd / sudo/@vite、/@fs、/src/main.jsx、配信される .js.map(200はリーク)kind=applogin / tenantlogin / secprobe をPOST(IDOR、canary、webhook、スコア悪用、…)。DocHub 19 / 22。ログに記録しない限りPOSTボディは見えません(通常は記録すべきではありません)。
nginx / Apache combined、または nginx / Caddy / Traefik JSON。JSONに切り替える価値があります。DocHub 05 を参照。