Packet Analyzer
БесплатноНе проверенEnables network packet capture, analysis, and threat detection via distributed client-server architecture with RabbitMQ, PostgreSQL, and external security APIs
Описание
Enables network packet capture, analysis, and threat detection via distributed client-server architecture with RabbitMQ, PostgreSQL, and external security APIs (NVD CVE, MITRE ATT&CK, AbuseIPDB).
README
네트워크 패킷을 캡처하고 분석하는 MCP (Model Context Protocol) 서버 시스템입니다. 클라이언트-서버 아키텍처로 구성되어 있으며, 여러 호스트에서 패킷을 수집하여 중앙에서 분석할 수 있습니다.
개요
이 프로젝트는 네트워크 보안 모니터링 및 분석을 위한 분산 시스템입니다:
- 클라이언트: 각 호스트에서 tcpdump로 패킷을 캡처하고 Kafka로 전송
- 서버: Kafka에서 패킷을 수집하고 PostgreSQL에 저장한 후 외부 보안 API로 분석
- RAG 시스템: 취약 IP 정보를 벡터 데이터베이스에 저장하고 시맨틱 검색으로 매칭
시스템 아키텍처
┌─────────────────┐
│ Client 1 │──┐
│ (Host A) │ │
└─────────────────┘ │
│
┌─────────────────┐ │ ┌─────────────────┐ ┌──────────────────┐
│ Client 2 │──┼────▶│ Kafka │────▶│ Server │
│ (Host B) │ │ │ Message Queue │ │ - Packet Store │
└─────────────────┘ │ └─────────────────┘ │ - Analyzer │
│ │ - RAG System │
┌─────────────────┐ │ └──────────────────┘
│ Client N │──┘ │
│ (Host N) │ ▼
└─────────────────┘ ┌──────────────────┐
│ PostgreSQL │
│ + pgvector │
│ Database │
└──────────────────┘
│
▼
┌──────────────────┐
│ External APIs │
│ - NVD CVE │
│ - MITRE ATT&CK │
│ - AbuseIPDB │
└──────────────────┘
주요 기능
클라이언트 (Packet Capture)
- tcpdump를 사용한 실시간 패킷 캡처
- Scapy를 사용한 패킷 파싱 (TCP, UDP, ICMP)
- BPF 필터 지원
- pcap 파일 파싱 및 전송
- Kafka를 통한 배치 전송
- 여러 네트워크 인터페이스 지원
서버 (Packet Analysis)
- Kafka 컨슈머로 패킷 수집
- PostgreSQL + pgvector에 패킷 저장 및 인덱싱
- 외부 보안 API 통합
- NVD CVE 데이터베이스 검색
- MITRE ATT&CK 프레임워크 매핑
- AbuseIPDB 위협 인텔리전스
- 자동 패킷 분석
- 악의적 IP 탐지
- 포트 스캔 탐지
- 안전하지 않은 프로토콜 탐지
- 비정상 트래픽 탐지
- RAG 기반 취약 IP 관리
- 벡터 임베딩을 통한 시맨틱 검색
- 취약 IP 데이터베이스 구축
- 실시간 패킷-위협 매칭
- 통계 및 리포팅
- 프로토콜 분포
- Top Talkers
- 위협 요약
설치
1. 프로젝트 클론
git clone <repository-url>
cd packet-analyzer-mcp
2. Python 패키지 설치
uv를 사용하는 경우:
uv sync
또는 pip를 사용하는 경우:
pip install -e .
3. 인프라 설정
PostgreSQL 설치 및 설정
# Ubuntu/Debian
sudo apt-get install postgresql postgresql-contrib
# macOS
brew install postgresql
brew services start postgresql
# 데이터베이스 생성
sudo -u postgres psql
CREATE DATABASE packet_analyzer;
CREATE USER packet_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE packet_analyzer TO packet_user;
\q
RabbitMQ 설치 및 설정
# Ubuntu/Debian
sudo apt-get install rabbitmq-server
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
# macOS
brew install rabbitmq
brew services start rabbitmq
# 웹 관리 콘솔 활성화 (선택사항)
sudo rabbitmq-plugins enable rabbitmq_management
# http://localhost:15672 (guest/guest)
4. 환경 변수 설정
서버 설정 (server/.env)
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=packet_analyzer
POSTGRES_USER=packet_user
POSTGRES_PASSWORD=your_password
RABBITMQ_HOST=localhost
RABBITMQ_PORT=5672
RABBITMQ_USER=guest
RABBITMQ_PASSWORD=guest
RABBITMQ_QUEUE=packet_queue
# 선택사항: 외부 API 키
NVD_API_KEY=your_nvd_api_key
ABUSEIPDB_API_KEY=your_abuseipdb_api_key
클라이언트 설정 (client/.env)
RABBITMQ_HOST=your_server_ip
RABBITMQ_PORT=5672
RABBITMQ_USER=guest
RABBITMQ_PASSWORD=guest
RABBITMQ_QUEUE=packet_queue
CLIENT_ID=laptop-01
사용법
서버 실행
python -m server.server
클라이언트 실행
python -m client.client
Claude Desktop과 통합
Claude Desktop 설정 파일 (claude_desktop_config.json)에 추가:
{
"mcpServers": {
"packet-analyzer-server": {
"command": "python",
"args": ["-m", "server.server"],
"cwd": "/path/to/packet-analyzer-mcp",
"env": {
"POSTGRES_HOST": "localhost",
"POSTGRES_DB": "packet_analyzer",
"POSTGRES_USER": "packet_user",
"POSTGRES_PASSWORD": "your_password",
"RABBITMQ_HOST": "localhost"
}
},
"packet-analyzer-client": {
"command": "python",
"args": ["-m", "client.client"],
"cwd": "/path/to/packet-analyzer-mcp",
"env": {
"RABBITMQ_HOST": "localhost",
"CLIENT_ID": "my-laptop"
}
}
}
}
사용 예시
클라이언트 사용 예
사용 가능한 네트워크 인터페이스를 보여줘
→ list_interfaces 도구 실행
eth0 인터페이스에서 HTTP 트래픽 100개를 캡처해서 서버로 전송해줘
→ capture_and_send 도구 실행 (interface: eth0, filter: "tcp port 80", packet_count: 100)
/home/user/capture.pcap 파일을 분석을 위해 서버로 전송해줘
→ send_pcap_file 도구 실행
서버 사용 예
최근 1시간 동안의 패킷을 분석해줘
→ analyze_packets 도구 실행
192.168.1.100 IP의 위협 정보를 알려줘
→ query_threats 도구 실행
오늘 패킷 통계를 보여줘 (프로토콜 분포, Top Talkers)
→ get_statistics 도구 실행
SMB 취약점을 검색해줘
→ search_cve 도구 실행 (keyword: "SMB")
포트 스캔 관련 MITRE ATT&CK 기법을 알려줘
→ check_mitre_technique 도구 실행 (keyword: "port scanning")
최근 HIGH 심각도 위협 목록을 보여줘
→ get_recent_threats 도구 실행 (severity: "HIGH")
보안 고려사항
권한 관리
- 패킷 캡처는 관리자 권한이 필요합니다
- 최소 권한 원칙을 따르세요
- 프로덕션 환경에서는 전용 사용자 계정을 사용하세요
데이터 보안
- 캡처된 패킷에는 민감한 정보가 포함될 수 있습니다
- 저장된 데이터에 대한 접근 제어를 구현하세요
- 불필요한 데이터는 정기적으로 삭제하세요
- 데이터베이스 암호화를 고려하세요
네트워크 보안
- RabbitMQ와 PostgreSQL에 대한 접근을 제한하세요
- TLS/SSL을 사용하여 통신을 암호화하세요
- 방화벽 규칙을 적절히 구성하세요
준수 사항
- 조직의 보안 정책을 준수하세요
- 법적 요구사항을 확인하세요 (예: GDPR, HIPAA)
- 패킷 캡처 전에 적절한 승인을 받으세요
기술 스택
| 구성 요소 | 기술 |
|---|---|
| 언어 | Python 3.11+ |
| MCP SDK | mcp |
| 데이터베이스 | PostgreSQL 12+ |
| 메시지 큐 | RabbitMQ 3.8+ |
| 패킷 캡처 | tcpdump, Scapy |
| 외부 API | NVD CVE, MITRE ATT&CK, AbuseIPDB |
| 패키지 관리 | uv |
프로젝트 구조
packet-analyzer-mcp/
├── server/ # 서버 패키지
│ ├── __init__.py
│ ├── server.py # MCP 서버
│ ├── database.py # PostgreSQL 연결
│ ├── message_queue.py # RabbitMQ 컨슈머
│ ├── analyzers.py # 패킷 분석 로직
│ ├── external_apis.py # 외부 API 클라이언트
│ └── README.md # 서버 문서
├── client/ # 클라이언트 패키지
│ ├── __init__.py
│ ├── client.py # MCP 클라이언트
│ ├── packet_capture.py # tcpdump 래퍼
│ ├── message_queue.py # RabbitMQ 프로듀서
│ └── README.md # 클라이언트 문서
├── pyproject.toml # 프로젝트 설정
├── main.py # 기존 엔트리 포인트
└── README.md # 이 파일
문제 해결
일반적인 문제
Permission Denied (tcpdump)
- sudo 권한 확인
- setcap로 권한 부여:
sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
RabbitMQ 연결 실패
- 서비스 상태 확인:
sudo systemctl status rabbitmq-server - 포트 확인:
sudo netstat -tlnp | grep 5672 - 방화벽 규칙 확인
- 서비스 상태 확인:
PostgreSQL 연결 실패
- 서비스 상태 확인:
sudo systemctl status postgresql - 인증 설정 확인:
/etc/postgresql/.../pg_hba.conf - 데이터베이스 및 사용자 확인
- 서비스 상태 확인:
패킷이 캡처되지 않음
- 네트워크 트래픽 존재 확인
- BPF 필터 구문 확인
- 인터페이스 이름 확인:
ip link show
디버깅
# RabbitMQ 큐 상태 확인
sudo rabbitmqctl list_queues
# PostgreSQL 연결 테스트
psql -h localhost -U packet_user -d packet_analyzer
# 패킷 캡처 테스트
sudo tcpdump -i any -c 10
# Python 모듈 테스트
python -c "import mcp, asyncpg, pika, scapy.all"
성능 최적화
데이터베이스
- 인덱스가 적절히 생성되었는지 확인
- 정기적으로 VACUUM 실행
- 오래된 데이터는 아카이브 또는 삭제
RabbitMQ
- 메시지 크기 최적화
- 배치 전송 사용
- 적절한 QoS 설정
패킷 캡처
- BPF 필터로 불필요한 패킷 제외
- 패킷 수 제한
- 페이로드 크기 제한
Установка Packet Analyzer
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/choihyuunmin/packet-analyzer-mcpFAQ
Packet Analyzer MCP бесплатный?
Да, Packet Analyzer MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Packet Analyzer?
Нет, Packet Analyzer работает без API-ключей и переменных окружения.
Packet Analyzer — hosted или self-hosted?
Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.
Как установить Packet Analyzer в Claude Desktop, Claude Code или Cursor?
Открой Packet Analyzer на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Packet Analyzer with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
