네트워크 보안 - 사내망 보안 구조 · Snort IDS 완전 정리
Phase 2 | Network Security
사내망 보안 구조 · Snort IDS 완전 정리
DMZ · 망 분리 · Defense in Depth · Snort 룰 작성 · 공격 탐지 패턴까지
01
사내망 보안 구조 — DMZ & 이중 방화벽
보안 설계의 핵심은 내부 자산을 외부에서 직접 접근 불가하게 만드는 것이다. 외부 서비스는 DMZ에 격리하고, 핵심 자산은 내부망 깊숙이 배치한다.
Internet
신뢰 불가 영역. 모든 외부 트래픽 출발점
공격자
외부 사용자
Firewall #1
외부 → DMZ 접근 제어. 허용 포트만 통과 (80, 443 등)
DMZ
외부 공개 서비스 격리 영역. 침해 시 내부망 영향 최소화
Web Server
Mail Server
DNS Server
Firewall #2
DMZ → 내부망 접근 제어. 최소 권한 원칙 적용
내부망
핵심 자산 영역. 외부에서 직접 접근 절대 불가
DB Server
ERP
내부 시스템
설계 원칙 | 단일 방화벽으로 DMZ와 내부망을 동시에 보호하는 구조는 방화벽 침해 시 내부망 전체가 노출된다. 이중 방화벽 구조를 사용해 DMZ 침해가 내부망으로 확산되는 것을 차단해야 한다.
망 분리 전략 비교
| 구분 | 물리적 분리 | 논리적 분리 (VLAN) |
|---|---|---|
| 분리 방식 | 네트워크 장비 자체를 별도 구성 | 하나의 물리망에서 VLAN으로 구분 |
| 보안성 | 높음 — 물리적 단절 | 상대적으로 낮음 — VLAN Hopping 위험 |
| 비용 | 높음 — 이중 인프라 필요 | 낮음 — 기존 장비 활용 |
| 적용 환경 | 금융, 국방, 공공기관 | 일반 기업, 학교, 중소기업 |
| 관리 복잡도 | 높음 | 중간 |
02
Defense in Depth — 보안 장비 역할 분리
단일 보안 장비에 의존하지 않고 다층 방어 구조를 구성해 하나가 뚫려도 다음 계층이 방어하는 전략이다.
| 장비 | 역할 | 동작 방식 | 한계 |
|---|---|---|---|
| Firewall | 접근 제어 | IP/Port 기반 허용/차단 정책 (ACL) | 알려진 패턴만 차단. 내부 위협 탐지 불가 |
| IDS | 탐지 (탐지만) | 패킷 분석 → 이상 탐지 → 알람 발생 | 차단 불가. 탐지 후 수동 대응 필요 |
| IPS | 탐지 + 차단 | 인라인 배치 → 이상 패킷 즉시 차단 | 오탐 시 정상 트래픽 차단 위험 |
| Proxy | 요청 중계 | 클라이언트 대신 요청 → 직접 연결 차단 | 암호화 트래픽 검사 어려움 |
| VPN | 암호화 통신 | 터널링으로 외부 접근 암호화 | 인증 탈취 시 내부망 노출 |
IDS vs IPS 핵심 차이 | IDS는 네트워크에 병렬(Out-of-band)로 연결해 트래픽을 복사 수신하므로 성능 영향 없음. IPS는 인라인(In-line)으로 실제 트래픽 경로에 배치해 차단 가능하지만 지연 발생. 실무에서는 IDS로 먼저 튜닝 후 IPS 전환 권장.
03
Snort 아키텍처 & 설치 환경
STEP 1
Packet Decoder
NIC에서 패킷 수신. 계층별 헤더 파싱 (Ethernet → IP → TCP/UDP)
→
STEP 2
Preprocessor
단편화 재조립, 스트림 재구성, 정규화. 우회 공격 방지
→
STEP 3
Detection Engine
룰과 패킷 비교. 매칭 시 이벤트 생성
→
STEP 4
Logging / Alert
이벤트 기록 및 알람. fast / full / syslog 형식
설치 환경 설정
/etc/default/grub — NIC 이름 고정
# Snort는 인터페이스 이름을 eth0으로 고정해서 사용
# 자동 네이밍(enp3s0 등) 방지를 위해 커널 파라미터 추가
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
# 설정 적용
update-grub
reboot
/etc/snort/snort.conf — 핵심 설정
# 보호 대상 네트워크 정의
var HOME_NET 192.168.10.0/24
var EXTERNAL_NET !$HOME_NET
# 룰 파일 경로 지정
var RULE_PATH /etc/snort/rules
# 사용자 정의 룰 포함
include $RULE_PATH/local.rules
# 로그 저장 위치
output alert_fast: /var/log/snort/snort.alert.fast
실행 및 검증 명령어
Snort 운영 명령어
# 1. 설정 파일 문법 검증 (실행 전 필수)
snort -T -c /etc/snort/snort.conf
# 2. IDS 모드 실행
snort -i eth0 -c /etc/snort/snort.conf -A fast -l /var/log/snort
# 3. 실시간 알람 모니터링
tail -f /var/log/snort/snort.alert.fast
# 4. pcap 파일 오프라인 분석
snort -r capture.pcap -c /etc/snort/snort.conf
04
Snort Rule 구조 완전 분석
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 (msg:"HTTP Attack Detected"; content:"/etc/passwd"; nocase; sid:1000001; rev:1;)
ACTION
alert
alert / log / drop / reject / pass
PROTOCOL
tcp
tcp / udp / icmp / ip
SRC IP/PORT
$EXTERNAL_NET any
출발지. any = 모든 IP/포트
DIRECTION
->
-> 단방향 / <> 양방향
DST IP/PORT
$HOME_NET 80
목적지 IP와 포트
SID
1000001
1,000,000 이상 = 사용자 정의
주요 Rule 옵션
| 옵션 | 역할 | 예시 |
|---|---|---|
| content | Payload 내 문자열 매칭 | content:"/etc/passwd"; |
| nocase | 대소문자 무시 매칭 | content:"GET"; nocase; |
| offset / depth | 검색 시작/범위 제한 (bytes) | offset:4; depth:20; |
| flags | TCP 플래그 조건 | flags:S; (SYN만) |
| flow | 세션 방향 지정 | flow:to_server,established; |
| threshold | 알람 횟수/빈도 제한 | threshold:type both, track by_src, count 5, seconds 10; |
| msg | 알람 메시지 텍스트 | msg:"SYN Flood Detected"; |
| rev | 룰 개정 버전 | rev:1; |
threshold 유형 |
type threshold — N회 이후부터 알람. type limit — 시간당 N회만 알람. type both — N회 도달 후 알람, 이후 시간당 1회만 발생. 실무에서는 both로 알람 폭증 방지.
05
공격별 Snort Rule 작성 예시
XMAS Scan
TCP XMAS Scan 탐지
- TCP Flags: FIN + PSH + URG 동시 설정
- 정상 트래픽에서는 발생 불가 패턴
- OS별 응답 차이로 포트 상태 추론
Brute Force
Telnet 로그인 실패 탐지
- 반복 로그인 실패 → 행위 기반 탐지
- 단일 이벤트가 아닌 빈도 기반
- threshold로 N회/M초 조건 설정
SYN Flood
SYN Flood 탐지
- ACK 없는 SYN 패킷 대량 발생
- Backlog Queue 고갈 패턴
- 짧은 시간 내 임계값 초과 시 알람
local.rules — 공격 탐지 룰 모음
# 1. XMAS Scan 탐지 (FIN+PSH+URG)
alert tcp any any -> $HOME_NET any (msg:"XMAS Scan Detected"; flags:UPF; sid:1000001; rev:1;)
# 2. NULL Scan 탐지 (플래그 없음)
alert tcp any any -> $HOME_NET any (msg:"NULL Scan Detected"; flags:0; sid:1000002; rev:1;)
# 3. SYN Flood 탐지
alert tcp any any -> $HOME_NET any (msg:"SYN Flood Detected"; flags:S;
threshold: type both, track by_src, count 5, seconds 10;
sid:1000003; rev:1;)
# 4. Telnet 브루트포스 탐지
alert tcp any any -> $HOME_NET 23 (msg:"Telnet Brute Force";
content:"login incorrect"; nocase;
threshold: type both, track by_src, count 3, seconds 20;
sid:1000004; rev:1;)
# 5. FIN Scan 탐지
alert tcp any any -> $HOME_NET any (msg:"FIN Scan Detected"; flags:F; sid:1000005; rev:1;)
오탐(False Positive) 방지 | 기본 제공 룰을 그대로 사용하면 오탐이 매우 많다. HOME_NET을 정확히 정의하고, threshold로 빈도 조건을 추가하며, flow 옵션으로 방향을 제한하는 3단계 튜닝이 필수다.
06
IDS 운영 사이클 & 핵심 인사이트
보안 운영 기본 사이클
공격 수행Kali 등
→
패킷 생성네트워크 전송
→
Snort 탐지룰 매칭
→
로그 기록alert.fast
→
분석 & 대응SIEM 연동
→
룰 튜닝오탐 감소
IDS 운영 실무 문제 & 대응
| 문제 | 원인 | 대응 전략 |
|---|---|---|
| 성능 저하 | 수천 개 룰 동시 검사 | 불필요한 룰 비활성화, 우선순위 룰만 운영 |
| 로그 폭증 | 임계값 없는 룰 | threshold 적용, 중요 이벤트 필터링 |
| False Positive | 너무 광범위한 조건 | 다중 조건 결합, 특정 포트/IP 제한 |
| False Negative | 우회 기법 사용 | Preprocessor 활성화, 규칙 정기 업데이트 |
| 분석 한계 | 로그 수동 분석 불가 | SIEM 연동, 자동화 분석 파이프라인 구축 |
네트워크 보안 핵심 구조
- 예방 (Prevention) : 망 분리, DMZ, 방화벽 — 공격 자체가 내부에 도달하지 못하게
- 탐지 (Detection) : IDS(Snort), SIEM — 이미 들어온 공격을 식별
- 차단 (Response) : IPS, WAF, 자동화 대응 — 탐지된 공격 즉시 차단
- 룰 기반 한계 : 알려진 패턴만 탐지 가능 → 지속적 튜닝 + AI/ML 기반 이상 탐지 병행 필요
- 실무 핵심 : 단순 탐지보다 로그 분석 + 대응 체계 + SIEM 연동이 보안 운영의 중심
'보안 공부' 카테고리의 다른 글
| 클라우드 보안 - EBS · VPC · 네트워크 완전 정리 (0) | 2026.06.01 |
|---|---|
| 클라우드 보안 - AWS 기초 · EC2 완전 정리 (0) | 2026.06.01 |
| 네트워크 보안 - Spoofing · Sniffing · DoS/DDoS · 네트워크 구조 완전 정리 (0) | 2026.05.29 |
| 네트워크 보안 - Port Scan · Nmap 완전 정리 (0) | 2026.05.29 |
| 네트워크 보안 - IP 단편화 · 패킷 스니핑 · Wireshark 완전 정리 (0) | 2026.05.29 |