SECURITY LABCompleted

VLAN 환경 시나리오 기반 공격/방어 실습

VMware ESXi + PfSense 기반 VLAN 분리 환경에서 3가지 공격 시나리오를 직접 수행하고 방어 설정까지 적용한 보안 실습 과제.

📅 December 17, 2025
PfSenseKali LinuxnmapGobusterhping3HydraSnort IPSVMware ESXi

프로젝트 개요

VMware ESXi 위에 VLAN으로 분리된 네트워크 환경을 직접 구성하고, 3가지 공격 시나리오를 Kali Linux에서 직접 수행한 뒤 PfSense 방화벽 설정으로 각각 방어까지 적용한 실습 프로젝트입니다.

$

실습 환경

VMware ESXiKali LinuxPfSensenmapGobusterhping3HydraSnorttcpdump

네트워크 구성

내부 네트워크 토폴로지

VMware ESXi(192.168.64.128) 위에 PfSense UTM(192.168.1.1)을 중심으로 4개의 VLAN을 구성했습니다.

VLAN역할대역
VLAN10WEB 서버 (Apache2)10.10.1.0/24
VLAN20OFFICE10.20.1.0/24
VLAN30INTRANET10.30.1.0/24
VLAN40DB (MySQL)10.40.1.0/24

공격자(Kali, 192.168.64.132)는 VMware 네트워크 상에서 PfSense WAN(192.168.64.130)으로 접근하며, PfSense의 NAT 포트포워딩(WAN:80 → VLAN10 서버 10.10.1.2:80)을 통해 내부 서버에 도달하는 구조입니다. VLAN 간 통신은 최소 권한 원칙에 따라 PfSense에서 제어했습니다.


시나리오 1: 디렉터리 인덱싱

MITRE ATT&CK: T1046 (Network Service Discovery), T1110 (Brute Force), T1083 (File and Directory Discovery)

공격 수행

  1. nmap -sn으로 네트워크 호스트 탐색 → nmap -p 80,443으로 웹 포트 확인
  2. Apache 서버(192.168.64.130) 발견 후 Gobuster로 디렉터리 brute force 수행
  3. /admin 디렉터리 존재 확인 → 직접 접근 시 index.html 없어 디렉터리 목록 노출
  4. secret_Info.txt에서 전체 VLAN 대역 계정 정보 탈취

대응 방안

방법내용한계
index.html 생성각 디렉터리에 빈 index.html 배치수많은 디렉터리 일일이 관리 불가
Apache conf 수정Options 지시문에서 Indexes 제거근본적 해결 — index.html 없어도 목록 노출 차단

시나리오 2: TCP Spoofing을 활용한 DoS 공격

MITRE ATT&CK: T1499.001 (Endpoint DoS), T1599 (IP Spoofing), T1498 (Network Traffic Flooding)

공격 수행

  • hping3로 출발지 IP를 무작위로 위조한 대량의 SYN 패킷 전송
  • 일반 TCP Flooding은 출발지 IP가 고정되어 탐지·역추적이 쉬운 반면, IP Spoofing 적용 시 역추적 회피 가능
  • PfSense State Table의 PF states가 한계에 도달하며 가용성 침해 성공

대응 방안

방법 1 — SYN Cookies + State Table 보호

  • PfSense net.inet.tcp.syncookies = 1 활성화
  • TCP Opening/Closing 타임아웃을 5초로 설정해 반쯤 열린 연결(SYN_RECV) 빠르게 정리
  • 결과: State Table 안전성 향상, 단 공격 트래픽 자체는 차단하지 못함

방법 2 — SYN Proxy + Snort IPS (근본적 해결)

  • SYN Proxy: ACK 응답을 완료한 정상 세션만 내부 서버로 전달
  • Snort IPS (Inline): 1초에 50개 이상 SYN 패킷을 공격으로 판단하여 자동 차단
  • 결과: 1,057,285개 패킷 공격 시도에도 피해 서버 tcpdump에 패킷 미도달 확인

시나리오 3: SSH Dictionary Attack

MITRE ATT&CK: T1078 (Valid Accounts), T1110.002 (Brute Force: Password Spraying), T1021.004 (Remote Services: SSH)

공격 수행

  1. nmap -sV로 SSH 서비스 확인
  2. 사전 정찰(실습 문서, SSH 인증 실패 응답 차이)로 계정 ID(osid2020271321) 확보
  3. 사전 파일(100번째 항목: changeme1!) 준비 후 Hydra로 Dictionary Attack 수행
  4. 비밀번호 크랙 성공 → SSH 무단 접근 및 시스템 조작 가능 상태 확인

대응 방안 — PfSense Rate Limiting

설정 항목목적
Max. connections3동시 SSH 연결 수 제한 (Hydra 병렬 연결 차단)
Max. src. states5State 폭증 방지
Max. src. conn. Rate2 / 10초10초 내 2개 초과 연결 시 차단
State timeout30초공격 중 연결 빠르게 정리

결과: Hydra로 동일한 공격 재시도 시 PfSense overload table에 자동 등록되어 커널 레벨에서 전면 차단 확인


배운 점

  • 공격과 방어를 동시에 경험: 도구로 공격을 직접 수행하고, 같은 환경에서 방화벽 설정을 바꿔 방어가 적용되는 것을 눈으로 확인하면서 각 보안 설정이 왜 필요한지 체감했습니다.
  • PfSense 방화벽 운영: SYN Cookies, SYN Proxy, Snort IPS, Rate Limiting 등 실제 방화벽 기능을 직접 설정하고 결과를 검증했습니다.
  • 대응의 계층적 접근: 단일 방어책으로는 한계가 있어 여러 계층을 조합해야 효과적임을 SYN Flood 시나리오에서 직접 확인했습니다 (SYN Cookies 단독으로는 트래픽 차단 불가 → SYN Proxy + IPS 조합 필요).
  • MITRE ATT&CK 활용: 각 공격을 프레임워크 기반으로 분류하면서 공격 기술을 체계적으로 이해하는 방법을 익혔습니다.