Python으로 모듈식 IDS/IPS 도구 구축: 네트워크 보안을 위한 실용 가이드
Source: Dev.to
IDS‑IPS‑Tool이란?
IDS‑IPS‑Tool은 파이썬 기반 보안 프레임워크로, 세 가지 핵심 기능을 하나의 모듈형 패키지에 결합합니다:
- IDS (침입 탐지 시스템): 정규식 패턴을 사용해 로그 파일(예:
/var/log/auth.log)을 분석하고 악의적인 활동을 식별합니다. - IPS (침입 방지 시스템): 시스템 방화벽(
iptables)을 이용해 공격 IP를 자동으로 차단함으로써 조치를 취합니다. - Network IDS: 실시간 네트워크 트래픽을 감시하여 의심스러운 패킷 패턴(예: TCP SYN 스캔)을 탐지하는 스니퍼입니다.
아키텍처 및 기술 스택
이 도구는 모듈형이며 구성 기반입니다—새 규칙은 config.json 파일을 업데이트하는 방식으로 추가되며, 코드에 하드코딩하지 않습니다.
- Python 3.x – 핵심 로직.
- Scapy – 깊이 있는 패킷 검사 및 네트워크 스니핑.
- Watchdog – 파일 시스템 이벤트를 통한 실시간 로그 모니터링.
- Subprocess – 자동 차단을 위해 Linux
iptables와 인터페이스합니다.
프로젝트 구조
IDS-IPS-Tool/
├── src/ # 핵심 모듈 (Detection, Prevention, Logging)
├── config.json # 공격 시그니처 (Regex & Patterns)
├── ids_main.py # 로그 분석 엔트리포인트
├── netids_main.py # 네트워크 스니퍼 엔트리포인트
└── ips_main.py # 자동 차단 엔트리포인트
주요 기능: 정규식 기반 탐지
시스템의 핵심은 복잡한 로그를 파싱하는 능력에 있습니다. 아래는 설정 파일에 포함된 탐지 패턴 예시입니다:
{
"patterns": [
{
"name": "Failed SSH Login",
"regex": "Failed password.*from ([\\d.]+)",
"severity": "high"
}
]
}
캡처 그룹을 통해 공격자의 IP 주소를 동적으로 추출하고, 이를 IPS 모듈에 전달해 즉시 차단합니다.
시작하기
저장소 복제
git clone https://github.com/Bangkah/IDS-IPS-Tool.git
cd IDS-IPS-Tool
의존성 설치
pip install -r requirements.txt
네트워크 스니퍼 실행 (루트 권한 필요)
sudo python netids_main.py config.json --iface eth0
배운 점
- 성능: 실시간 패킷 스니핑은 패킷 손실을 방지하기 위해 효율적인 데이터 처리가 필요합니다.
- 보안: 쉘 명령에 전달하기 전에 IP 입력을 정제하면 명령어 삽입 공격을 예방할 수 있습니다.
- 자동화: “공격을 감지”하는 단계와 “공격을 차단”하는 단계를 프로그램matically 연결하는 것이 효과적인 방어에 필수적입니다.
로드맵 및 기여
이 프로젝트는 진행 중입니다. 향후 목표는 다음과 같습니다:
- Streamlit을 이용한 웹 대시보드 추가.
- Telegram/Discord 알림 연동.
iptables와 함께nftables지원.
사이버 보안이나 파이썬에 관심이 있다면 코드를 살펴보고, 이슈를 열거나 PR을 제출해 주세요.
GitHub Repository: Bangkah/IDS-IPS-Tool