Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
network-security-snort — Kali에서의 Snort 3 IDS → IPS 실습. 사용자 정의 탐지 규칙 + iptables 적용: ICMP 정찰, Nmap SYN 스캔, Hydra FTP 무차별 대입 공격, vsftpd 2.3.4 백도어(CVE-2011-2523) 대응. | Kitploit
도구/GitHubGitHub/taisa456/network-security-snort
Defensive ToolsVulnerability AnalysisExploitationIDS/IPS EvasionNetwork SecurityPenetration TestingIntrusion DetectionLearning & EducationLabs & Practice
GitHubtaisa456/network-security-snort

network-security-snort

Kali에서의 Snort 3 IDS → IPS 실습. 사용자 정의 탐지 규칙 + iptables 적용: ICMP 정찰, Nmap SYN 스캔, Hydra FTP 무차별 대입 공격, vsftpd 2.3.4 백도어(CVE-2011-2523) 대응.

164개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

Snort IDS/IPS 배포 실습

Snort 3을 침입 탐지 시스템(수동 모니터링)과 침입 방지 시스템(iptables를 통한 능동 차단)으로 모두 사용하는 전체 사이클 배포로, Kali Linux상의 세 대의 가상 머신 네트워크에서 네 가지 공격 벡터에 대해 검증했습니다.

이 실습은 탐지와 방지의 운영적 차이를 증명합니다. 동일한 네 가지 벡터 공격 체인을 두 번 실행합니다. 처음에는 로그만 기록하고 차단할 수 없는 IDS를 대상으로, 그 다음에는 선택적으로 공격을 차단하면서도 정상 트래픽은 유지하는 IDS + iptables IPS 계층을 대상으로 합니다.


목차

  • 실습 환경
  • 네트워크 토폴로지
  • 방법론
  • Snort 설정
  • 사용자 정의 탐지 규칙
  • 1단계 — IDS 모드
  • 2단계 — IPS 모드
  • IDS 대 IPS — 나란히 결과 비교
  • 논의
  • 아키텍처 참고
  • 저장소 구조
  • 실습 재현하기
  • 윤리적 고지
  • 라이선스

실습 환경

구성 요소세부 사항
분석기 / 라우터Kali Linux — 어댑터 3개: eth0 WAN (192.168.10.143, NAT), eth1 LAN1 (10.10.10.1, 호스트 전용), eth2 LAN2 (192.168.50.1, 호스트 전용)
공격자Kali Linux — VMnet9의 eth0 (10.10.10.10) — 기본 게이트웨이 10.10.10.1
대상Metasploitable 2 — VMnet10의 eth0 (192.168.50.10) — 기본 게이트웨이 192.168.50.1
Snort 버전Snort++ 3.12.1.0-0kali1 (분석기에 설치)
공격 도구Nmap 7.99, Hydra v9.6, Metasploit Framework (msfconsole)
가상화VMware — VMnet9 = 10.10.10.0/24, VMnet10 = 192.168.50.0/24 (둘 다 호스트 전용)

네트워크 토폴로지

공격자와 Metasploitable 간의 모든 트래픽은 분석기를 통해 강제로 전달되어, 모니터링과 시행 모두에 자연스러운 병목 지점이 됩니다.

                           ┌─────────────────────────┐
                           │   분석기 / 라우터       │
                           │   Kali + Snort 3        │
                           │                         │
   공격자 Kali ──VMnet9────┤ eth1: 10.10.10.1        │
   10.10.10.10             │                         │
                           │ eth0: 192.168.10.143 ───┼──> WAN (NAT)
                           │                         │
   Metasploitable 2 ─VMnet10┤ eth2: 192.168.50.1     │
   192.168.50.10           │                         │
                           └─────────────────────────┘

그림이 준비되면 이 ASCII 스케치를 screenshots/01-network-topology.png로 교체하세요: 토폴로지


방법론

실습은 동일한 네 가지 공격 벡터 체인을 사용하여 두 단계로 실행됩니다:

  1. ICMP 정찰 — 호스트 발견을 위한 ping
  2. Nmap SYN 스캔 — 포트 열거를 위한 nmap -sS (1000개 포트)
  3. Hydra FTP 무차별 대입 — vsftpd 서비스에 대한 자격 증명 공격
  4. vsftpd 2.3.4 백도어 — CVE-2011-2523에 대한 Metasploit 익스플로잇

1단계 (IDS) 는 분석기에서 5개의 사용자 정의 규칙을 사용하여 Snort를 수동으로 실행합니다. 실시간으로 경보를 관찰하고, 공격이 계속 진행됨을 확인합니다.

2단계 (IPS) 는 Snort를 정밀 드롭 규칙을 사용하는 iptables 시행 계층과 결합합니다. ICMP 핑과 정상 FTP 로그인은 정상 작동하는 동안 공격이 차단됨을 확인합니다.

배포 전 설정

  1. 분석기에 VMware에서 3개의 NIC(호스트 전용 2개, NAT/브리지 1개)를 구성합니다.
  2. IP 전달을 활성화하고 MASQUERADE + FORWARD 규칙을 추가하여 분석기가 서브넷 간 및 WAN으로 라우팅할 수 있도록 합니다. 자세한 내용은 scripts/router_config.sh를 참조하세요.
  3. Snort를 설치하기 전에 scripts/ping_check.sh를 사용하여 각 VM 간 종단간 연결을 확인합니다.

Snort 설정

Snort는 Kali 패키지 관리자를 통해 설치되며(sudo apt install snort -y) /etc/snort/snort.conf에서 구성됩니다:

HOME_NET = "10.10.10.0/24,192.168.50.0/24"
EXTERNAL_NET = "any"

ips = {
    enable_builtin_rules = true,
    include = "/etc/snort/rules/local.rules",
    variables = default_variables
}

alert_fast = { file = true, packet = false }

HOME_NET은 두 내부 서브넷을 모두 포함하므로 Snort는 분석기의 모든 서브넷 간 트래픽을 검사할 가치가 있는 것으로 간주합니다. alert_fast는 간결한 한 줄 경보를 생성합니다(패킷당 로깅은 과도한 양을 생성함).

구성 검증:

sudo snort -T -c /etc/snort/snort.conf
# 결과: 652개 규칙 로드됨 (사용자 정의 5개 텍스트 + 내장 647개), 경고 0개

사용자 정의 탐지 규칙

/etc/snort/rules/local.rules에 있는 5개 규칙(전체 파일은 scripts/local.rules 참조):

SID이름트리거
1000001ICMP 핑 탐지됨양방향의 모든 ICMP 트래픽 — 정찰 핑을 포착함
1000002FTP 연결 시도포트 21에 대한 모든 TCP 연결 — 정상 및 무차별 대입 트래픽을 포착함
1000003가능한 Nmap SYN 스캔SYN 플래그만 설정된 TCP 패킷 (flags:S) — 반개방 스캔의 시그니처
1000004VSFTPD 2.3.4 백도어 시도FTP 포트 21에서 content:":)" — CVE-2011-2523 트리거 문자열
1000005가능한 Metasploit 셸코드`content:"

1단계 — IDS 모드

Snort는 두 내부 인터페이스에서 수동 모드로 실행됩니다:

sudo snort -c /etc/snort/snort.conf -i eth1 -i eth2 \
    -A alert_fast -l /var/log/snort/

# 두 번째 터미널에서 경보를 실시간 확인:
sudo tail -f /var/log/snort/alert_fast.txt

시작 출력은 pcap DAQ configured to passive를 확인합니다. Snort는 모든 패킷을 보지만 그 중 어느 것도 드롭하거나 수정할 수 없습니다.

IDS 결과

공격자에서 scripts/attack_simulator.sh 실행 후:

공격탐지결과
ICMP 정찰✅ SID 1000001 — 양방향 경보핑 완료
Nmap SYN 스캔✅ SID 1000003 — 1초 미만에 수천 개의 경보23개의 열린 포트가 열거됨
Hydra FTP 무차별 대입✅ SID 1000002 — 반복적인 FTP 연결 경보msfadmin:msfadmin 자격 증명이 해독됨
vsftpd 2.3.4 백도어✅ SID 1000004 — :) 내용 일치 발생루트 Meterpreter 셸 획득

IDS는 모든 것을 탐지했지만 아무것도 막지 못했습니다. 이것이 1단계의 핵심 교훈입니다: 시행 없는 작동하는 IDS는 경보 시스템일 뿐, 잠금 장치가 아닙니다. 인간 분석가가 경보를 읽을 때쯤이면 공격자는 이미 루트 권한을 획득한 상태입니다.

부차적 관찰: Snort의 내장 규칙(116:408, 116:414)이 DHCP 브로드캐스트 트래픽에서 발동됩니다. 악의적이지는 않지만, 프로덕션 환경에서는 경보 로그를 실행 가능하게 유지하기 위해 억제 규칙이 필요합니다.


2단계 — IPS 모드

IPS 계층은 scripts/ips_setup.sh로 배포되며, 다음을 수행합니다:

  1. 기존 iptables 규칙을 플러시합니다.
  2. IP 전달을 다시 활성화하고 기본 라우팅을 재적용합니다.
  3. 특정 공격 시그니처를 대상으로 하는 4개의 정밀 드롭 규칙을 적용합니다.
  4. 지속적인 로깅을 위해 Snort를 데몬 모드(-D)로 실행합니다.

iptables 규칙

규칙기능
ACCEPT icmp모든 ICMP를 명시적으로 허용 — 연결 확인을 유지합니다
DROP tcp dpt:21 STRING ":)"포트 21에서 vsftpd 2.3.4 백도어 트리거를 포함하는 패킷을 드롭합니다
ACCEPT tcp --syn -m limit --limit 10/s --limit-burst 20속도 제한 내에서 정상 TCP 핸드셰이크를 허용합니다
DROP tcp --syn (제한 초과 후)10/초를 초과하는 SYN 플러드를 드롭합니다 — Nmap SYN 스캔을 무력화합니다
DROP tcp dpt:21 -m connlimit --connlimit-above 5 --connlimit-mask 32소스당 5개 이상의 동시 FTP 연결을 차단합니다 — Hydra의 병렬 처리를 무력화합니다
ACCEPT eth1→eth0, ACCEPT eth2→eth0정상적인 출력 라우팅
ACCEPT -m conntrack --ctstate RELATED,ESTABLISHED상태 기반 — 설정된 세션을 유지합니다

IPS 결과

공격자에서 동일한 공격 스크립트를 재실행:

공격2단계 결과
ICMP 정찰✅ 허용됨 (의도적)
Nmap SYN 스캔❌ 차단됨 — 1000 filtered tcp ports (무응답), 스캔에 21.71초 소요 (1초 미만 대신)
Hydra FTP 무차별 대입❌ 차단됨 — too many connection errors로 인해 모든 하위 프로세스가 비활성화됨 — 유효한 비밀번호 0개 발견
vsftpd 백도어❌ 차단됨 — Rex::ConnectionTimeout — 익스플로잇이 완료되었지만 세션이 생성되지 않음

정상 트래픽 유지

두 가지 수동 확인으로 선택적 시행이 확인됨:

  • ping -c 4 192.168.50.10 → 4개 패킷 전송, 4개 수신, 0% 손실
  • msfadmin:msfadmin으로 ftp 192.168.50.10 → 220 (vsFTPd 2.3.4) … 230 Login successful

실행 중 iptables 패킷 카운터의 정량적 증거: 2051개 패킷 허용, 12개 패킷이 FTP connlimit 규칙에 의해 드롭됨, 808개 ICMP 패킷 허용됨 — 숫자로 보는 선택적 시행.

지속적인 Snort 로깅

IPS 모드에서도 Snort는 iptables가 후속 패킷을 드롭하기 전에 수동 검사 지점에 도달한 패킷에 대해 SID 1000002 / 1000003 경보를 계속 발동했습니다. 즉, iptables는 시행을 제공하고 Snort는 감사 로깅을 제공하며 함께 작동합니다.


IDS 대 IPS — 나란히 결과 비교

공격 / 트래픽1단계 (IDS만)2단계 (IDS + iptables IPS)
ICMP 핑탐지됨 ✅허용됨 ✅ (의도적)
Nmap SYN 스캔탐지됨 — 23개 열린 포트 발견차단됨 — 1000개 필터링됨
Hydra FTP 무차별 대입탐지됨 — msfadmin:msfadmin 해독됨차단됨 — 비밀번호 0개 발견
vsftpd 2.3.4 익스플로잇탐지됨 — 루트 Meterpreter 셸차단됨 — 연결 시간 초과
정상 FTP 로그인해당 없음유지됨 (230 Login successful)

논의

IDS 모드에서 모든 시뮬레이션 공격이 탐지되었나요?

네 — SID 1000001–1000004 각각이 공격 시뮬레이션 중에 올바르게 발동되었습니다:

  • ICMP 핑 (1000001) — 모든 에코/응답에 대한 양방향 경보.
  • Nmap SYN 스캔 (1000003) — 수 밀리초 내에 경보 폭주, 특징적인 소스 포트 무작위화.
  • FTP 무차별 대입 (1000002) — 정확한 타임스탬프와 함께 Hydra의 병렬 연결 시도에 대한 깨끗한 감사 추적.
  • vsftpd 백도어 (1000004) — :) 내용 일치가 정확한 익스플로잇 바이트 시퀀스를 포착했습니다.

하지만 탐지 ≠ 예방입니다. vsftpd 익스플로잇은 모든 경보가 발동되는 동안 루트 Meterpreter 셸을 열었습니다. IDS를 실시간으로 모니터링하는 SOC 분석가는 침해를 보았을 것입니다. 그러나 공격자가 몇 초 만에 루트가 된 상황에서 경보만으로는 충분하지 않습니다. 이것이 IPS가 존재하는 운영적 핵심입니다.

IPS가 정상 트래픽을 방해하지 않고 공격을 차단하는 데 얼마나 효과적이었나요?

구현은 정상 트래픽에 관찰 가능한 영향 없이 완전한 공격 완화를 달성했습니다. 효과성은 정밀 규칙 설계에서 비롯됩니다. 각 iptables 규칙은 광범위한 프로토콜이 아닌 행동 시그니처를 대상으로 합니다:

도구 다운로드