Python으로 모듈식 IDS/IPS 도구 구축: 네트워크 보안을 위한 실용 가이드

발행: (2025년 12월 20일 오전 07:33 GMT+9)
4 min read
원문: Dev.to

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

Back to Blog

관련 글

더 보기 »

창고 활용에 대한 종합 가이드

소개 창고는 근본적으로 3‑D 박스일 뿐입니다. Utilisation은 실제로 그 박스를 얼마나 사용하고 있는지를 측정하는 지표입니다. While logistics c...