INIDOG
wordpress-admin-panel-card-square

워드프레스 wp-admin 폴더 외부 접속 제한하기

wordpress-admin-panel-card

워드프레스 wp-admin 폴더 외부 접근 차단


워드프레스를 사용하게 되면 /wp-admin 주소로 관리자 대시보드에 접근할 수 있게 됩니다.

그러나 이러한 공개적 주소를 사용하여 외부 공격자가 wp-admin 주소에 무단으로 접속하여 무차별 대입 공격(임의 패스워드 입력을 시도함으로서 관리자 권한을 취득하려는 공격) 시도를 할 수 있습니다.

따라서 관리자 페이지를 특정한 네트워크에서 접속할 수 있게 하거나 페이지 주소 자체를 변경하여 외부에서의 접근이 쉽지 않도록 예방해야 합니다.

이 포스트에서는 워드프레스 관리자 페이지를 차단하는 여러가지 방법에 대해 기술하였습니다.

 

 

플러그인 사용

워드프레스 플러그인을 사용하면 wp-admin 접속을 직접적으로 하지 못하도록 방지할 수 있습니다.

대표적으로 Hide My WP 플러그인이 있습니다. wp-admin 디렉토리와 wp-login.php 파일에 대한 접근 경로를 변경할 수 있는 이점이 있습니다.

Hide My WP – WordPress Security Plugin

wordpress-hide-my-wp-plugin

 

 

서버에서 직접 수정 (HTTPD)

HTTPD(Apache 2)를 사용하여 웹 서비스를 구동 중인 경우 .htaccess 파일을 수정하여 쉽게 액세스 설정을 변경할 수 있습니다.

.htaccess 파일은 HTTPD 루트 디렉토리(최상단)에 위치해야 하며 워드프레스 파일 중 wp-config.php 또는 wp-login.php 파일이 존재하는 위치에 파일을 생성해주시면 됩니다.

(동일한 .htaccess 파일에 하단의 내용을 모두 추가할 것입니다.)

 

먼저 .htaccess 파일을 직접적으로 접근하지 못하도록 방지하는 내용입니다.

<FilesMatch "(\.htaccess)">
Order deny,allow
Deny from all
</FilesMatch>

 

다음으로 데이터베이스 접속 정보 등이 포함되어 있는 wp-config.php 파일에 대해 접근하지 못하도록 방지하는 내용입니다.

<files wp-config.php>
order allow,deny
deny from all
</files>

 

이제 wp-login.php 파일에 대해 특정 IP에서만 접근할 수 있도록 지정합니다. Allow from [IP Address] 와 같은 형식으로 지정 가능합니다.

<Files wp-login.php>
Order Deny,Allow
Deny from all
Allow from 192.168.###.###
</Files>

 

모든 과정이 완료되었다면 HTTPD 서비스를 재기동합니다. 다음 명령어를 입력합니다.

# RedHat 계열 / CentOS
[root@localhost ~]# service httpd restart

# Debian 계열 / Ubuntu
[root@localhost ~]# service apache2 restart

 

 

서버에서 직접 수정 (Nginx)

이번에는 Nginx를 사용 중인 웹 서버에서 설정할 수 있는 방법입니다.

Server 블록 안쪽에 location 블록을 새로 추가합니다. 해당 블록에는 wp-admin 디렉토리와 wp-login.php 페이지가 주소에 포함되어 있을 경우 특정 IP 주소에 대해서만 접근할 수 있도록 구성되어 있습니다.

http {
... (생략)
    server {
        ... (생략)
        location ~ (wp-admin|wp-login)\.php? {
            try_files       $uri $uri/ /index.php?$args;
            index index.html index.htm index.php;
            allow 192.168.1.###;
            allow 192.168.2.###;
            deny all;
        }
     ... (생략)
    }
}

allow [IP Address] 형식과 같이 입력하여 접속을 허용할 호스트 주소를 입력해주시면 됩니다. 이후 이 호스트 주소가 아닌 경우 모두 접근을 거부할 수 있도록 합니다.

 

모든 과정이 완료되었다면 Nginx 서비스를 재기동합니다. 다음 명령어로 설정을 다시 로드할 수 있습니다.

[root@localhost ~]# service nginx reload

 

 

이 글에 대해 어떻게 생각하시나요?
유용한 포스트였나요? 여러분의 의견을 하단의 Vote와 댓글로 남겨주세요 🙂
유용합니다!
아쉽습니다.

여러분의 의견을 댓글로 남겨주세요.

avatar
error: