Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

워드프레스 관리자 디렉터리(wp-admin) 접근 제한하는 방법 – .htaccess로 사이트 보안 강화하기

전 세계 6,000만 개가 넘는 웹사이트가 워드프레스(WordPress)를 기반으로 운영되고 있으며, 워드프레스는 가장 인기 있는 CMS로 자리 잡았습니다. 그러나 인기는 양날의 검입니다. 좋은 관심만큼이나 악의적인 공격도 함께 몰려들기 때문입니다. 실제로 워드프레스 사이트에는 하루 종일 매분 약 9만 건의 해킹 시도가 발생하고 있습니다.

안타깝게도 사이트 보안에는 모든 공격을 한 번에 막아주는 마법 같은 해결책은 존재하지 않습니다. 대신 여러 층위에서 방어 조치를 겹겹이 쌓아 올려야 해커로부터 안전하게 지킬 수 있습니다. 이처럼 여러 겹의 보호 장치를 두는 방식을 '다계층 방어(Layered Defence)'라고 합니다. 앞서 HTTP 인증, 2단계 인증, 강력한 아이디와 비밀번호 사용 같은 보호 조치를 소개했다면, 오늘은 워드프레스 관리자 디렉터리(wp-admin)에 대한 접근을 제한하는 또 다른 방법을 알아보겠습니다.

wp-admin 디렉터리란 무엇인가?

워드프레스 관리자 디렉터리는 핵심 파일들이 위치한 곳으로, 사용자가 다양한 관리 작업을 수행할 수 있도록 해주는 파일들이 들어 있습니다. 예를 들어 대시보드에 로그인하면 워드프레스는 입력된 계정 정보가 올바른지, 해당 사용자가 전체 권한을 가진 관리자인지 아니면 제한된 권한의 기여자인지 확인합니다. 이러한 동작은 모두 wp-admin 폴더 안의 파일들이 처리합니다.

해커가 사이트에 침입하면 이 파일들을 자신의 목적에 맞게 수정할 수 있습니다. 심한 경우 누가 사이트에 접근 가능한지 스스로 통제하기 시작하고, 진짜 관리자와 사이트 소유자를 차단해 버릴 수도 있습니다. 자신의 사이트에 접근조차 못 하는 상황이 생기는 것이죠. 그래서 사전 대비가 필수입니다. wp-admin 디렉터리 접근을 제한하면 해커가 사이트를 장악하는 것을 막을 수 있습니다.

접근 제한의 원리: 경비원 비유

쉽게 설명하자면, 웹사이트가 집이라면 워드프레스 관리자 디렉터리는 그 집의 현관문과 같습니다. 문 앞에 경비원을 배치하면 집(즉, 사이트)이 한층 더 안전해집니다. 경비원은 방문자의 신원(즉, IP 주소)을 확인한 뒤 집(웹사이트)에 들여보낼지 말지 결정합니다. 이 글에서는 IP 주소를 활용해 wp-admin 접근을 제한하는 방법을 다룹니다. 즉, 신뢰할 수 있는 특정 IP 주소에서만 관리자 영역에 접속할 수 있도록 설정하는 것입니다.

시작하기 전에 반드시 확인해야 할 것이 있습니다. 바로 내 IP 주소가 고정(static) IP여야 한다는 점입니다. 유동 IP라면 주소가 변경될 때마다 관리자 페이지에 접속하지 못할 수 있습니다. 자신의 IP가 고정형인지 확실하지 않다면 구글에서 검색해 보거나 인터넷 서비스 제공업체(ISP)에 문의하세요.

.htaccess 파일로 wp-admin 접근 제한하기

1단계. 호스팅 계정에 로그인한 뒤 cPanel 화면으로 이동합니다. cPanel에서 파일 관리자(File Manager) 메뉴를 찾아 클릭하면 아래와 비슷한 화면이 열립니다.

워드프레스 관리자 디렉터리(wp-admin) 접근 제한하는 방법 – .htaccess로 사이트 보안 강화하기

2단계. 파일 관리자 화면 왼쪽의 폴더 목록에서 public_html을 선택합니다.

워드프레스 관리자 디렉터리(wp-admin) 접근 제한하는 방법 – .htaccess로 사이트 보안 강화하기

3단계. 폴더 목록에서 wp-admin 폴더를 찾아 들어갑니다. 이 폴더 안에 .htaccess 파일이 있습니다. 다른 파일들과 달리 .html, .txt, .php 같은 확장자가 붙어 있지 않다는 점이 특징입니다.

4단계. 파일 관리자 상단의 다운로드(Download) 버튼을 이용해 .htaccess 파일을 내려받습니다.

워드프레스 관리자 디렉터리(wp-admin) 접근 제한하는 방법 – .htaccess로 사이트 보안 강화하기

간혹 .htaccess 파일이 숨김 처리되어 public_html 폴더에 보이지 않을 수 있습니다. 이 경우 cPanel로 돌아가 파일 관리자를 다시 실행한 후, 나타나는 팝업 창에서 'Show Hidden Files(숨김 파일 표시)' 옵션을 체크하면 됩니다.

워드프레스 관리자 디렉터리(wp-admin) 접근 제한하는 방법 – .htaccess로 사이트 보안 강화하기

만약 사이트에 .htaccess 파일이 아예 없다면 새로 생성해야 합니다. 파일을 내려받았다면 편집기로 열어 내용을 확인합니다.

워드프레스 관리자 디렉터리(wp-admin) 접근 제한하는 방법 – .htaccess로 사이트 보안 강화하기

5단계. .htaccess 파일 맨 아래에 다음 코드를 추가합니다:

order deny, allow
allow from your.IP.address
deny from all

참고: 'your.IP.address' 부분은 본인의 실제 고정 IP 주소로 교체하세요. 이 코드는 "모든 접근을 차단하되, 지정된 IP 주소만 허용한다"는 의미입니다. 여러 관리자가 접속해야 한다면 'allow from' 줄을 추가하여 IP 주소를 여러 개 등록할 수 있습니다.

6단계. 수정이 끝나면 파일 관리자의 업로드(Upload) 기능을 이용해 파일을 wp-admin 디렉터리에 다시 업로드합니다.

워드프레스 관리자 디렉터리(wp-admin) 접근 제한하는 방법 – .htaccess로 사이트 보안 강화하기

설정이 완료되면 허용되지 않은 IP에서 관리자 영역에 접근하려 할 때 '403 Forbidden(접근 거부)' 오류 화면이 표시됩니다.

주의: 루트 디렉터리의 .htaccess는 절대 건드리지 마세요

수정한 .htaccess 파일이 반드시 'wp-admin' 디렉터리 안의 파일이어야 하며, 루트 디렉터리(public_html)의 .htaccess가 아니어야 합니다. 루트 디렉터리에도 .htaccess 파일이 존재하지만, 우리는 그곳은 전혀 수정하지 않습니다. 만약 실수로 루트의 .htaccess에 위 코드를 적용하면 사이트의 모든 방문자가 차단되어 버립니다. 어떤 파일을 수정했는지 반드시 꼼꼼히 확인하세요.

프런트엔드 Ajax 기능이 깨질 때 해결 방법

IP 기반으로 wp-admin 접근을 제한하면 한 가지 문제가 발생할 수 있습니다. 바로 프런트엔드 Ajax 기능이 작동하지 않는 것입니다. Ajax는 웹페이지가 새로고침 없이 실시간으로 변화를 보여주도록 하는 기술입니다. 예를 들어 사이트에 트위터 피드를 표시하는 플러그인을 사용한다면, 트윗을 올릴 때마다 페이지를 다시 불러오지 않아도 자동으로 피드에 반영됩니다. 이것이 가능한 이유가 바로 Ajax 덕분입니다.

프런트엔드 Ajax 기능이 깨지지 않도록 하려면 먼저 사용 중인 플러그인이 프런트엔드에서 Ajax를 사용하는지 확인하세요. 사용한다면 wp-admin 디렉터리의 .htaccess 파일에 아래 코드를 추가하면 됩니다.

<Files admin-ajax.php>
order allow, deny
allow from all
satisfy any
</Files>

이 코드는 admin-ajax.php 파일에 한해서만 IP 제한을 예외 처리하므로, 방문자에게 필요한 Ajax 요청은 계속해서 정상적으로 처리됩니다.

마무리하며

wp-admin 접근을 제한하려면 워드프레스 파일 구조에 대한 기본적인 이해가 조금 필요합니다. 하지만 한 번 설정해 두면 무차별 대입 공격과 무단 로그인 시도로부터 관리자 영역을 크게 보호할 수 있습니다. 이 글이 도움이 되어 사이트가 그 전보다 한층 더 안전해지기를 바랍니다. 궁금한 점이나 피드백이 있다면 언제든지 문의해 주세요. 읽어주셔서 감사합니다.