[네트워크] CCNA_ACL(Access Control List) 기초
ACL(Access Control List)은 네트워크 트래픽을 허용하거나 차단하는 규칙 목록으로, 라우터와 스위치 보안의 가장 기본이 되는 기능입니다. 이 글에서는 ACL의 개념, 종류, 동작 원리, 그리고 실무에서 자주 마주치는 표준/확장 ACL의 차이까지 초보자도 이해할 수 있도록 정리합니다.
1. ACL이란 무엇인가
ACL(Access Control List)은 우리말로 접근 제어 목록이라고 합니다. 네트워크 장비를 지나가는 패킷(데이터 조각)을 출발지 주소, 목적지 주소, 포트 번호, 프로토콜 등 다양한 조건으로 검사해서 통과시킬지 막을지를 결정하는 규칙 묶음이죠.
💡 쉬운 비유 — 아파트 경비실의 출입 명단
아파트 경비실에는 "택배기사는 들여보내되, 모르는 외부인은 차단"이라는 출입 규칙이 있습니다. ACL도 똑같아요. 라우터라는 경비실에 "192.168.1.0에서 오는 사람은 OK, 10.0.0.5에서 오는 사람은 차단"이라는 명단을 붙여두는 겁니다. 명단 위에서부터 차례로 확인하다가 일치하는 게 나오면 그대로 처리하고 더 이상 보지 않아요.
ACL을 사용하면 다음과 같은 일을 할 수 있습니다.
- 특정 IP나 네트워크에서 오는 트래픽 차단
- 특정 서비스(웹, SSH, FTP 등) 접근 제한
- 회사 내부망과 외부망 사이 트래픽 필터링
- VPN, NAT, QoS 등 다른 기능에서 "어떤 트래픽을 대상으로 할지" 지정
2. ACL의 동작 원리
ACL은 위에서 아래로 순차적으로 패킷을 검사합니다. 이를 Top-down 방식이라고 부릅니다.
- 패킷이 들어오면 ACL의 첫 번째 줄과 비교
- 일치하면 그 규칙대로 처리(허용/거부)하고 즉시 종료
- 일치하지 않으면 다음 줄로 이동
- 모든 줄과 일치하지 않으면 암묵적 거부(Implicit Deny)로 자동 차단
⚠️ 주의 — 암묵적 거부(Implicit Deny)
ACL의 맨 끝에는 보이지 않는 "그 외 모두 거부" 규칙이 자동으로 붙습니다. 그래서 ACL을 만들 때 허용 규칙을 하나도 안 적으면 모든 트래픽이 차단됩니다. 마치 "이 명단에 없는 사람은 무조건 출입 금지"라는 기본값이 깔려있는 셈이죠.
3. ACL의 종류 (표준 vs 확장)
ACL은 검사하는 조건의 범위에 따라 크게 두 가지로 나뉩니다.
표준 ACL (Standard ACL)
출발지 IP 주소만 보고 판단합니다. 단순하지만 그만큼 빠르고 가볍죠.
확장 ACL (Extended ACL)
출발지/목적지 IP, 프로토콜(TCP/UDP/ICMP 등), 포트 번호까지 모두 검사할 수 있습니다. 표준보다 훨씬 정교한 제어가 가능합니다.
| 구분 | 표준 ACL | 확장 ACL |
|---|---|---|
| 번호 범위 | 1~99, 1300~1999 | 100~199, 2000~2699 |
| 검사 항목 | 출발지 IP만 | 출발지/목적지 IP, 프로토콜, 포트 |
| 적용 위치 | 목적지에 가까운 인터페이스 | 출발지에 가까운 인터페이스 (권장) |
| 처리 속도 | 빠름 | 상대적으로 느림 |
| 정교함 | 낮음 | 높음 (실무 권장) |
💡 적용 위치 비유
표준 ACL은 "누가 왔는지(출발지)"만 보기 때문에, 너무 일찍 차단하면 다른 정상 트래픽까지 죽일 수 있어요. 그래서 목적지 근처에 둡니다. 반면 확장 ACL은 "어디로 가는지(목적지)"까지 알아서 정확히 걸러내므로, 출발지 근처에서 미리 차단해 네트워크 자원을 아낄 수 있습니다.
4. Named ACL과 Numbered ACL
ACL을 만들 때 식별자로 숫자를 쓰느냐 이름을 쓰느냐에 따라 두 가지로 나뉩니다.
| 구분 | Numbered ACL | Named ACL |
|---|---|---|
| 식별 방식 | 숫자 (예: 10, 100) | 이름 (예: BLOCK_GUEST) |
| 가독성 | 낮음 | 높음 |
| 개별 줄 수정 | 어려움 (전체 삭제 필요) | 시퀀스 번호로 가능 |
| 실무 권장 | 레거시 환경 | 신규 구성 시 추천 |
실무에서는 시간이 지나면 "이 100번 ACL이 뭐였더라?" 하는 일이 생기기 때문에, 의미가 보이는 Named ACL이 압도적으로 편리합니다.
5. 와일드카드 마스크 이해하기
ACL에서 IP 범위를 표현할 때 와일드카드 마스크(Wildcard Mask)를 씁니다. 서브넷 마스크와 비슷해 보이지만 정반대로 동작합니다.
0= "이 비트는 반드시 일치해야 함"1= "이 비트는 아무 값이나 OK (무시)"
💡 쉬운 비유 — 빈칸 채우기 문제
서브넷 마스크가 "여기까지는 똑같이 베껴 써"라면, 와일드카드 마스크는 "여기는 빈칸이니 아무거나 넣어도 돼"라는 뜻입니다. 예를 들어 192.168.1.0 0.0.0.255는 "앞 세 자리는 192.168.1로 고정, 마지막 자리는 0~255 아무거나"라는 뜻이라 192.168.1.0/24 네트워크 전체를 가리킵니다.
주요 변환 예시는 다음과 같습니다.
| 서브넷 마스크 | 와일드카드 마스크 | 의미 |
|---|---|---|
255.255.255.255 |
0.0.0.0 |
정확히 그 호스트 한 대 (= host 키워드) |
255.255.255.0 |
0.0.0.255 |
/24 네트워크 전체 |
255.255.0.0 |
0.0.255.255 |
/16 네트워크 전체 |
0.0.0.0 |
255.255.255.255 |
모든 주소 (= any 키워드) |
6. ACL 적용 방향 (Inbound vs Outbound)
ACL은 인터페이스에 적용할 때 방향을 정해야 합니다. 인터페이스 입장에서 본 방향이라는 점이 헷갈리기 쉽습니다.
| 방향 | 의미 | 특징 |
|---|---|---|
| Inbound (인바운드) | 인터페이스로 들어오는 트래픽 | 라우팅 전에 검사 → 효율적 |
| Outbound (아웃바운드) | 인터페이스에서 나가는 트래픽 | 라우팅 후 검사 → 자원 일부 소비 |
💡 쉬운 비유 — 회전문
회전문에 들어가기 전에 신분증 검사를 하면 자격이 없는 사람은 아예 들어오지 못합니다(Inbound). 반대로 회전문을 다 돌고 나갈 때 검사하면 이미 안에 들어와서 한 바퀴 돌아본 뒤 나가는 셈이죠(Outbound). 가능하면 들어올 때 미리 거르는 게 효율적입니다.
7. ACL 설정 시 핵심 규칙
실무에서 ACL을 만들고 적용할 때 반드시 기억해야 할 원칙들입니다.
- 한 인터페이스, 한 방향, 하나의 ACL — 인터페이스당 inbound 1개, outbound 1개까지만 적용 가능합니다.
- 구체적인 규칙을 위에 — 위에서부터 매칭하므로 좁은 범위의 규칙이 먼저 와야 합니다. (예: 특정 호스트 차단 → 그다음 네트워크 허용)
- 최소 한 줄은 permit — 모든 줄이 deny면 암묵적 거부와 합쳐져 통신이 완전히 끊깁니다.
- 표준 ACL은 목적지 가까이, 확장 ACL은 출발지 가까이에 배치합니다.
- 변경 전 백업 필수 — 원격 접속 중인 회선에 잘못 적용하면 자기 자신이 끊겨버립니다.
⚠️ 자주 하는 실수
SSH로 라우터에 접속한 상태에서 본인 PC의 IP를 차단하는 ACL을 outbound에 잘못 걸면, 적용하는 순간 세션이 끊겨 콘솔 케이블로 직접 가야 하는 사고가 생깁니다. 항상 설정 저장 전에 동작을 확인하세요.
8. ACL과 연관된 기능들
ACL은 단순히 차단/허용에만 쓰이는 게 아닙니다. 라우터/스위치의 여러 기능에서 "어떤 트래픽을 대상으로 할지" 지정하는 도구로 활용됩니다.
NAT (Network Address Translation)
"어떤 내부 IP를 공인 IP로 변환할지" 정할 때 ACL로 대상 범위를 지정합니다. 사설망 전체를 공인 IP 하나로 묶어 인터넷에 내보내는 PAT(Port Address Translation)도 ACL이 핵심입니다.
VPN (Crypto ACL)
사이트 간 IPSec VPN을 구성할 때, "어떤 트래픽을 암호화 터널로 보낼지" 정하는 게 바로 Crypto ACL입니다. 본사 ↔ 지사 통신만 골라 암호화하는 식이죠.
QoS (Quality of Service)
"화상회의 트래픽은 우선 처리"처럼 트래픽에 우선순위를 부여할 때, 분류 기준으로 ACL을 사용합니다.
Route Map / 라우팅 정책
특정 네트워크 경로를 재분배하거나 필터링할 때, Route Map의 매칭 조건으로 ACL이 들어갑니다. 동적 라우팅 프로토콜(OSPF, EIGRP, BGP)에서 광고할 경로를 선별하는 용도로 자주 쓰입니다.
Time-based ACL
"업무시간에만 특정 사이트 접속 허용"처럼 시간 조건을 더한 ACL입니다. time-range 설정과 결합해 사용합니다.
VTY ACL
라우터/스위치 자체에 원격 접속(SSH, Telnet)할 수 있는 IP를 제한하는 ACL입니다. 관리망 IP만 허용하는 식으로 장비 보안을 크게 강화할 수 있습니다.
9. 자주 묻는 질문 (Q&A)
Q1. ACL과 방화벽은 같은 건가요?
A. 비슷하지만 다릅니다. ACL은 패킷의 출발지/목적지/포트 등 정적인 정보만 보고 판단하는 반면, 방화벽은 세션 상태를 추적하는 Stateful Inspection까지 수행합니다. ACL은 가볍고 빠른 1차 필터, 방화벽은 정교한 보안 장비라고 이해하면 됩니다.
Q2. ACL을 만들었는데 적용을 안 하면 어떻게 되나요?
A. 아무 영향도 없습니다. ACL은 인터페이스에 access-group 명령으로 바인딩되어야 비로소 작동합니다. 만들기만 하고 적용을 안 한 ACL은 그저 설정파일에 적힌 메모 같은 상태입니다.
Q3. 표준 ACL이 출발지 IP만 본다면, 특정 웹사이트 차단은 어떻게 하나요?
A. 표준 ACL로는 못 합니다. "목적지 IP의 80번 포트(HTTP)를 차단"하려면 목적지 IP와 포트를 모두 봐야 하므로 확장 ACL이 필요합니다.
Q4. ACL 줄 순서가 그렇게 중요한가요?
A. 매우 중요합니다. 위에서 아래로 매칭되며, 한 번 일치하면 그 뒤는 보지 않기 때문입니다. 예를 들어 첫 줄에 "192.168.1.0/24 허용"을 적고 둘째 줄에 "192.168.1.100 거부"를 적으면, 192.168.1.100은 첫 줄에서 이미 허용되어 차단되지 않습니다. 항상 좁은 범위(구체적)부터 → 넓은 범위(일반적) 순서로 작성하세요.
Q5. 한 인터페이스에 ACL을 여러 개 걸 수는 없나요?
A. 같은 방향(inbound 또는 outbound)에는 1개만 가능합니다. 즉 하나의 인터페이스에는 inbound용 1개 + outbound용 1개, 총 2개까지 적용할 수 있습니다. 여러 조건을 적용하고 싶다면 하나의 ACL 안에 여러 줄로 작성해야 합니다.
마무리
ACL은 네트워크 보안의 출발점이자, NAT·VPN·QoS·라우팅 정책 등 거의 모든 고급 기능의 기반이 되는 핵심 도구입니다. 처음에는 와일드카드 마스크와 적용 방향이 헷갈리지만, "위에서 아래로 매칭", "마지막엔 암묵적 거부", "한 인터페이스 한 방향 하나" 세 가지만 확실히 잡으면 어느 벤더 장비에서도 응용할 수 있습니다.
다음 글에서는 Cisco IOS 기준 표준/확장 ACL 실전 설정 예제와 명령어를 상세히 다뤄볼 예정입니다.
#ACL #AccessControlList #네트워크기초 #표준ACL #확장ACL #와일드카드마스크 #네트워크보안 #라우터설정 #CCNA #네트워크엔지니어
댓글
댓글 쓰기