네트워크 공부 & 실습/네트워크 이론

[Network] ACL 개념과 적용법 (전방십자인대 아님)

강_토발즈 2025. 7. 23. 20:31

 

https://burlingtoncountyortho.com/blog/what-is-an-acl-injury/

 

 

“ACL” 하면 많은 사람들이 무릎 전방십자인대(Anterior Cruciate Ligament) 를 먼저 떠올린다. 나 역시 양 쪽 무릎 전방십자인대 재건술을 했기 때문에, ACL 을 듣자마자 친숙하면서도 이질감이 들었다. 그런데 네트워크 분야에서 ACL(Access Control List)은 전혀 다른 의미를 가지고 있었다.
이번 포스팅에서는 네트워크 ACL이 무엇인지 알아보고, 리눅스 서버에서 어떻게 구현할 수 있는지 정리해보자.

 

1. ACL이란?

ACL(Access Control List)은 말 그대로 접근을 제어하는 리스트.  쉽게 말해, “누가 내 서버에 들어올 수 있는지(허용), 들어올 수 없는지(차단)”를 정리한 규칙 집합이다.

 

 

2. 네트워크에서 ACL의 역할

  1. 허용(Allow)과 거부(Deny) 규칙 정의
    • 예: 192.168.0.0/24 대역만 SSH 접속 허용
  2. 보안 계층 강화
    • 외부 공격이나 불필요한 접근 차단.
  3. 트래픽 관리
    • 방화벽이나 라우터에서 특정 트래픽만 통과시키는 필터 역할.

 

3. 리눅스에서 ACL 구현 방법

리눅스 서버에서 ACL은 다양한 방법으로 구현할 수 있다.

 

 

3-1. 방화벽으로 구현하기 : iptables / nftables

 

커널 레벨에서 패킷을 차단하거나 허용 (예. SSH 접속을 특정 IP 대역만 허용하는 것으로 구현한다.)

# 192.168.0.0/24 대역만 SSH 허용 
sudo iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT 


# 나머지 IP는 차단 
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
 

nftables를 사용하면 관리가 더 쉽고 현대적인 문법을 지원한다고 한다.

 

3-2. SSH 자체 제어 (sshd_config)

 

/etc/ssh/sshd_config 문서를 편집, 저장하여 IP 대역별 허용 규칙을 설정할 수 있다.

# 허용 대역, user 설정하기

Match Address 192.168.0.0/24 
    AllowUsers admin


# 작성 후 설정 적용하기

sudo systemctl restart ssh

 

3-3. TCP Wrappers (hosts.allow / hosts.deny)

 

/etc/hosts.allow 파일을 다음과 같이 작성하고 저장한다.

sshd: 192.168.0.*
 
 

/etc/hosts.deny 파일을 다음과 같이 작성하고 저장한다.

sshd: ALL
 

 

4. ACL의 활용

  • 기본 정책을 거부(Deny)로 설정하고 필요한 것만 허용한다. 즉 모든 접근에 대해서는 기본적으로 접근을 막고, 접근을 허용한 사용자와 접근을 허용한 IP 대역에서만 서버에 접근할 수 있도록 하는 것이 ACL 사용의 가장 기본적인 방법이다.
  • VPN + ACL 조합으로 보안성을 한층 강화할 수 있다.
  • 한가지 설정만 하는게 아니라 방화벽, SSH 설정, TCP Wrappers 을 함께 쓰면 3중 방어 가능하다.

 

 

5. 마무리

전방십자인대(ACL)가 무릎을 지켜주는 것처럼, 네트워크 ACL은 서버를 지켜주는 기본적인 기능이라고 볼 수 있다. 아예 다른 단어이자 차원이 다른 개념이지만 뭔가를 보호한다는 맥락으로 통한다는게 어이가 없다. 얼른 ACL 이 회복되서 운동도 더 하고 싶고 ACL 개념도 숙지하고 활용하고 싶다.