
경량 웹 공격 모니터. Go 바이너리 하나 + SQLite. OSSEC도, WAF도 아니다.
웹 공격 모니터. nginx / Caddy / 앱 옆에 위치하며, 액세스 로그를 추적하고 사이트가 탐색되거나 공격받고 있을 때 알려줍니다. 이 프로세스가 죽어도 사이트는 계속 서비스됩니다.
Wazuh도, OSSEC도, WAF도 아닙니다.
명령은 gpewebdefender입니다. 호스트, 토큰, 지도 핀, GeoIP, 로그 경로는 플래그 또는 환경 파일입니다 — 특정 회사나 서버에 대한 내용은 컴파일되어 있지 않습니다.
이것을 한 번도 실행해 본 적이 없다면: 이 파일을 처음부터 끝까지 한 번 읽고, 그다음 방법 A 또는 방법 B를 수행하세요. "형태 선택"을 건너뛰지 마세요.
전체 그림: dochub/index.html 또는 실행 중인 매니저의 /docs/. 03 · 설치 및 실행부터 시작하세요.
실제 운영자 장비의 라이브 대시보드. 이름과 핀은 설정한 대로 표시됩니다.
알림이 발생할 때만 샷이 발사됩니다 — 공격자 국가에서 피격된 호스트로 — 그런 다음 사라집니다. 호스트는 플레이트에 남아 있습니다. 피드는 동일한 이벤트이며, 번호가 매겨집니다.

행을 클릭하세요. 국가 플레이트, 공격 유형 표시, 피격된 서버, 그리고 일반적인 필드(rule, MITRE, evidence). 상시 추적은 없습니다.

Reports → Insight. 동일한 알림을 분석한 것입니다. 1h / 24h / 7d는 실제 시계입니다. 막대나 호스트 카드를 클릭하면 Search로 이동합니다. CSV / JSON / Copy는 해당 기간을 내보냅니다(세션 쿠키, 파일에 수집 토큰 없음).





매니저의 FTS5. 키워드, IP, 호스트, 종류. 최신순(When을 클릭하면 반전). Elasticsearch 없음.


Status는 요청 시에만 작동합니다. 로드, 메모리, 디스크를 원할 때 Check now(또는 Check all paired hosts)를 클릭하세요. 매니저는 즉시 응답합니다. 페어링된 센서는 다음 명령 폴링 시(몇 초) 응답합니다. 차트는 당신이 요청한 스냅샷입니다 — 백그라운드에서 아무것도 수집되지 않습니다. 페어링은 block과 동일한 흐름입니다(DocHub 20 / 21).
| 보유 환경 | 설치 |
|---|---|
| 노트북과 호기심 | gpewebdefender demo — 가짜 공격, 실제 사이트 아님 |
| 이미 액세스 로그를 기록하는 Linux 박스 하나 | 올인원 — 매니저가 해당 로그를 추적. 에이전트 없음. |
| 작은 추가 박스 + 하나 이상의 웹 서버 | 분리 — 매니저는 추가 박스에, 웹(또는 SSH) 호스트마다 에이전트 하나 |
포트 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
분리 (먼저 모니터, 그다음 각 웹 박스):
# 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.
그런 다음 노트북에서:
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마다 한 행..mmdb를 넣고 --geoip를 전달.deploy/nginx-gwd.conf.example. 공용 vhost에서 /api/ingest를 거부하세요. DocHub 15 및 18./api/ingest에 POST JSON. 비밀번호는 절대 보내지 마세요. DocHub 19.gpewebdefender pair --url … --name web-1 --code … --block fail2ban → Approve. DocHub 20. Viewer와 수집 토큰은 차단할 수 없습니다. 자동이 아닙니다./.well-known/siem-canary를 심고, 공용 호스트에서 GET /@vite/client가 200이 아닌지 확인하고, 액세스 로그가 볼 수 없는 IDOR / webhooks / score abuse에 대해 kind=secprobe를 POST. 비밀번호는 절대 보내지 마세요.UI가 비어 있다면: demo가 아니고, --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, score abuse, …). DocHub 19 / 22.로그하지 않는 한 POST 본문은 볼 수 없습니다(일반적으로 로그하지 말아야 합니다).
nginx / Apache combined, 또는 nginx / Caddy / Traefik JSON. JSON으로 전환할 가치가 있습니다. DocHub 05를 보세요.