
“ACL” 하면 많은 사람들이 무릎 전방십자인대(Anterior Cruciate Ligament) 를 먼저 떠올린다. 나 역시 양 쪽 무릎 전방십자인대 재건술을 했기 때문에, ACL 을 듣자마자 친숙하면서도 이질감이 들었다. 그런데 네트워크 분야에서 ACL(Access Control List)은 전혀 다른 의미를 가지고 있었다.
이번 포스팅에서는 네트워크 ACL이 무엇인지 알아보고, 리눅스 서버에서 어떻게 구현할 수 있는지 정리해보자.
1. ACL이란?
ACL(Access Control List)은 말 그대로 접근을 제어하는 리스트. 쉽게 말해, “누가 내 서버에 들어올 수 있는지(허용), 들어올 수 없는지(차단)”를 정리한 규칙 집합이다.
2. 네트워크에서 ACL의 역할
- 허용(Allow)과 거부(Deny) 규칙 정의
- 예: 192.168.0.0/24 대역만 SSH 접속 허용
- 보안 계층 강화
- 외부 공격이나 불필요한 접근 차단.
- 트래픽 관리
- 방화벽이나 라우터에서 특정 트래픽만 통과시키는 필터 역할.
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 개념도 숙지하고 활용하고 싶다.
'네트워크 공부 & 실습 > 네트워크 이론' 카테고리의 다른 글
| [Network] SNMP v2 -> SNMP v3 개념 (2) | 2025.07.22 |
|---|---|
| [Network] Ubuntu에서 ICMP(Ping) 차단하기 (1) | 2025.07.10 |
| [Network] IPCC 란 무엇인가? (3) | 2025.06.25 |
| [Network] VPN 과 외부 네트워크가 같은 대역의 (공인) IP 를 사용한다면? (1) | 2025.06.24 |
| [Network] Network Bonding 이란? - 개념편- (0) | 2025.06.17 |