htaccess를 사용하여 특정 IP 주소 또는 특정 도메인 차단하기

불량 사용자나 스패머, 사이트 글을 복제하는 사용자 혹은 특정 웹사이트에서 불필요하게 사이트로 유입되는 경우 .htaccess를 통해 IP나 유입 사이트 주소로 차단할 수 있습니다. cPanel 환경을 제공하는 웹호스팅을 이용하는 경우 IP Blocker 등의 툴을 사용하여 IP 주소를 차단하는 것이 가능합니다. 워드프레스에서는 보안 플러그인에서 IP 주소를 차단하는 기능을 제공하기도 합니다.

[ 이 글은 최신 정보를 추가하여 재발행되었습니다. ]

htaccess를 사용하여 특정 IP 주소 또는 특정 도메인 차단하기

특정 IP 주소/도메인 차단하기

특정 IP 주소나 도메인으로부터 사이트 접근을 차단하고 싶은 경우 FTP 클라이언트를 사용하여 FTP에 접속한 후에 .htaccess 파일을 열고 아래와 같이 편집하도록 합니다.  .htaccess 파일이 없는 경우 루트에 하나를 만들도록 합니다. (FTP 사용법은 이 글을 참고해보시기 바랍니다.)

다음 형식을 사용하면 192.168.1.25, 192.168.1.26, example.com을 제외한 모든 IP 및 도메인이 허용됩니다. (즉, 별도로 지정된 IP 주소나 사이만 차단됨).

# allow all except those indicated here
<Files *>
order allow,deny
allow from all
deny from 192.168.1.25
deny from 192.168.1.26
deny from .*example\.com.*
</Files>

특정 IP 주소/도메인만 허용하기

다음 스크립트를  .htaccess에 입력하여 지정된 IP와 도메인을 제외한 모든 IP와 도메인을 차단할 수 있습니다.

# Deny access to everyone, except those listed here:
<Files *>
order deny,allow
deny from all
deny from 192.168.1.21
deny from 192.168.1.22
allow from .*example\.com.*
</Files>

IP 주소 범위를 차단하려는 경우 다음 글을 참고해보세요.

특정 참조 도메인으로부터 유입되는 방문자 차단하기

참조 도메인(Referring domain)별로 원치 않는 방문자를 차단하려면 아래와 같은 스크립트를 사용합니다. (domain1domain2를 차단할 참조 도메인으로 대체하도록 합니다.)

# block visitors referred from indicated domains
RewriteEngine on
RewriteCond %{HTTP_REFERER} domain01\.com [NC,OR]
RewriteCond %{HTTP_REFERER} domain02\.com [NC]
RewriteRule .* - [F]
# Source: mediatemple.net

cPanel을 제공하는 웹호스팅(예: 블루호스트)에서 IP 주소 차단 설정하기

Bluehost 등 cPanel을 제공하는 웹호스팅을 이용하는 경우 cPanel에서 IP 주소로 사용자 접속을 차단하는 툴이 제공됩니다. 블루호스트에서는 IP Blocker 툴을 사용할 수 있습니다.

블루호스트 cPanel IP Blocker 툴을 사용하여 IP 주소 차단하기

IP 주소를 하나씩 차단할 때에는 192.168.0.1과 같이 IP Address or Domain 필드에 추가하면 됩니다. IP 주소 범위로 차단하고 싶은 경우 다음과 같은 형식으로 입력할 수 있습니다.

192.168.0.1-192.168.0.40
192.168.0.1-40
192.

192.만 입력하면 192.으로 시작하는 모든 IP 주소(192...*)가 차단됩니다.

워드프레스 보안 플러그인에서 IP 주소 차단하기

워드프레스 사이트를 운영하는 경우 Wordfence나 iThemes Security와 같은 보안 플러그인을 통해 IP 주소를 차단하는 것이 가능합니다. 예를 들어, iThemes Security를 사용하는 경우 알림판 > Security > Dashboard로 이동하여 Banned Users 섹션에서 차단할 IP 주소를 추가할 수 있습니다.

워드프레스 보안 플러그인에서 IP 주소 차단하기

Add Ban 섹션에서 Host에 IP 주소를 입력하고 Notes 필드에 참고 사항을 입력한 다음 Save(저장)를 클릭하면 추가됩니다.

워드프레스 스팸 IP 차단

Block spams in WordPress

워드프레스에서 스팸 때문에 고민하는 경우 Akismet이나 IP Blacklist Cloud 등의 플러그인을 사용할 수 있습니다.

업데이트: IP Blacklist Cloud는 1년 이상 업데이트가 안 되고 있기 때문에 사용하지 않는 것이 바람직합니다. Akismet는 500만 개가 넘는 워드프레스 사이트에 설치되어 사용되고 있는 인기 스팸 차단 플러그인입니다. 이 플러그인을 사용하면 효과적으로 스팸을 차단할 수 있습니다.

참고:

일부 글에 제휴 링크가 포함될 수 있으며 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

18개 댓글

  1. 안녕하세요.
    다음의 .htaccess 파일을 운용중에 있습니다.

    # BEGIN WordPress
    # "BEGIN WordPress"와 "END WordPress" 사이의 지시문(줄)은
    # 동적으로 생성되며 워드프레스 필터를 통해서만 수정해야합니다.
    # 이 표시 사이의 지시문을 변경하면 덮어쓰게 됩니다.

    RewriteEngine On
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    # add a trailing slash to /wp-admin
    RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
    RewriteRule ^(.*\.php)$ $1 [L]
    RewriteRule . index.php [L]

    # END WordPress
    # Wordfence WAF

    Require all denied

    Order deny,allow
    Deny from all

    # END Wordfence WAF

    unionmedical.odenwar.net 의 하위 도메인에만 특정아이피(2개 이상)을 허용 하고 싶은데요.
    이경우 어떻게 해야 할까요?

  2. 휴 ... 드디어 됩니다. 다른사람들이 알려준 소스는 안되던데
    그사람들 전부 사짜인가 봅니다.
    페이팔 계정있으시면 후원드리겠습니다.

  3. 특정 도메인을 특정아이피로만 접속가능하게 하는 명령어가 있나요 ?
    한호스팅에 4개의 도메인이 연결되어 있다고 할때 이중 1개의 도메인만
    지정된 아이피로만 접속가능하게 하는 방법
    있나요 ?

    1. 안녕하세요, 박상길님.

      이 부분에 대해서는 정확하지 않지만 다음 글을 참고하여 응용하면 될 것도 같습니다.

      https://webmasters.stackexchange.com/questions/114014/deny-access-to-one-of-two-sites-using-the-same-htaccess

      예시:

      <If "%{HTTP_HOST} = 'www.example.com'">
      order deny,allow
      allow from 31.24.232.14
      allow from 127.0.0.0
      allow from 192.168.0.0
      deny from all
      </If>

      링크된 문서를 자세히 한 번 읽어보시기 바랍니다.

      1. 알려주신 예시와 링크를 따라가서 해본결과
        작동이 안되네요 ^^ 차단해야 하는데 전부 접속됩니다.
        그런데 아래 소스가 그나마 차단이 완벽한데요
        아이피를 입력했는데두 무조건 차단만 합니다. 뭐가 잘못되었나요 ?
        RewriteEngine On

        RewriteCond %{HTTP_HOST} ^(?:www\.)?subdomain\.com$ [NC]
        RewriteCond ${ipmap:%{REMOTE_ADDR}} !^(111\.111\.111\.1|11\.111\.|10\.|1\.2\.3\.4)$
        RewriteRule ^ - [F]

      2. 다음과 같은 형식으로 사용해야 하는 것 같습니다.

        RewriteEngine On
        RewriteCond %{HTTP_HOST} ^(?:www\.)?subdomain\.com$ [NC]
        RewriteCond %{REMOTE_ADDR} !^(127\.0\.0\.1|192\.168\.|10\.|1\.2\.3\.4)$
        RewriteRule ^ - [F]

      1. 글에 언급한 내용처럼 deny from .*example.com.*

        그냥 하나의 도메인을 차단해봤어요. 서버 여러곳에 여러대 두고 테스트하는중이라....

      2. "특정 참조 도메인으로부터 유입되는 방문자 차단하기"의 코드가 아마 원하는 용도의 코드일 것 같습니다.

        코드 자체는 틀린 것이 없습니다. (https://www.quora.com/How-do-I-block-a-whole-domain-in-htaccess 참고해보세요.) 하지만 도메인을 차단하는 코드는 원하는 대로 작동하지 않을 것 같습니다. 이 부분은 테스트가 필요할 것 같은데요. 가령 어떤 사이트에서 내 사이트의 이미지 URL을 링크한다면 해당 사이트에서 내 사이트의 URL에 접근하려고 시도할 것입니다. 그럴 때 차단하는 코드가 아닐까 생각되네요.

  4. 카페24에 아이피 밑에 차단하는 버튼이 있더라구요..^^
    제가 왜 이제 발견했는지..ㅋㅋ
    그냥 아..~~ 트래픽이 많구나 이런 생각을 가졌데 그것이 아니었내요..!!

  5. 저는 오늘 특정 ip를 차단 했습니다.
    호스팅에서 하루에 한번은 트래픽을 보는데 유독 새벽1시에 특정 아이피 1개가 트래픽 용량 2.5G중 2.0G를 잡아 먹네요..
    내일을 봐야 알 수 있을 듯 해요..!!

    1. 2G를 잡아 먹으면 굉장한 것인데요.
      카페24에서 그런 공격을 차단하지는 못하는가 보네요.
      혹시나 싶어 사용 중인 호스팅의 트래픽을 확인해보니 약정한 것보다 1/10 정도밖에 사용하고 있지 않네요.

댓글 남기기

* 이메일 정보는 공개되지 않습니다.