1. ACL(Access Control List)이란?
ACL은 라우터나 스위치를 통과하는 네트워크 트래픽을 허용(Permit)하거나 거부(Deny)하는 일련의 규칙 목록이다.
특정 IP 주소, 프로토콜, 포트 번호를 기준으로 패킷을 필터링하여 네트워크 보안 및 대역폭 관리를 수행한다.
🔵 ACL의 주요 특징
- 순차적 처리: 리스트의 위에서부터 아래로 순서대로 검사하며, 조건에 맞는 규칙을 찾으면 즉시 실행하고 종료한다.
- 암시적 거부(Implicit Deny Any): 리스트의 가장 마지막에는 모든 트래픽을 거부하는 보이지 않는 규칙(deny any)이 존재한다. 따라서 최소 하나 이상의 permit 구문이 포함되어야 한다.
- 와일드카드 마스크(Wildcard Mask): 서브넷 마스크와 반대로 0은 '일치해야 함', 1은 '상관없음'을 의미하여 필터링 범위를 지정한다.
🔵 ACL 처리 로직

2. 시스코 장비 ACL 설정 방법
시스코 IOS에서 ACL은 크게 두 가지 유형으로 나뉜다.
- Standard ACL : 출발지 IP 주소만을 기준으로 필터링한다.
- Extended ACL : 출발지/목적지 IP, 프로토콜(TCP/UDP/ICMP), 포트 번호를 상세히 제어한다.
| 구분 | Standard ACL | Extended ACL |
| 번호 범위 | 1 ~ 99, 1300-1999 | 100 ~ 199, 2000-2699 |
| 판단 기준 | Source IP (출발지 주소)만 확인 | 출발지/목적지 IP, 프로토콜, 포트 번호 확인 |
| 설치 위치 | 목적지(Destination)에 가깝게 설정 | 출발지(Source)에 가깝게 설정 |
| 정밀도 | 낮음 (특정 서비스만 차단 불가) | 높음 (HTTP, FTP, Telnet 등 선택적 차단) |
💡 "Implicit Deny Any"
ACL의 맨 마지막에는 deny all 문구가 숨어 있다.
즉, 허용되지 않은 모든 것은 거부된다.
따라서 특정 대상을 차단한 후 나머지를 통과시키려면 반드시 맨 마지막에 permit any를 넣어줘야 한다.
3. 패킷 트레이서 실습
[시나리오 1] 특정 호스트에 대한 접근 허용
제시된 토폴로지 환경에서 PC1(192.168.10.66)만 Router1(192.168.10.126)에 SSH로 접속할 수 있도록 설정한다.
다른 장치(Laptop1 등)의 접속은 차단되어야 한다.

🔵 네트워크 정보 설정
- Network: 192.168.10.64/26
- Router1 (Gateway): 192.168.10.126
- PC1 (허용 대상): 192.168.10.66
- Laptop1 (차단 대상): 192.168.10.80
🔵 라우터 설정 단계 (CLI)
관리 목적의 SSH 접속 제한은 인터페이스에 ACL을 적용하기보다 line vty 설정에서 access-class 명령어를 사용하는 것이 효율적이다.
1️⃣ ACL 생성
PC1의 IP만 허용하는 표준 ACL을 생성한다.
나머지 모든 IP는 암시적 거부 규칙에 의해 자동으로 차단된다.
------------
Router1# configure terminal
Router1(config)# access-list 1 permit host 192.168.10.66
------------
2️⃣ VTY 라인에 ACL 적용
가상 터미널(VTY) 라인에 접근하여 생성한 ACL 10번을 입력 트래픽(in)에 적용한다.
------------
Router1(config)# line vty 0 4
Router1(config-line)# access-class 1 in
Router1(config-line)# end
Router1# wr
------------
🔵 결과 확인 및 검증
설정이 완료된 후, 각 장치에서 Router1으로 SSH 접속을 시도하여 결과를 확인한다.
1️⃣ PC1에서 접속 (성공 케이스)
PC1의 Command Prompt에서 SSH 접속 명령어를 입력한다.
------------
PC1> ssh -l [username] 192.168.10.126
------------
# Password 입력 프롬프트가 나타나면 정상

2️⃣ Laptop1에서 접속 (실패 케이스)
Laptop1에서 동일하게 접속을 시도한다.
------------
Laptop1> ssh -l [username] 192.168.10.126
------------
# "Connection refused by foreign host" 또는 타임아웃 메시지 출력 시 정상 차단됨

3️⃣ 라우터에서 ACL 상태 확인
라우터 CLI에서 설정된 ACL이 의도대로 동작하고 있는지 매치(match) 횟수를 확인한다.
------------
Router1# show access-lists 1
Standard IP access list 1
# PC1의 접속 시도로 인한 매치 수 확인
------------

[시나리오 1] 특정 서브넷 전체에 대한 접근 허용
단일 IP가 아닌 네트워크 범위를 지정할 때는 와일드카드 마스크(Wildcard Mask) 계산이 필요하다.
🔵 와일드카드 마스크 계산
현재 네트워크는 192.168.10.64/26이다.
- 서브넷 마스크: 255.255.255.192
- 와일드카드 마스크: 전체 255.255.255.255에서 서브넷 마스크를 뺀 값
- 255.255.255.255 - 255.255.255.192 = 0.0.0.63
🔵 네트워크 접근 제어 구조

🔵 라우터 설정 단계 (CLI)
이번에는 기존의 ACL 10번 대신, 서브넷 전체를 허용하는 ACL 20번을 생성하여 적용한다.
1️⃣ 서브넷 단위 ACL 생성
호스트 예약어(host) 대신 네트워크 주소와 와일드카드 마스크를 조합하여 입력한다.
----------
Router1# configure terminal
Router1(config)# access-list 20 permit 192.168.10.64 0.0.0.63
----------
192.168.10.64부터 192.168.10.127 범위의 모든 IP를 허용한다.
2️⃣ VTY 라인 설정 변경
기존에 설정된 access-class 1을 제거하고 새로운 access-class 2을 적용한다.
----------
Router1(config)# line vty 0 4
Router1(config-line)# no access-class 1 in
Router1(config-line)# access-class 2 in
Router1(config-line)# exit
----------
🔵 결과 확인 및 검증
이 설정이 완료되면 동일 서브넷에 속한 모든 장비(PC1, Laptop1, DHCP 서버 등)가 라우터에 SSH 접속을 할 수 있게 된다.
| 접속 시도 장비 | IP 주소 | 소속 네트워크 | 접속 결과 |
| PC1 | 192.168.10.66 | 192.168.10.64/26 | 허용 (Success) |
| Laptop1 | 192.168.10.80 | 192.168.10.64/26 | 허용 (Success) |
| DNS 서버 | 192.168.10.68 | 192.168.10.64/26 | 허용 (Success) |
| 외부 호스트 | 10.10.10.5 (예시) | 외부 대역 | 차단 (Fail) |
'Journey to Security > 네트워크' 카테고리의 다른 글
| [Cisco IOS]동적 라우팅 (1) RIP 프로토콜과 Passive-interface (0) | 2026.04.02 |
|---|---|
| [Cisco IOS]NAT/PAT(Port Address Translation) (0) | 2026.04.01 |
| [Cisco IOS] 스위치/라우터에 SSH 서비스 설정하기 (0) | 2026.03.16 |
| [Cisco Packet Tracer]L2 보안의 시작, 포트 시큐리티(Port Security) (0) | 2026.03.16 |
| [Cisco Packet Tracer] 스위치 VLAN 관리의 자동화, VTP(VLAN Trunking Protocol) (0) | 2026.03.16 |