[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 /)에 적용하는 것을 예로 듭니다.

📝 설정 코드 예시

Apache
<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. 설정 파일 저장 및 적용

설정을 변경한 후에는 변경 사항을 적용하기 위해 아파치 서비스를 반드시 재시작해야 합니다.

이 방법을 통해 아파치 2.4 환경에서 특정 IP 또는 IP 대역을 효과적이고 안전하게 차단할 수 있습니다. 설정 후에는 차단 대상 IP로 접속을 시도하여 403 Forbidden 응답이 뜨는지 확인해 보세요!

댓글

이 블로그의 인기 게시물

[문서] excel 체크박스 삭제

[DB] MySQL 백업 / 복원

[DB] MS SQL에서 웹으로 데이터 보내기(Sending HTTP Requests)