ACL(접근 제어 목록)란?

Access Control List의 약자. 대상마다 어떤 조건의 접근을 허용하고 어떤 것을 거부할지를 나열한 규칙 목록. 네트워크 기기에서는 출발지와 목적지의 주소, 프로토콜, 포트 번호 등을 조건으로 패킷을 통과시킬지 버릴지를 정하며, 위에서부터 차례로 검사하여 처음 일치한 규칙으로 판정한다. 어느 것에도 일치하지 않는 것은 거부하는(암묵적 거부) 것이 일반적이다. 파일 시스템에서 사용자별 권한을 나열한 것도 ACL이라고 부른다.

일본어 명칭: ACL(アクセス制御リスト)

ACL(접근 제어 목록)은(는) 네트워크 설계와 운용 등 1개 분야의 연습 문제 1개에 나와요.

분야: 네트워크 설계와 운용

위에서부터 차례로, 처음 일치한 규칙으로 정해진다

네트워크 기기의 ACL은 패킷을 규칙의 위에서부터 차례로 대조하여, 처음 일치한 규칙의 '허용' 또는 '거부'로 취급을 정하고, 그보다 뒤의 규칙은 보지 않습니다. 그래서 규칙의 순서가 중요하며, 특정 서버만 허용하는 것 같은 좁은 조건의 예외를 넓은 조건의 규칙보다 위에 써야 합니다. 끝에는 쓰여 있지 않은 '모두 거부' 규칙이 있는 것으로 간주되어(암묵적 거부), 허용 규칙에 해당하지 않는 통신은 모두 버려집니다.

적용할 위치와 방향

ACL은 라우터나 스위치의 인터페이스에, 들어오는 패킷과 나가는 패킷 중 어느 쪽에 적용할지를 정해 설정합니다. 출발지·목적지·포트 번호까지 자세히 지정하는 ACL은 출발지 가까이에 두면 불필요한 통신을 일찍 버릴 수 있어, 도중의 링크를 헛되이 쓰지 않습니다. 출발지만을 조건으로 하는 ACL은 출발지 가까이에 두면 다른 목적지로 가는 통신까지 막아 버리므로, 목적지 가까이에 두는 것이 기본입니다. ACL은 패킷을 하나씩 볼 뿐이므로, 내부에서 시작한 통신의 응답만 통과시키고 싶은 경우에는 통신 상태를 기억하는 스테이트풀 방화벽의 기능을 씁니다.

파일 시스템의 ACL

ACL이라는 말은 파일이나 폴더의 접근 권한에서도 쓰입니다. Linux의 기본 퍼미션은 소유자·그룹·기타의 3종류 권한밖에 나타낼 수 없지만, ACL을 쓰면 특정 사용자나 그룹마다 읽기·쓰기 권한을 추가할 수 있습니다. Windows의 NTFS에서도 파일별 ACL로 세세한 권한을 정합니다. 대상은 다르지만 '누구(무엇)에게 무엇을 허용하는지의 목록'이라는 생각은 같습니다.

도전해 보기: ACL(접근 제어 목록) 관련 문제

라우터의 인터페이스에, 들어오는 패킷을 위에서부터 차례로 검사하는 ACL을 설정했다. 규칙 1은 '목적지 10.0.0.10의 TCP 443번 포트로 가는 통신을 허용', 규칙 2는 '출발지가 192.168.1.0/24인 통신을 모두 거부', 규칙 3은 '출발지가 192.168.0.0/16이고 목적지가 TCP 80번 포트인 통신을 허용'이며, 그 밖의 규칙은 없다. ㄱ '192.168.1.5에서 10.0.0.10의 TCP 443번 포트로', ㄴ '192.168.1.5에서 10.0.0.20의 TCP 80번 포트로', ㄷ '192.168.2.5에서 10.0.0.20의 TCP 80번 포트로', ㄹ '192.168.2.5에서 10.0.0.20의 TCP 22번 포트로'의 4개 패킷 중 통과할 수 있는 것을 모두 고른 것은?

  1. Aㄱ과 ㄷ
  2. Bㄱ, ㄴ, ㄷ
  3. Cㄱ, ㄷ, ㄹ
정답과 해설 보기

정답: A. ㄱ과 ㄷ

ACL은 위에서부터 차례로 규칙과 대조하여, 처음 일치한 규칙으로 허용인지 거부인지를 정하고 그보다 뒤의 규칙은 보지 않습니다. 어느 규칙에도 일치하지 않는 패킷은 끝에 있는 보이지 않는 '모두 거부' 규칙(암묵적 거부)으로 버려집니다. ㄱ은 규칙 1에 일치하여 허용됩니다. ㄴ은 규칙 3에도 해당하지만, 먼저 규칙 2(출발지 192.168.1.0/24)에 일치하므로 거부됩니다. ㄷ은 규칙 1과 2에 일치하지 않고 규칙 3으로 허용되며, ㄹ은 어느 규칙에도 일치하지 않으므로 암묵적 거부로 버려집니다.

자주 묻는 질문

ACL의 끝에 '모두 거부'를 써야 하나요?

많은 기기에서는 끝에 암묵적 거부가 있으므로, 쓰지 않아도 허용되지 않은 통신은 버려집니다. 다만 거부한 통신을 기록하고 싶은 경우 등에는 '모두 거부' 규칙을 명시적으로 쓰고 로그를 남기도록 설정하기도 합니다. 반대로 거부 규칙만 쓴 ACL을 적용하면 암묵적 거부로 모든 통신이 멈추므로 주의가 필요합니다.

ACL과 방화벽의 차이는 무엇인가요?

ACL은 규칙에 따라 패킷을 하나씩 허용·거부하는 구조로, 라우터나 스위치의 기본 기능으로 쓰입니다. 방화벽은 ACL 같은 규칙에 더해, 통신 상태를 기억하여 응답 통신을 자동으로 통과시키는 스테이트풀 인스펙션나 애플리케이션 식별 등의 기능을 가진 전용 기기나 소프트웨어입니다.

해설 속 ACL(접근 제어 목록)

ACL(접근 제어 목록)이(가) 나오는 문제 (1)

  1. 라우터의 인터페이스에, 들어오는 패킷을 위에서부터 차례로 검사하는 ACL을 설정했다. 규칙 1은 '목적지 10.0.0.10의 TCP 443번 포트로 가는 통신을 허용', 규칙 2는 '출발지가 192.168.1.0/24인 통신을 모두 거부', 규칙 3은 '출발지가 192.168.0.0/16이고 목적지가 TCP 80번 포트인 통신을 허용'이며, 그 밖의 규칙은 없다. ㄱ '192.168.1.5에서 10.0.0.10의 TCP 443번 포트로', ㄴ '192.168.1.5에서 10.0.0.20의 TCP 80번 포트로', ㄷ '192.168.2.5에서 10.0.0.20의 TCP 80번 포트로', ㄹ '192.168.2.5에서 10.0.0.20의 TCP 22번 포트로'의 4개 패킷 중 통과할 수 있는 것을 모두 고른 것은?

관련 용어

라우터(Router) 패킷(Packet) TCP(전송 제어 프로토콜) 경로 요약(Route Summarization) 경로 MTU 탐색(Path MTU Discovery) 관리 거리(Administrative Distance) 롱기스트 매치(최장 일치) 링크 어그리게이션(Link Aggregation) 브로드캐스트 도메인(Broadcast Domain) 스패닝 트리 프로토콜(STP)

용어집으로 돌아가기