워드프레스 wp-admin 폴더 외부 접근 차단
워드프레스를 사용하게 되면 /wp-admin
주소로 관리자 대시보드에 접근할 수 있게 됩니다.
그러나 이러한 공개적 주소를 사용하여 외부 공격자가 wp-admin
주소에 무단으로 접속하여 무차별 대입 공격(임의 패스워드 입력을 시도함으로서 관리자 권한을 취득하려는 공격) 시도를 할 수 있습니다.
따라서 관리자 페이지를 특정한 네트워크에서 접속할 수 있게 하거나 페이지 주소 자체를 변경하여 외부에서의 접근이 쉽지 않도록 예방해야 합니다.
이 포스트에서는 워드프레스 관리자 페이지를 차단하는 여러가지 방법에 대해 기술하였습니다.
플러그인 사용
워드프레스 플러그인을 사용하면 wp-admin
접속을 직접적으로 하지 못하도록 방지할 수 있습니다.
대표적으로 Hide My WP 플러그인이 있습니다. wp-admin
디렉토리와 wp-login.php
파일에 대한 접근 경로를 변경할 수 있는 이점이 있습니다.
서버에서 직접 수정 (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