Event-driven Pipeline 구체화

핵심은 “사용자가 버튼 누르지 않아도 로그가 생기면 자동 분석이 이어지는 구조”다.

공격 발생
  ↓
Apache access.log에 기록
  ↓
Log Watcher가 새 로그 감지
  ↓
Queue에 분석 작업 등록
  ↓
Parser가 로그 파싱
  ↓
Rule Engine이 공격 탐지
  ↓
OpenAI가 사고 분석/대응방안 생성
  ↓
SQLite/JSON 저장
  ↓
Dashboard 자동 갱신

구조도

[Kali 공격자]
      ↓
[DVWA / bWAPP / Metasploitable]
      ↓
[/var/log/apache2/access.log]
      ↓
[Log Watcher]
      ↓
[Task Queue]
      ↓
[Parser]
      ↓
[Rule Engine]
      ├── SQL Injection 탐지
      ├── XSS 탐지
      ├── Directory Traversal 탐지
      ├── Brute Force 탐지
      ├── Command Injection 탐지
      └── Web Shell 탐지
      ↓
[AI Analyzer]
      ↓
[SQLite / result.json]
      ↓
[Streamlit Dashboard]

구현 방식

4일 프로젝트면 Kafka, RabbitMQ까지 갈 필요 없다.

가볍게 이렇게 하면 된다.

watchdog
+ Python queue
+ SQLite
+ Streamlit auto-refresh

필요한 모듈

pip install watchdog pandas streamlit openai requests

파일 구조

project/
├── logs/
│   └── access.log
├── pipeline/
│   ├── watcher.py
│   ├── parser.py
│   ├── detector.py
│   ├── ai_analyzer.py
│   ├── storage.py
│   └── main.py
├── dashboard/
│   └── app.py
├── data/
│   └── findings.db
└── README.md

각 컴포넌트 역할

1. Log Watcher

역할:

access.log 변경 감지
→ 새로 추가된 줄만 읽기
→ 분석 큐에 넣기

의미:

로그 전체를 계속 다시 분석하지 않고 “새 이벤트”만 처리한다.

2. Task Queue