Skip to content

BoB14th-SLiMe/operation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ›‘οΈ OT λ³΄μ•ˆ λͺ¨λ‹ˆν„°λ§ μ‹œμŠ€ν…œ

πŸ“‹ κ°œμš”

μ‚°μ—…μ œμ–΄μ‹œμŠ€ν…œ(OT) ν™˜κ²½μ˜ μ‹€μ‹œκ°„ μœ„ν˜‘ 탐지 및 λͺ¨λ‹ˆν„°λ§μ„ μœ„ν•œ 톡합 λ³΄μ•ˆ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.

μ£Όμš” κΈ°λŠ₯

  • βœ… μ‹€μ‹œκ°„ νŒ¨ν‚· 뢄석 - C++ 기반 κ³ μ„±λŠ₯ Parser
  • βœ… SLM ν•™μŠ΅ 데이터 생성 - CSV ν˜•μ‹ νŠΉμ§• μΆ”μΆœ
  • βœ… λ©”λͺ¨λ¦¬ 기반 슀트리밍 - Redis Stream + Kafka
  • βœ… Elasticsearch 연동 - λŒ€μ‹œλ³΄λ“œ 데이터 μ €μž₯
  • βœ… Docker 기반 배포 - μ»¨ν…Œμ΄λ„ˆ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜

πŸš€ λΉ λ₯Έ μ‹œμž‘

μ‹œμŠ€ν…œμ€ 2개의 독립적인 λ‹¨κ³„λ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€:

1️⃣ SLM ν•™μŠ΅ 단계 (Parser)

# Parser λΉŒλ“œ
cd Parser
sudo rm -rf output
rm -rf build

cmake -B build
cmake --build build

# ν•™μŠ΅ 데이터 생성
cd ..
chmod +x run-training.sh
./run-training.sh

β†’ CSV 데이터 생성 β†’ λͺ¨λΈ ν•™μŠ΅

2️⃣ 운영 단계 (RealtimeParser)

# RealtimeParser λΉŒλ“œ
cd RealtimeParser
sudo rm -rf output
rm -rf build

cmake -B build
cmake --build build

# ν™˜κ²½ μ„€μ •
cd ../operation
cp .env.example .env
nano .env  # ELASTICSEARCH_HOST μˆ˜μ •

# 운영 μ‹œμŠ€ν…œ μ‹œμž‘
chmod +x run-production.sh
./run-production.sh

β†’ μ‹€μ‹œκ°„ 탐지 β†’ Elasticsearch β†’ Dashboard

πŸ“– 상세 κ°€μ΄λ“œ: EXECUTION-GUIDE.md


πŸ—οΈ μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    OT Security System                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”‚
β”‚  β”‚ RealtimeParser   │───────▢│   JSONL Files    β”‚          β”‚
β”‚  β”‚  (μ‹€μ‹œκ°„ 탐지)    β”‚        β”‚   (곡유 λ³Όλ₯¨)     β”‚          β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β”‚
β”‚           β”‚                           β”‚                     β”‚
β”‚           β”œβ”€β”€β†’ Redis Stream           β”œβ”€β”€β†’ Python Sender   β”‚
β”‚           β”œβ”€β”€β†’ Kafka Topics           β”‚    λ˜λŠ” Filebeat   β”‚
β”‚           β”‚                           ↓                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”‚
β”‚  β”‚     Parser     β”‚          β”‚ Elasticsearch  β”‚            β”‚
β”‚  β”‚ (SLM ν•™μŠ΅μš©)    │─────────▢│ (Dashboard PC) β”‚            β”‚
β”‚  β”‚  CSV 좜λ ₯       β”‚          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                         β”‚
β”‚                                                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“‚ ν”„λ‘œμ νŠΈ ꡬ쑰

OT-Security-Monitoring/
β”‚
β”œβ”€β”€ README.md                   # 이 λ¬Έμ„œ
β”‚
β”œβ”€β”€ operation/                  # 🐳 Docker 운영
β”‚   β”œβ”€β”€ docker-compose.yml
β”‚   β”œβ”€β”€ docker-compose-with-parser.sh
β”‚   β”œβ”€β”€ test-elasticsearch-integration.sh
β”‚   └── .env.example
β”‚
β”œβ”€β”€ RealtimeParser/             # πŸ”§ μ‹€μ‹œκ°„ Parser
β”‚   β”œβ”€β”€ build/parser            # μ‹€ν–‰ λ°”μ΄λ„ˆλ¦¬
β”‚   β”œβ”€β”€ Dockerfile
β”‚   β”œβ”€β”€ config.json
β”‚   └── README.md
β”‚
β”œβ”€β”€ Parser/                     # πŸ“Š SLM ν•™μŠ΅μš© Parser
β”‚   β”œβ”€β”€ build/parser            # μ‹€ν–‰ λ°”μ΄λ„ˆλ¦¬
β”‚   β”œβ”€β”€ Dockerfile
β”‚   β”œβ”€β”€ config.json (CSV 좜λ ₯)
β”‚   └── README.md
β”‚
β”œβ”€β”€ python-jsonl-sender/        # 🐍 Python Sender
β”‚   β”œβ”€β”€ sender.py
β”‚   β”œβ”€β”€ Dockerfile
β”‚   └── README.md
β”‚
β”œβ”€β”€ filebeat/                   # πŸ“‘ Filebeat (λŒ€μ•ˆ)
β”‚   └── filebeat.yml
β”‚
└── docs/                       # πŸ“š λ¬Έμ„œ
    β”œβ”€β”€ QUICK-START.md
    └── README.md

πŸ“– 상세 ꡬ쑰: DIRECTORY-STRUCTURE.md


🎯 핡심 μ»΄ν¬λ„ŒνŠΈ

1. RealtimeParser (μ‹€μ‹œκ°„ 탐지)

  • μœ„μΉ˜: RealtimeParser/
  • μ—­ν• : μ‹€μ‹œκ°„ νŒ¨ν‚· 캑처 및 μ „μ²˜λ¦¬
  • 좜λ ₯: Redis Stream, Kafka Topics, JSONL Files
  • λΉŒλ“œ: cd RealtimeParser/build && cmake .. && make

2. Parser (SLM ν•™μŠ΅μš©)

  • μœ„μΉ˜: Parser/
  • μ—­ν• : SLM ν•™μŠ΅ 데이터 생성
  • 좜λ ₯: CSV Files (톡계 νŠΉμ§• μΆ”μΆœ)
  • λΉŒλ“œ: cd Parser/build && cmake .. && make

3. Python JSONL Sender

  • μœ„μΉ˜: python-jsonl-sender/
  • μ—­ν• : JSONL β†’ Elasticsearch 전솑
  • νŠΉμ§•: Watchdog 기반 μ‹€μ‹œκ°„ κ°μ‹œ

4. Docker Orchestration

  • μœ„μΉ˜: operation/
  • μ„œλΉ„μŠ€: Redis, Kafka, Parser, Sender
  • λͺ¨λ‹ˆν„°λ§: Kafka UI (8090), Redis Commander (8081)

πŸ“Š 데이터 흐름

μ‹€μ‹œκ°„ 탐지 (RealtimeParser)

Network Packets
      ↓
RealtimeParser
      β”œβ”€β”€β†’ Redis Stream (μ‹€μ‹œκ°„)
      β”œβ”€β”€β†’ Kafka Topics (이벀트)
      └──→ JSONL Files
            ↓
      Python Sender
            ↓
      Elasticsearch

SLM ν•™μŠ΅ (Parser)

Network Packets / PCAP Files
      ↓
Parser (ν•™μŠ΅μš©)
      ↓
CSV Files (νŠΉμ§• μΆ”μΆœ)
      ↓
SLM Training

πŸ”§ 기술 μŠ€νƒ

μ»΄ν¬λ„ŒνŠΈ 기술
Realtime Parser C++, libpcap, hiredis, librdkafka
Training Parser C++, libpcap, CSV 좜λ ₯
Streaming Redis Stream, Apache Kafka
Data Transfer Python, Watchdog, Elasticsearch Client
Storage Elasticsearch (Dashboard PC)
Orchestration Docker, Docker Compose

πŸ“š λ¬Έμ„œ

μ‹œμž‘ν•˜κΈ°

개발

연동

μ°Έκ³ 


πŸ› οΈ 개발 ν™˜κ²½ μš”κ΅¬μ‚¬ν•­

C++ Parser λΉŒλ“œ

  • CMake 3.15+
  • GCC 9.0+ λ˜λŠ” Clang 10.0+
  • libpcap-dev, hiredis-dev, librdkafka-dev

Docker μ‹€ν–‰

  • Docker 20.10+
  • Docker Compose 1.29+

Elasticsearch (Dashboard PC)

  • Elasticsearch 8.x
  • μ΅œμ†Œ 2GB RAM

🚦 μ‹œμŠ€ν…œ μƒνƒœ 확인

cd operation

# μ„œλΉ„μŠ€ μƒνƒœ
docker-compose ps

# 둜그 확인
docker-compose logs -f cpp-parser jsonl-sender

# Elasticsearch 데이터
curl http://192.168.1.100:9200/ot-security-packets-*/_search?pretty

λͺ¨λ‹ˆν„°λ§ UI


πŸ§ͺ ν…ŒμŠ€νŠΈ

cd operation
chmod +x test-elasticsearch-integration.sh
./test-elasticsearch-integration.sh

πŸ› νŠΈλŸ¬λΈ”μŠˆνŒ…

Parser μ‹œμž‘ μ‹€νŒ¨

# RealtimeParser λ°”μ΄λ„ˆλ¦¬ 확인
ls -lh RealtimeParser/build/parser

# Parser λ°”μ΄λ„ˆλ¦¬ 확인
ls -lh Parser/build/parser

# μ—†μœΌλ©΄ λΉŒλ“œ
cd RealtimeParser/build && cmake .. && make
cd ../../Parser/build && cmake .. && make

Elasticsearch μ—°οΏ½οΏ½ μ‹€νŒ¨

# .env 확인
cat operation/.env

# Elasticsearch ν…ŒμŠ€νŠΈ
curl http://192.168.1.100:9200

πŸ“ˆ μ„±λŠ₯ μ΅œμ ν™”

RealtimeParser

// RealtimeParser/config.json
{
  "parser": {
    "batch_size": 500,
    "flush_interval_ms": 500
  }
}

Parser (ν•™μŠ΅μš©)

// Parser/config.json
{
  "parser": {
    "batch_size": 100
  },
  "output": {
    "csv": {
      "rotation_size_mb": 100
    }
  }
}

πŸ”’ λ³΄μ•ˆ 고렀사항

  • λ„€νŠΈμ›Œν¬ 격리
  • 읽기 μ „μš© λ³Όλ₯¨
  • Elasticsearch 인증
  • λ¦¬μ†ŒμŠ€ μ œν•œ

⭐ μ‹œμž‘ν•˜κΈ°

# 1. μ €μž₯μ†Œ 클둠
git clone <repository-url>
cd OT-Security-Monitoring

# 2. Parser λΉŒλ“œ
cd RealtimeParser/build && cmake .. && make
cd ../../Parser/build && cmake .. && make

# 3. ν™˜κ²½ μ„€μ •
cd ../../operation
cp .env.example .env
nano .env

# 4. μ‹œμŠ€ν…œ μ‹œμž‘
./docker-compose-with-parser.sh

# 5. ν…ŒμŠ€νŠΈ
./test-elasticsearch-integration.sh

πŸŽ‰ μ™„λ£Œ! μ‹œμŠ€ν…œμ΄ μ‹€ν–‰λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€!

더 μžμ„Έν•œ λ‚΄μš©μ€ docs/QUICK-START.mdλ₯Ό μ°Έκ³ ν•˜μ„Έμš”.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages