워드프레스를 이용하는 대부분의 사용자가 wp-login.php 로그인 페이지가 아무런 제어 없이 노출되고 있어 보안에 취약할 수가 있다.

이번 포스팅에서는 wp-admin , wp-login.php 경로의 페이지를 허용된 IP에서만 접근이 가능 하도록 하는 여러가지 방법 중 가장 간단한 방법을 소개하고자 한다.

Apachec 를 이용하여 웹서버를 운용중인 사용자는 워드프레스의 DocumentRoot에 있는 .htaccess 파일 내용 가장 아래에 다음과 같이 설정하면 된다.
아이피대역으로 설정할 수도 있고 단일 아이피만으로도 설정할 수 있다.

<Files wp-login.php>
Require all denied
Require ip 허용아이피대역1/24
Require ip 허용아이피대역2/24
Require ip 허용단일아이피1/32
Require ip 허용단일아이피2/32
</Files>

Nginx 를 이용하여 웹서버를 운용중인 사용자는 nginx 서버 설정 conf 파일 내용 중 server { 항목에 다음과 같이 설정하면 된다.

server {
// 기타 설정 생략

          location ~ /wp-login.php* {
                   // 기본 옵션내용 생략

                   satisfy any;
                   allow 허용아이피대역1/24;
                   allow 허용아이피대역2/24;
                   allow 허용단일아이피1;
                   allow 허용단일아이피2;
                   deny all;
           }
}

 

워드프레스로 블로그를 운영중인 많은 분들이 블로그의 로딩 속도를 개선하기 위해 CDN과 연동하여 캐싱 기능을 이용하고 있다.

만약 CloudFlare를 이용하고 있다면 WAF(Web Application Firewall) 기능을 통해 워드프레스의 웹관리자 페이지 wp-admin , wp-login.php로 접근하는 트래픽을 차단 할 수 있다.

CloudFlard에서 제공하고 있는 기능에 대한 트래픽 시퀀스는 다음과 같기 때문에 IP Access 규칙에서 허용할 아이피를 등록하고 WAF 에서 wp-admin , wp-login.php URI 를 차단하면 된다.

1. 보안 섹션의 “WAF” 클릭

2. WAF에서 “사용자 지정 규칙” 클릭 후 “+ 규칙 생성” 클릭

3. 규칙 이름을 임의의 이름으로 설정하고 규칙에 필드(URI) , 연산자(다음을 포함), 값(/wp-admin , /wp-login.php), 작업 선택(차단) 으로 설정 후 저장
wp-admin, wp-login.php 규칙 설정 시 And가 아닌 Or로 추가하여 설정

4. WAF에서 도구 클릭 후 “IP, IP 범위, 국가 이름 또는 ASN”에 단일아이피 또는 대역을 적용 시 키보드의 엔터키를 꼭 눌러 입력이 되도록 하자, 아이피를 입력하고 엔터키를 누르지 않을 경우 추가 버튼 클릭 시 오류 발생으로 적용되지 않는다.

만약 해외 아이피 접근만 차단하고 싶다면 아래와 같이 “Korea, South”만 허용으로 설정하면 된다.

5. 이 후 허용되지 않는 아이피에서 wp-admin, wp-login.php로 접근 시 아래와 같이 차단 페이지로 리디렉션 된다.

 

해외 아이피만 차단 후 국내 아이피에서 불법적인 접근이 불안하다면 워드프레스의 2FA(2단계 인증) 플러그인을 사용하면 마음이 그나마 한결 가벼워진다.
플러그인을 최소화하는게 좋긴 하지만 간단하게 Google 2FA 인증을 적용할 수 있어 편리하며, 2FA 만을 이용하기에는 무료 버전으로도 충분하다