📚 네트워크 · 패킷 분석 › 06. 방화벽 · IDS 기초 — 265편
이전 글: 264. Outbound Policy · 다음 글: 266. Deny Policy
Allow Policy(허용 정책) 는 조건에 맞는 트래픽을 통과시키는 규칙입니다. Default Deny(267. Default Deny) 환경에서는 허용 규칙의 목록이 곧 "조직이 인정한 통신의 전체 목록" 이 됩니다. 동작(Action) 값의 장비별 표기는 04 영역 184. Allow와 Deny에서 다뤘습니다.
허용 규칙은 한 번 만들면 잘 지워지지 않고, 지나치게 넓게 만들어도 당장 장애가 나지 않습니다. 그래서 보안 점검에서 문제가 가장 많이 발견되는 곳이 허용 규칙입니다.
| 품질 기준 | 좋은 허용 규칙 | 나쁜 허용 규칙 |
|---|---|---|
| 출발지 | 필요한 대역·호스트 | any |
| 목적지 | 특정 서버·그룹 | any 또는 대역 전체 |
| 서비스 | 특정 포트 | any 또는 넓은 포트 범위 |
| 설명 | 요청 번호·목적·담당자 | 없음 또는 "임시" |
| 기한 | 만료일 또는 검토일 | 없음 |
| 로그 | 목적에 맞게 설정 | 꺼져 있음 |
허용은 "통과"로 끝나지 않고, 장비에 따라 추가 검사로 이어지는 출발점이 됩니다.
새 연결 → 정책 비교 → Allow 규칙 일치
↓
[세션 생성] → 이후 패킷은 세션 테이블로 통과
↓
[허용 규칙에 연결된 보안 프로필이 있는가?]
├─ 예 → IPS·안티바이러스·URL 필터 등 추가 검사 → 위협이면 세션 차단
└─ 아니오 → 헤더 조건만으로 끝까지 통과
↓
[로그 설정] 세션 시작·종료 기록 (설정 시)
허용 로그가 증명하는 것과 증명하지 못하는 것을 구분해야 분석 결론이 정확해집니다.
| 허용 로그로 알 수 있는 것 | 허용 로그만으로 알 수 없는 것 |
|---|---|
| 방화벽이 해당 5-tuple 연결을 통과시켰다 | 서버가 요청을 정상 처리했는가 |
| 어느 규칙이 허용했는가 | 요청 내용이 공격이었는가 |
| 세션 지속 시간, 주고받은 바이트 수(종료 로그) | 공격이 성공했는가 |
| NAT 변환 전후 주소(기록 시) | 어떤 사용자·프로세스가 만들었는가(일반 방화벽) |
설명·범위·로그를 갖춘 허용 규칙의 실습 예시입니다(값은 환경마다 다름).
# Rocky (firewalld rich rule): 관리망에서만 SSH 허용, 로그 기록(분당 3건 제한)
sudo firewall-cmd --permanent --zone=public \
--add-rich-rule='rule family="ipv4" source address="10.99.10.0/24" service name="ssh" log prefix="FW-SSH-ALLOW " level="info" limit value="3/m" accept'
sudo firewall-cmd --reload
# Ubuntu (ufw): 같은 목적, 규칙 설명 포함
sudo ufw allow from 10.99.10.0/24 to any port 22 proto tcp comment 'CHG-0930 mgmt ssh'
# nftables (Rocky/Ubuntu 공통) — 세션 시작 시 한 번만 로그를 남기는 허용 규칙
ct state new ip saddr 10.99.10.0/24 tcp dport 22 counter log prefix "FW-SSH-ALLOW " accept comment "CHG-0930 mgmt ssh"
ct state new 조건을 함께 쓰면 세션의 첫 패킷에서만 로그가 남아, 패킷마다 기록되는 것을 피할 수 있습니다. 규칙 문법의 전체 구조는 04 영역 181. Firewall 정책을 참고합니다.
관제자가 확인할 질문
오탐 주의: 허용 로그 급증은 신규 서비스 오픈, 대규모 배포, 백업 작업 같은 정상 운영 이벤트와 겹치는 경우가 많습니다. 변경 관리 일정과 먼저 대조합니다. 허용 로그와 IDS Alert를 연결하는 방법은 296. Alert와 Firewall Log 연계에서 다룹니다.