Journey to Security/네트워크

[Cisco Packet Tracer] ACL을 활용한 라우터/스위치 SSH 접근 제어

보눔비스타 2026. 3. 16. 13:34

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은 크게 두 가지 유형으로 나뉜다.

  1. Standard ACL : 출발지 IP 주소만을 기준으로 필터링한다.
  2. 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)