[apache] apache2.4 특정 IP 차단 방법
아파치 2.4에서 특정 IP를 차단하는 가장 깔끔한 방법
웹 서버 관리 시 특정 IP 주소로부터의 접근을 차단해야 하는 경우가 종종 발생합니다. 예를 들어, 보안상의 이유로 특정 공격 IP를 막거나, 불필요한 트래픽을 유발하는 IP를 차단할 때 유용합니다.
아파치 2.4 버전부터는 기존의 Order
, Allow
, Deny
지시어 대신 Require
지시어를 기반으로 한 새로운 접근 제어 방식이 도입되었습니다. 이 글에서는 Require not ip
를 사용하여 특정 IP를 차단하는 방법을 VirtualHost 설정 파일 기준으로 설명합니다.
1. 설정 파일 확인 및 수정
주로 사용하는 VirtualHost 설정 파일(.conf
확장자, 예: 000-default.conf
또는 도메인명.conf)이나, 전역 설정을 위한 httpd.conf
파일을 수정합니다.
차단할 IP를 적용할 <VirtualHost>
블록 내부에 <Location>
태그를 사용하여 접근 제어 설정을 추가합니다. 여기서는 웹사이트의 전체 경로(Location /
)에 적용하는 것을 예로 듭니다.
📝 설정 코드 예시
<VirtualHost *:80>
ServerAdmin XXXXXXX
DocumentRoot XXXXXXX
ErrorLog XXXXXXX
CustomLog XXXXXXX
# ↓↓↓ 특정 IP 차단 설정 시작 ↓↓↓
<Location />
<RequireAll>
# 1. 일단 모든 접근을 허용합니다. (기본적으로 모두 열어둠)
Require all granted
# 2. 차단할 특정 IP 주소를 지정합니다.
Require not ip XX.XX.XXX.XXX
# 만약 여러 개의 IP를 차단하려면 Require not ip를 여러 줄 추가합니다.
# Require not ip YYY.YYY.YYY.YYY
# IP 대역을 차단하려면 서브넷 마스크(CIDR)를 사용하거나 부분 IP를 지정합니다.
# 예: Require not ip 192.168.1.0/24 (192.168.1.xxx 대역 전체 차단)
</RequireAll>
</Location>
# ↑↑↑ 특정 IP 차단 설정 종료 ↑↑↑
</VirtualHost>
핵심 지시어 설명:
<RequireAll>
: 이 블록 안의 모든Require
조건이 **참(True)**이어야 접근이 허용됩니다. 논리적으로 AND 조건의 역할을 합니다.Require all granted
: 기본적으로 모든 요청에 대해 접근을 허용합니다. (이 조건이 없으면 기본적으로 모두 차단될 수 있습니다.)Require not ip XX.XX.XXX.XXX
: 지정된 IP 주소 XX.XX.XXX.XXX로부터의 접근이 아니어야(not) 접근을 허용합니다. 이 두 지시어를<RequireAll>
로 묶으면 **"모두 허용하지만, 특정 IP는 제외(차단)"**라는 로직이 완성됩니다.
2. 설정 파일 저장 및 적용
설정을 변경한 후에는 변경 사항을 적용하기 위해 아파치 서비스를 반드시 재시작해야 합니다.
댓글
댓글 쓰기