📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 184편
이전 글: 183. Outbound 정책 · 다음 글: 185. Stateful Firewall

1. 개념

방화벽·ACL의 모든 규칙은 조건이 일치했을 때 수행할 동작(Action) 을 가집니다. 가장 기본은 Allow(허용) 와 Deny(거부) 이며, 거부에는 조용히 버리는 Drop과 거부 사실을 알려 주는 Reject 두 방식이 있습니다.

동작장비의 처리보낸 쪽이 받는 것
Allow (Accept, Permit)패킷 통과, 상태 기반이면 세션 생성정상 응답(목적지가 응답할 경우)
Drop패킷을 버리고 아무것도 보내지 않음없음 → 타임아웃
Reject패킷을 버리고 거부 응답 전송TCP RST 또는 ICMP Destination Unreachable

이 글은 장비가 동작을 어떻게 표기하고, 각 동작이 네트워크에 어떤 흔적을 남기는가를 다룹니다. 허용·차단 정책 설계와 Default Deny는 265. Allow Policy·266. Deny Policy·267. Default Deny에서 다룹니다.


2. 동작 원리

같은 TCP 접속 시도(SYN)에 대해 동작별로 벌어지는 일입니다.

[클라이언트] SYN → dst 10.20.0.10:22 → [방화벽]
                                         │
     ├─ Allow  → 서버로 전달 → 서버 SYN/ACK (포트 열림) 또는 RST (포트 닫힘)
     │
     ├─ Drop   → 버림, 응답 없음
     │           클라이언트: SYN 재전송 반복 → 수 초~수십 초 후 타임아웃
     │
     └─ Reject → 버림 + 방화벽이 응답 생성
                 (a) TCP RST     → 클라이언트: 즉시 "Connection refused"
                 (b) ICMP 3/13   → 클라이언트: 즉시 "No route to host" 등
                     (Administratively Prohibited)

Reject의 RST는 방화벽이 목적지 서버를 가장해 만든 패킷입니다. 따라서 클라이언트 입장에서는 "서버의 포트가 닫혀 있는 것"과 구분이 어렵습니다.

장비별 표기와 기본 거부 방식입니다.

장비·도구허용거부 표기기본 거부 방식
Cisco IOS ACLpermitdeny버림 + ICMP Unreachable(관리상 금지)을 속도 제한하여 전송, 인터페이스에서 no ip unreachables로 끔
nftablesacceptdrop, rejectreject만 쓰면 ICMP Port Unreachable 계열, reject with tcp reset 등으로 지정
iptables-j ACCEPT-j DROP, -j REJECTREJECT 기본은 icmp-port-unreachable, --reject-with tcp-reset 가능
firewalldaccept (rich rule)drop, rejectzone 기본 target은 ICMP를 제외하고 거부(REJECT 계열), DROP target 선택 가능

3. 주요 특징

Drop과 Reject의 선택 기준

기준DropReject
외부에 주는 정보적음 (장비·포트 존재가 불분명)방화벽이 있음을 알려 줌
정상 사용자의 체감타임아웃까지 대기즉시 실패 → 재시도·장애 파악이 빠름
위조 출발지 공격 시응답을 만들지 않음위조된 출발지로 응답을 보내게 됨
주로 쓰는 곳인터넷 경계 Inbound내부 구간, Outbound 차단
  • 로그는 동작과 별개로 설정합니다. 허용이든 거부든 로그를 켜지 않으면 흔적이 남지 않습니다. 거부 로그는 양이 많으므로 전체 기록 대신 요약·샘플링을 쓰기도 합니다.
  • 스캐너가 보는 결과도 동작에 따라 다릅니다. 본인 소유 실습망에서의 SYN 스캔 기준으로, 응답이 없거나 ICMP Unreachable을 받으면 filtered, RST를 받으면 closed로 판정됩니다. 방화벽이 tcp reset으로 Reject하면 실제로는 막힌 포트가 closed로 보일 수 있습니다(208. SYN Scan).
  • 일부 NGFW는 Allow·Deny 외에 탐지만 하고 통과(Alert), 세션 재설정(Reset both) 같은 동작을 제공합니다(제품마다 다름).

4. 예시

실습 예시 — 방화벽 VM(nftables)에서 같은 서버 포트에 대해 세 가지 동작을 차례로 적용하고, 클라이언트 반응을 비교합니다(Rocky/Ubuntu 공통, 180. DMZ의 inet fw forward 체인 가정). 값은 예시(값은 환경마다 다름)입니다.

# (1) Drop
sudo nft insert rule inet fw forward ip daddr 10.20.0.10 tcp dport 22 counter drop
# (2) Reject - TCP RST
sudo nft insert rule inet fw forward ip daddr 10.20.0.10 tcp dport 22 counter reject with tcp reset
# (3) Reject - ICMP 관리상 금지
sudo nft insert rule inet fw forward ip daddr 10.20.0.10 tcp dport 22 counter reject with icmpx type admin-prohibited

# 확인·삭제: handle 번호로 지움 (한 번에 하나씩 적용해 비교)
sudo nft -a list chain inet fw forward
sudo nft delete rule inet fw forward handle <번호>

클라이언트에서 각 경우의 반응을 확인합니다.

# 클라이언트 VM
time nc -vz -w 10 10.20.0.10 22
sudo tcpdump -nn -i ens160 'host 10.20.0.10 and (tcp port 22 or icmp)'

결과 형식 예시(메시지는 도구·버전마다 다름):

적용 동작nc 반응tcpdump에 보이는 것
Drop약 10초 후 timed outSYN 재전송만 반복
Reject (tcp reset)즉시 Connection refusedSYN → RST, ACK
Reject (admin-prohibited)즉시 No route to hostSYN → ICMP host 10.20.0.10 unreachable - admin prohibited filter

📷 [실습 화면 삽입 위치] 세 가지 동작을 차례로 적용했을 때의 time nc -vz 결과와 tcpdump 출력을 나란히 놓아 타임아웃·RST·ICMP 3/13의 차이를 표시한 화면


5. 보안 관점

  • 인터넷 경계에서는 Drop이 일반적입니다. 스캐너에 정보를 덜 주고, 위조 출발지로 거부 응답을 반사하지 않습니다.
  • 내부에서는 Reject가 운영에 유리합니다. 업무 프로그램이 타임아웃까지 멈추지 않고, 차단 사실이 빨리 드러나 장애 분석이 쉽습니다.
  • Allow 규칙이 진짜 위험 지점입니다. 거부 규칙이 아무리 많아도 넓은 허용 규칙 하나가 앞에 있으면 무의미합니다(181. Firewall 정책).
  • 대량의 Reject 응답은 장비 부하가 될 수 있으므로, 장비들은 ICMP 거부 응답을 속도 제한합니다.

6. SOC 관점

로그·패킷 흔적해석
방화벽 로그 action = allow연결이 통과함(서버가 실제로 응답했는지는 세션 바이트로 확인)
action = drop / deny통과하지 못함, 보낸 쪽은 타임아웃
action = reject / reset통과하지 못함, 보낸 쪽은 즉시 실패를 인지
캡처에서 ICMP Type 3 Code 13경로상 장비의 관리상 금지(필터) 응답

관제자가 확인할 질문

  • 이 로그의 동작은 통과인가 거부인가? 허용 로그라면 이후 응답 바이트가 있었는가?
  • 같은 출발지가 거부된 뒤 다른 포트·다른 목적지에서 허용된 기록이 있는가?
  • 캡처의 RST가 서버에서 온 것인지, 방화벽이 만든 것인지 TTL·타이밍으로 구분할 수 있는가?

오탐 주의: "차단 로그가 있다 = 공격이 막혔다"로 끝내지 않습니다. 같은 행위가 다른 경로로 허용되었는지 함께 확인해야 합니다. 방화벽 로그의 action 필드 해석은 187. Firewall Log에서 이어집니다.


7. 핵심 정리

  • 규칙 동작은 Allow와 Deny이며, Deny는 조용히 버리는 Drop과 거부 응답을 보내는 Reject로 나뉩니다.
  • Drop은 보낸 쪽을 타임아웃시키고, Reject는 TCP RST나 ICMP Unreachable로 즉시 실패를 알립니다.
  • Cisco는 permit/deny, nftables는 accept/drop/reject, iptables는 ACCEPT/DROP/REJECT, firewalld는 rich rule과 zone target으로 표현합니다.
  • 인터넷 경계는 Drop, 내부 구간은 Reject가 일반적이며, 로그 설정은 동작과 별개입니다.
  • 스캔 결과의 closed·filtered 판정과 로그의 action 필드는 이 동작 차이를 이해해야 올바르게 해석됩니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글