📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 178편
이전 글: 177. PAT · 다음 글: 179. Network Segmentation

1. 개념

ACL(Access Control List) 은 라우터·L3 스위치가 패킷의 주소·프로토콜·포트를 보고 허용(permit) 또는 거부(deny) 를 결정하는 규칙 목록입니다. 라우터는 기본적으로 "보낼 수 있으면 보내는" 장비이므로(153. Router란 무엇인가), 구간 사이에 통제가 필요하면 ACL을 인터페이스에 적용합니다.

ACL은 NAT 대상 선택(177. PAT), 관리 접속 제한(VTY), 라우팅 필터 등에도 쓰이지만, 이 글은 인터페이스 트래픽 필터로서의 ACL을 다룹니다. 정책 설계·분석 관점의 ACL은 257. ACL에서 다룹니다.

종류 (Cisco IOS 계열)번호 범위판단 기준
Standard1–99, 1300–1999출발지 IP만
Extended100–199, 2000–2699프로토콜, 출발지·목적지 IP, 포트, TCP 플래그 등
Named이름 지정 (standard/extended 선택)위와 같음, 줄 단위 삽입·삭제가 쉬움

2. 동작 원리

인터페이스에 적용된 ACL은 패킷마다 다음 순서로 평가됩니다.

패킷이 인터페이스로 들어옴(in) 또는 나감(out)
      ↓
ACL 첫 줄부터 차례로 비교
      ├─ 일치 → 그 줄의 permit/deny 적용, 평가 종료
      └─ 불일치 → 다음 줄
      ↓
끝까지 일치 없음 → 암묵적 deny (deny ip any any, 설정에 보이지 않음)
  • 첫 일치(First Match): 넓은 규칙이 위에 있으면 아래의 구체적 규칙은 영원히 적용되지 않습니다.
  • 암묵적 deny: permit 줄이 하나도 없는 ACL을 적용하면 모든 트래픽이 막힙니다.
  • 인터페이스·방향·프로토콜당 ACL 1개: 한 인터페이스의 in 방향에 IPv4 ACL은 하나만 적용됩니다.

주소 범위는 서브넷 마스크를 뒤집은 와일드카드 마스크로 표현합니다. 0인 비트는 "일치해야 함", 1인 비트는 "상관없음"입니다.

표현의미
192.168.10.0 0.0.0.255192.168.10.0/24 전체
host 10.20.0.1010.20.0.10 0.0.0.0과 같음 (단일 호스트)
any0.0.0.0 255.255.255.255와 같음
eq 443, range 20 21, gt 1023포트 조건 (TCP·UDP)

3. 주요 특징

  • 방향은 라우터 기준입니다. in은 "이 인터페이스로 라우터에 들어오는 패킷", out은 "이 인터페이스로 나가는 패킷"입니다. 사용자망 쪽 인터페이스의 in은 "사용자망에서 출발한 트래픽"을 뜻합니다.
  • 배치 원칙: Extended ACL은 출발지에 가깝게(불필요한 트래픽을 일찍 버림), Standard ACL은 출발지만 보므로 목적지에 가깝게 두는 것이 일반적입니다.
  • ACL은 상태를 기억하지 않습니다(Stateless). 응답 패킷도 반대 방향 ACL을 통과해야 합니다. TCP에서는 established 키워드로 ACK 또는 RST 플래그가 있는 패킷만 허용해 "내부가 시작한 연결의 응답"을 흉내 낼 수 있지만, 플래그만 보는 것이라 상태 추적과는 다릅니다(185. Stateful Firewall).
  • log 키워드를 붙인 줄에 일치하면 Syslog 메시지가 발생합니다. 모든 줄에 붙이면 장비 부하가 커지므로 보통 마지막 deny 줄이나 중요한 줄에만 둡니다.
  • 라우터 자신이 만든 트래픽(ping, Syslog 전송 등)은 out 방향 ACL의 적용을 받지 않는 것이 일반적입니다.

4. 예시

실습 예시 — GNS3 등의 Cisco IOS 계열 라우터에서 사용자망(192.168.10.0/24, Gi0/1) → 서버망(10.20.0.0/24) 통신을 웹과 ping만 허용하는 설정입니다. 값은 예시(값은 환경마다 다름)입니다.

ip access-list extended USER-TO-SRV
 remark 사용자망 → 웹 서버 HTTPS 허용
 permit tcp 192.168.10.0 0.0.0.255 host 10.20.0.10 eq 443
 remark 사용자망 → 서버망 ping 허용
 permit icmp 192.168.10.0 0.0.0.255 10.20.0.0 0.0.0.255 echo
 remark 서버망 방향 나머지 차단 + 로그
 deny   ip 192.168.10.0 0.0.0.255 10.20.0.0 0.0.0.255 log
 permit ip any any
!
interface GigabitEthernet0/1
 ip access-group USER-TO-SRV in

마지막 permit ip any any가 없으면 사용자망의 인터넷 트래픽까지 암묵적 deny에 걸립니다. 순서를 바꾸면 결과가 완전히 달라지는 예입니다.

확인 명령과 출력 형식 예시입니다.

R1# show access-lists USER-TO-SRV
Extended IP access list USER-TO-SRV
    10 permit tcp 192.168.10.0 0.0.0.255 host 10.20.0.10 eq 443 (152 matches)
    20 permit icmp 192.168.10.0 0.0.0.255 10.20.0.0 0.0.0.255 echo (8 matches)
    30 deny ip 192.168.10.0 0.0.0.255 10.20.0.0 0.0.0.255 log (3 matches)
    40 permit ip any any (2291 matches)

R1# show ip interface GigabitEthernet0/1    ! Inbound access list 적용 여부 확인

log 줄에 일치하면 다음과 같은 형식의 메시지가 남습니다(형식 예시).

%SEC-6-IPACCESSLOGP: list USER-TO-SRV denied tcp 192.168.10.11(51514) -> 10.20.0.20(22), 1 packet

Linux 라우터 VM에서는 같은 의미를 nftables의 forward 체인 규칙으로 표현합니다(Rocky/Ubuntu 공통, 구조는 181. Firewall 정책).

📷 [실습 화면 삽입 위치] 사용자망 VM에서 10.20.0.20:22 접속을 시도한 뒤 R1의 show access-lists 적중 수 증가와 %SEC-6-IPACCESSLOGP 로그가 함께 보이는 화면


5. 보안 관점

  • VLAN 분리는 ACL이 있어야 완성됩니다. L3 스위치·라우터는 ACL이 없으면 모든 VLAN 간 통신을 허용합니다(167. Inter-VLAN Routing).
  • Stateless 한계: established는 ACK 플래그만 보므로 위조된 ACK 패킷도 통과합니다. 외부 경계처럼 신뢰할 수 없는 구간은 상태 기반 방화벽이 담당해야 합니다.
  • 순서 오류가 가장 흔한 취약점입니다. 넓은 permit이 위에 있으면 아래 deny는 무의미해집니다. 적중 수가 0인 줄은 가려진(shadowed) 규칙인지 점검합니다.
  • 관리 접속(VTY)에는 별도 ACL(access-class)로 관리망 출발지만 허용하는 것이 기본입니다.

6. SOC 관점

흔적의미
%SEC-6-IPACCESSLOGP (TCP·UDP), %SEC-6-IPACCESSLOGDP (ICMP)log 줄 일치 기록 (Cisco 계열 예)
show access-lists 적중 수줄별 누적 일치 건수 (재부팅·clear 시 초기화)
설정 변경 로그ACL 줄 추가·삭제 시각과 작업자

관제자가 확인할 질문

  • 차단 로그의 출발지가 한 호스트에서 여러 목적지·포트로 퍼지는가(내부 정찰 가능성)?
  • 서버망으로의 deny가 평소 없던 사용자 단말에서 갑자기 발생했는가?
  • 적중 수가 급증한 줄이 permit이라면, 그 허용 범위가 필요 이상으로 넓지 않은가?

오탐 주의: Cisco 계열 ACL 로그는 부하를 줄이기 위해 첫 패킷 이후 일정 주기로 요약해서 기록하므로(N packets), 로그 건수가 실제 패킷 수와 다릅니다. 내부 스캔 흔적 분석은 234. Firewall에서 Scan 흔적 찾기에서 다룹니다.


7. 핵심 정리

  • ACL은 라우터·L3 스위치가 주소·프로토콜·포트로 permit/deny를 결정하는 규칙 목록이며, Standard·Extended·Named가 있습니다.
  • 위에서부터 첫 일치로 평가하고, 끝에는 보이지 않는 암묵적 deny가 있습니다.
  • 방향(in/out)은 라우터 기준이며, Extended는 출발지 가까이, Standard는 목적지 가까이 둡니다.
  • ACL은 상태를 기억하지 않으므로 established는 플래그 검사일 뿐이며, 신뢰할 수 없는 경계는 Stateful 방화벽이 맡습니다.
  • log 키워드의 %SEC-6-IPACCESSLOGP 메시지와 show access-lists 적중 수가 관제 근거가 됩니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글