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

VMware ESXi(192.168.64.128) 위에 PfSense UTM(192.168.1.1)을 중심으로 4개의 VLAN을 구성했습니다.
| VLAN | 역할 | 대역 |
|---|---|---|
| VLAN10 | WEB 서버 (Apache2) | 10.10.1.0/24 |
| VLAN20 | OFFICE | 10.20.1.0/24 |
| VLAN30 | INTRANET | 10.30.1.0/24 |
| VLAN40 | DB (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)
공격 수행
nmap -sn으로 네트워크 호스트 탐색 →nmap -p 80,443으로 웹 포트 확인- Apache 서버(192.168.64.130) 발견 후 Gobuster로 디렉터리 brute force 수행
/admin디렉터리 존재 확인 → 직접 접근 시 index.html 없어 디렉터리 목록 노출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)
공격 수행
nmap -sV로 SSH 서비스 확인- 사전 정찰(실습 문서, SSH 인증 실패 응답 차이)로 계정 ID(
osid2020271321) 확보 - 사전 파일(100번째 항목:
changeme1!) 준비 후 Hydra로 Dictionary Attack 수행 - 비밀번호 크랙 성공 → SSH 무단 접근 및 시스템 조작 가능 상태 확인
대응 방안 — PfSense Rate Limiting
| 설정 항목 | 값 | 목적 |
|---|---|---|
| Max. connections | 3 | 동시 SSH 연결 수 제한 (Hydra 병렬 연결 차단) |
| Max. src. states | 5 | State 폭증 방지 |
| Max. src. conn. Rate | 2 / 10초 | 10초 내 2개 초과 연결 시 차단 |
| State timeout | 30초 | 공격 중 연결 빠르게 정리 |
결과: Hydra로 동일한 공격 재시도 시 PfSense overload table에 자동 등록되어 커널 레벨에서 전면 차단 확인
배운 점
- 공격과 방어를 동시에 경험: 도구로 공격을 직접 수행하고, 같은 환경에서 방화벽 설정을 바꿔 방어가 적용되는 것을 눈으로 확인하면서 각 보안 설정이 왜 필요한지 체감했습니다.
- PfSense 방화벽 운영: SYN Cookies, SYN Proxy, Snort IPS, Rate Limiting 등 실제 방화벽 기능을 직접 설정하고 결과를 검증했습니다.
- 대응의 계층적 접근: 단일 방어책으로는 한계가 있어 여러 계층을 조합해야 효과적임을 SYN Flood 시나리오에서 직접 확인했습니다 (SYN Cookies 단독으로는 트래픽 차단 불가 → SYN Proxy + IPS 조합 필요).
- MITRE ATT&CK 활용: 각 공격을 프레임워크 기반으로 분류하면서 공격 기술을 체계적으로 이해하는 방법을 익혔습니다.