핵심은 “사용자가 버튼 누르지 않아도 로그가 생기면 자동 분석이 이어지는 구조”다.
공격 발생
↓
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
역할:
access.log 변경 감지
→ 새로 추가된 줄만 읽기
→ 분석 큐에 넣기
의미:
로그 전체를 계속 다시 분석하지 않고 “새 이벤트”만 처리한다.