본문 바로가기
IT적응기

기초 보안의 ACL(Access Control List)로 특정 IP 차단 설정법

by IT적응기 2026. 4. 16.

보안의 기초 ACL(Access Control List)로 특정 IP 차단 설정 참고 이미지
보안의 기초 ACL(Access Control List)로 특정 IP 차단 설정하기

인터넷 세상에는 좋은 사람만 있는 게 아니에요. 우리 집 대문처럼, 서버에도 "이 사람은 들어오면 안 돼!"라고 막아주는 장치가 필요합니다. 그게 바로 ACL(Access Control List), 즉 접근 제어 목록이에요. 이름은 어렵지만, 쉽게 말하면 "출입 허가 명단"이라고 생각하면 돼요. 명단에 없거나 차단된 IP는 들어올 수 없는 거죠.


1. ACL이란 무엇인가요? — 출입 명단의 정체

ACL은 네트워크 장비(라우터, 스위치, 방화벽 등)나 운영체제에서 "어떤 IP 주소가 들어올 수 있고, 어떤 IP는 막을 것인지"를 규칙으로 정해둔 목록입니다. 학교 급식실 명단처럼, 이름이 없으면 못 들어가는 것처럼요.

ACL에는 크게 두 가지 종류가 있어요.

  • 표준 ACL(Standard ACL) : 출발지 IP 주소만 보고 차단 여부를 결정해요. 간단하지만 유연성이 낮아요.
  • 확장 ACL(Extended ACL) : 출발지·목적지 IP, 포트 번호, 프로토콜까지 함께 보고 판단해요. 훨씬 세밀하게 제어할 수 있어요.

ACL은 패킷(데이터 조각)이 네트워크 장비를 통과할 때, 위에서부터 규칙을 하나씩 비교하다가 일치하는 규칙을 만나면 그 규칙대로 허용(permit)하거나 거부(deny)합니다. 가장 중요한 점은, ACL 맨 마지막에는 항상 "나머지 전부 차단"이라는 묵시적 규칙(implicit deny all)이 숨어 있다는 거예요. 따라서 허용할 IP를 빠뜨리면 본인도 접속 못 할 수 있어요!

저는 처음 ACL을 배울 때 이 묵시적 차단 규칙을 몰라서 큰일을 겪었어요. 테스트 서버에서 특정 IP만 차단하려고 ACL을 만들었는데, 허용 규칙을 추가하는 걸 깜빡했거든요. 결국 외부에서 서버로 들어오는 모든 연결이 끊겼고, 팀 전체가 30분 동안 접속을 못 했어요. 당시 팀장님의 전화를 받고 얼마나 식은땀이 났는지 모릅니다. 그날 이후로 저는 ACL 작업 전에 항상 "permit any" 규칙을 먼저 정리해두는 습관이 생겼어요. 이처럼 ACL은 순서가 생명이에요. 규칙 하나를 빠뜨리거나 순서를 잘못 배치하면 의도치 않은 장애가 발생합니다. 실제로 많은 네트워크 장애 사례가 ACL 설정 실수에서 비롯된다는 보고도 있어요. 그래서 저는 ACL을 설정하기 전에 반드시 종이에 먼저 규칙 흐름을 그려보는 걸 추천해요. 처음엔 귀찮아 보여도, 나중에 장애를 막아주는 보험이 되거든요. 또한 ACL은 단순히 "막는 기술"이 아니라 네트워크를 이해하는 첫걸음이라고 생각해요. 보안은 복잡한 최신 기술만이 아니라 이런 기본 개념을 얼마나 정확하게 이해하느냐에서 시작되니까요.


2. Cisco 라우터에서 ACL로 특정 IP 차단하기 — 가장 기본적인 방법

가장 교육 현장에서 많이 쓰이는 예시는 Cisco IOS 라우터를 이용한 ACL 설정입니다. 실무나 자격증 시험(CCNA 등)에서도 자주 나오는 내용이에요.

표준 ACL로 특정 IP 차단하는 예시

! 1단계: 표준 ACL 번호 지정 및 규칙 작성
Router(config)# access-list 10 deny 192.168.1.100 0.0.0.0
Router(config)# access-list 10 permit any

! 2단계: 인터페이스에 ACL 적용 (인바운드 방향)
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip access-group 10 in

위 코드를 순서대로 설명하면:

  • access-list 10 deny 192.168.1.100 0.0.0.0 : IP 주소 192.168.1.100에서 오는 패킷을 차단해요. 0.0.0.0은 와일드카드 마스크로, "이 IP 정확히 하나만"을 의미해요.
  • access-list 10 permit any : 나머지 모든 IP는 허용해요. 이걸 빠뜨리면 모두 차단돼요!
  • ip access-group 10 in : 만든 ACL을 인터페이스에 연결하고, 들어오는(inbound) 트래픽에 적용해요.

확인 명령어

Router# show access-lists
Router# show ip interface GigabitEthernet0/0

이 명령어로 ACL이 제대로 적용됐는지 확인할 수 있어요. 실제로 저는 ACL을 설정하고 나서 반드시 이 확인 과정을 거치는데, 생각보다 많은 분들이 이 과정을 건너뛰다가 나중에 "왜 안 막히지?"라며 당황하는 경우를 봤어요. 특히 인바운드(in)와 아웃바운드(out) 방향을 헷갈려서 반대로 적용하는 실수가 정말 많아요. 저도 초보 시절에 out으로 걸어야 할 ACL을 in으로 설정해서 엉뚱한 트래픽이 차단된 경험이 있어요. 현장에서는 이런 실수 하나가 서비스 중단으로 이어질 수 있어서, 테스트 환경에서 충분히 연습하는 게 정말 중요합니다. 저는 Packet Tracer라는 무료 시뮬레이터를 적극 추천해요. 실제 장비 없이도 ACL을 마음껏 실험해볼 수 있어서, 처음 배우는 학생들에게 정말 좋은 도구예요. 또 한 가지, ACL 번호 체계도 헷갈릴 수 있는데요. 표준 ACL은 1~99번, 확장 ACL은 100~199번이라는 점도 꼭 기억하세요. 이름으로 ACL을 만드는 Named ACL 방식도 있는데, 가독성이 훨씬 좋아서 실무에서는 오히려 이쪽이 더 많이 쓰여요.


3. Linux(iptables/nftables)에서 특정 IP 차단하기 — 서버 운영자 필수

실제 서버를 운영할 때는 Cisco 장비보다 리눅스 서버에서 직접 IP를 차단하는 경우가 훨씬 많아요. 리눅스에서는 iptables(구버전) 또는 nftables(신버전)를 사용해요.

iptables로 특정 IP 차단

# 특정 IP(예: 203.0.113.50)에서 오는 모든 접근 차단
sudo iptables -A INPUT -s 203.0.113.50 -j DROP

# 특정 IP에서 특정 포트(예: 80번)만 차단
sudo iptables -A INPUT -s 203.0.113.50 -p tcp --dport 80 -j DROP

# 설정된 규칙 확인
sudo iptables -L -n -v

# 규칙 저장 (재부팅 후에도 유지)
sudo iptables-save | sudo tee /etc/iptables/rules.v4

nftables로 특정 IP 차단 (Ubuntu 20.04 이후 권장)

# nftables 규칙 추가
sudo nft add rule inet filter input ip saddr 203.0.113.50 drop

# 규칙 확인
sudo nft list ruleset

ufw(Ubuntu 방화벽)로 간단히 차단

# IP 차단
sudo ufw deny from 203.0.113.50 to any

# 상태 확인
sudo ufw status verbose

ufw는 iptables를 좀 더 쉽게 쓸 수 있게 만든 도구로, 초보자에게 특히 추천해요. 저는 처음 서버를 운영할 때 공격성 트래픽을 보내는 IP를 하나씩 직접 차단하면서 iptables를 배웠어요. 서버 로그를 보다 보면 외국에서 수백 번씩 로그인 시도를 하는 IP가 심심치 않게 보여요. 그걸 차단할 때마다 묘한 뿌듯함이 있었는데, 나중에 알고 보니 그런 공격은 Fail2ban 같은 자동화 도구로 처리하는 게 훨씬 효율적이더라고요. 사실 IP를 하나씩 수동으로 차단하는 건 금방 한계가 와요. 공격자들은 IP를 바꿔가며 시도하거든요. 그래서 저는 iptables와 함께 Fail2ban을 같이 구성해서 일정 횟수 이상 실패한 IP는 자동으로 차단되도록 설정했어요. 이 조합이 소규모 서버 보안의 기본 중의 기본이라고 생각해요. 또 한 가지, iptables 설정은 기본적으로 재부팅하면 초기화된다는 점을 꼭 기억하세요. 저도 처음에 이걸 몰라서 며칠 동안 설정했던 규칙이 서버 재시작 한 번에 날아간 경험이 있어요. 꼭 저장까지 완료해야 진짜 설정이 완성됩니다.


4. 클라우드 환경(AWS, GCP, Azure)에서 ACL로 IP 차단하기 — 현대적인 방법

요즘은 서버를 직접 사는 게 아니라 AWS, GCP, Azure 같은 클라우드에서 빌려 쓰는 경우가 많아요. 클라우드에서도 ACL 개념은 그대로 쓰이지만, 이름이 조금 달라요.

AWS에서의 IP 차단

  • 보안 그룹(Security Group) : 인스턴스(서버) 단위로 적용하는 방화벽이에요. 허용 규칙만 추가할 수 있고, 차단은 명시적으로 추가하는 게 아니라 허용 안 된 건 자동으로 차단돼요.
  • 네트워크 ACL(Network ACL) : 서브넷 단위로 적용되는 더 넓은 범위의 방화벽이에요. 허용과 거부 모두 명시적으로 설정할 수 있어요.
# AWS CLI로 특정 IP를 보안 그룹에서 차단 (인바운드 규칙 제거)
aws ec2 revoke-security-group-ingress \
  --group-id sg-xxxxxxxx \
  --protocol tcp \
  --port 80 \
  --cidr 203.0.113.50/32

# AWS Network ACL에 차단 규칙 추가
aws ec2 create-network-acl-entry \
  --network-acl-id acl-xxxxxxxx \
  --rule-number 100 \
  --protocol -1 \
  --rule-action deny \
  --cidr-block 203.0.113.50/32 \
  --ingress

클라우드에서는 GUI(웹 콘솔)로도 쉽게 설정할 수 있어서 처음 배우는 분들에게 진입 장벽이 낮아요. AWS 콘솔에서 VPC → 네트워크 ACL → 인바운드 규칙 편집 순서로 들어가면 클릭 몇 번으로 IP 차단이 가능합니다. 클라우드 보안 설정을 처음 해봤을 때, 저는 보안 그룹과 네트워크 ACL의 차이를 제대로 이해하지 못해서 양쪽에 중복으로 규칙을 걸어서 오히려 설정이 꼬이는 경험을 했어요. 보안 그룹은 "상태 저장(Stateful)" 방식이라 한 방향만 허용해도 응답 트래픽이 자동으로 허용되지만, 네트워크 ACL은 "상태 비저장(Stateless)" 방식이라 인바운드와 아웃바운드 규칙을 따로 설정해야 해요. 이 차이를 모르면 연결이 되다가 안 되다가 하는 이상한 상황이 생겨요. 클라우드 환경에서는 이런 개념들이 더 세분화되어 있어서, 단순히 명령어만 외우는 것보다 동작 원리를 이해하는 게 훨씬 중요하다고 느꼈어요. 그리고 클라우드에서는 실수로 잘못된 규칙을 적용해도 콘솔에서 바로 되돌릴 수 있다는 점이 장점인 것 같아요. 실제 장비에서는 콘솔 접근이 없으면 복구가 매우 어렵거든요.


5. ACL 설정 시 주의사항과 실전 팁 — 실수를 줄이는 방법

ACL을 설정할 때 반드시 알아야 할 핵심 주의사항들을 정리했어요.

  • 규칙 순서가 전부다 : ACL은 위에서 아래로 순서대로 비교해요. 더 구체적인 규칙(특정 IP)을 더 넓은 규칙(전체 허용) 앞에 써야 해요.
  • 묵시적 거부(Implicit Deny All)를 항상 기억하라 : 허용 규칙을 빠뜨리면 모두 차단돼요.
  • 테스트는 반드시 운영 전에 : 실제 서비스 서버에 바로 적용하지 말고, 테스트 환경에서 먼저 검증하세요.
  • 백업은 필수 : 기존 ACL 설정을 항상 백업해두고 작업하세요.
  • 자신의 IP를 먼저 확인하라 : 차단 규칙을 잘못 적용하면 본인도 접속 못 할 수 있어요. 본인 IP의 허용 규칙은 항상 최우선으로 두세요.

IP 차단 전 확인 체크리스트

1. 차단할 IP가 정말 악성인지 확인 (로그 재검토)
2. 허용해야 할 IP 목록 정리
3. 현재 ACL 설정 백업
4. 테스트 환경에서 검증
5. 운영 환경 적용 후 즉시 접속 테스트
6. 모니터링 설정 확인

저는 한 번은 악성 트래픽을 차단하겠다고 급하게 ACL을 수정하다가 회사 VPN IP 대역까지 같이 차단해버린 적이 있어요. 그 결과 재택근무 중인 팀원 전원이 회사 서버에 접속을 못 하게 됐고, 긴급 복구 작업으로 밤을 지새운 적이 있어요. 그때 깨달은 건, "빠른 대응"보다 "정확한 대응"이 훨씬 중요하다는 거예요. 보안 사고가 발생하면 심리적으로 빨리 처리해야 한다는 압박감을 느끼게 되는데, 그 압박감이 오히려 더 큰 실수를 만들 수 있어요. 저는 지금도 ACL을 건드릴 때는 반드시 동료와 함께 "두 눈 검수(four-eyes principle)"를 하는 것을 원칙으로 삼고 있어요. 또한 단순히 IP 하나를 차단하는 것으로 보안이 완성됐다고 생각하면 큰 오산이에요. ACL은 보안의 여러 층(Layer) 중 하나일 뿐이에요. 방화벽, IDS/IPS, 로그 모니터링 등과 함께 사용할 때 비로소 의미 있는 보안이 됩니다. 기초부터 제대로 배우는 것, 그것이 결국 보안의 가장 강한 무기가 된다고 저는 믿어요.


참고 출처


소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 깜짝,황금이 아빠 IT적응기

서치어드바이저