📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 178편
이전 글: 177. PAT · 다음 글: 179. Network Segmentation
ACL(Access Control List) 은 라우터·L3 스위치가 패킷의 주소·프로토콜·포트를 보고 허용(permit) 또는 거부(deny) 를 결정하는 규칙 목록입니다. 라우터는 기본적으로 "보낼 수 있으면 보내는" 장비이므로(153. Router란 무엇인가), 구간 사이에 통제가 필요하면 ACL을 인터페이스에 적용합니다.
ACL은 NAT 대상 선택(177. PAT), 관리 접속 제한(VTY), 라우팅 필터 등에도 쓰이지만, 이 글은 인터페이스 트래픽 필터로서의 ACL을 다룹니다. 정책 설계·분석 관점의 ACL은 257. ACL에서 다룹니다.
| 종류 (Cisco IOS 계열) | 번호 범위 | 판단 기준 |
|---|---|---|
| Standard | 1–99, 1300–1999 | 출발지 IP만 |
| Extended | 100–199, 2000–2699 | 프로토콜, 출발지·목적지 IP, 포트, TCP 플래그 등 |
| Named | 이름 지정 (standard/extended 선택) | 위와 같음, 줄 단위 삽입·삭제가 쉬움 |
인터페이스에 적용된 ACL은 패킷마다 다음 순서로 평가됩니다.
패킷이 인터페이스로 들어옴(in) 또는 나감(out)
↓
ACL 첫 줄부터 차례로 비교
├─ 일치 → 그 줄의 permit/deny 적용, 평가 종료
└─ 불일치 → 다음 줄
↓
끝까지 일치 없음 → 암묵적 deny (deny ip any any, 설정에 보이지 않음)
주소 범위는 서브넷 마스크를 뒤집은 와일드카드 마스크로 표현합니다. 0인 비트는 "일치해야 함", 1인 비트는 "상관없음"입니다.
| 표현 | 의미 |
|---|---|
192.168.10.0 0.0.0.255 | 192.168.10.0/24 전체 |
host 10.20.0.10 | 10.20.0.10 0.0.0.0과 같음 (단일 호스트) |
any | 0.0.0.0 255.255.255.255와 같음 |
eq 443, range 20 21, gt 1023 | 포트 조건 (TCP·UDP) |
in은 "이 인터페이스로 라우터에 들어오는 패킷", out은 "이 인터페이스로 나가는 패킷"입니다. 사용자망 쪽 인터페이스의 in은 "사용자망에서 출발한 트래픽"을 뜻합니다.established 키워드로 ACK 또는 RST 플래그가 있는 패킷만 허용해 "내부가 시작한 연결의 응답"을 흉내 낼 수 있지만, 플래그만 보는 것이라 상태 추적과는 다릅니다(185. Stateful Firewall).log 키워드를 붙인 줄에 일치하면 Syslog 메시지가 발생합니다. 모든 줄에 붙이면 장비 부하가 커지므로 보통 마지막 deny 줄이나 중요한 줄에만 둡니다.out 방향 ACL의 적용을 받지 않는 것이 일반적입니다.실습 예시 — 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로그가 함께 보이는 화면
established는 ACK 플래그만 보므로 위조된 ACK 패킷도 통과합니다. 외부 경계처럼 신뢰할 수 없는 구간은 상태 기반 방화벽이 담당해야 합니다.access-class)로 관리망 출발지만 허용하는 것이 기본입니다.| 흔적 | 의미 |
|---|---|
%SEC-6-IPACCESSLOGP (TCP·UDP), %SEC-6-IPACCESSLOGDP (ICMP) | log 줄 일치 기록 (Cisco 계열 예) |
show access-lists 적중 수 | 줄별 누적 일치 건수 (재부팅·clear 시 초기화) |
| 설정 변경 로그 | ACL 줄 추가·삭제 시각과 작업자 |
관제자가 확인할 질문
오탐 주의: Cisco 계열 ACL 로그는 부하를 줄이기 위해 첫 패킷 이후 일정 주기로 요약해서 기록하므로(N packets), 로그 건수가 실제 패킷 수와 다릅니다. 내부 스캔 흔적 분석은 234. Firewall에서 Scan 흔적 찾기에서 다룹니다.
established는 플래그 검사일 뿐이며, 신뢰할 수 없는 경계는 Stateful 방화벽이 맡습니다.log 키워드의 %SEC-6-IPACCESSLOGP 메시지와 show access-lists 적중 수가 관제 근거가 됩니다.