[워드프레스] 로그인 페이지 숨기기/접근 차단하기

Last Updated: 2023년 07월 17일 | | 17개 댓글

WPS Hide Login - 워드프레스 로그인 페이지 숨기기

개요

보안을 강화하기 위해 로그인 페이지의 경로를 바꿀 수 있습니다. 또는, 워드프레스 사이트에서 일반인들의 로그인 기능을 비활성화시켜 일반 사용자들이 wp-login.php 페이지에 접근하지 못하도록 하고 싶은 경우가 있을 수 있습니다. 이 글에서는 이 두 가지 상황에 사용할 수 있는 방법을 설명합니다.

업데이트: 초기 보안 플러그인에는 워드프레스 로그인 페이지를 숨기는 기능이 포함되었지만 이러한 ‘불분명함을 통한 보안(Security through Obscurity, 은둔 보안)’ 방식은 실질적인 보호를 제공하지 않고 오히려 시스템을 불안하게 하고 테마가 깨질 수 있다고 합니다.

(다만, 관리자만 로그인이 가능하도록 wp-admin 페이지에 접근하는 방식은 괜찮은 것 같습니다.)

로그인 페이지 숨기기

워드프레스에서 로그인 페이지의 주소를 변경하여 해킹 공격 등을 차단하고자 하는 경우 플러그인을 사용할 수 있습니다. 여러 가지 플러그인이 있는데, WPS Hide Login이라는 플러그인이 비교적 업데이트도 잘 되고 무엇보다 가벼운(제작자 말에 의하면) 것 같습니다.

WordPress의 관리자 페이지에서 플러그인 > 플러그인 추가하기에서 WPS Hide Login을 검색하여 설치하고 활성화하도록 합니다. 그런 다음 설정 > 일반으로 이동한 후에 맨 아래에 보면 로그인 페이지의 새로운 경로를 지정할 수 있는 필드가 추가되어 있습니다.

WPS Hide Login - 워드프레스 로그인 페이지 숨기기

기본적으로 http://www.example.com/login으로 로그인 페이지가 설정되어 있습니다. 원하는 경우 경로를 바꿀 수 있습니다. 이제 http://www.example.com/wp-login.php에 접속하면 없는 페이지(404 에러)로 표시됩니다.

wp-login.php에 접근하지 못하도록 설정하기

일반인들이 로그인 페이지에 접속하지 못하도록 wp-login.php 페이지 자체에 접근을 차단할 수 있습니다. 이 경우 다음과 같은 코드를 .htaccess 파일에 추가하도록 합니다.

<Files wp-login.php>
Order Deny,Allow
Deny from All
Allow from xxx.xxx.xx.xxx
</Files>

그러면 IP가 xxx.xxx.xx.xxx인 사용자만 로그인 페이지에 접근이 가능합니다. 내 컴퓨터의 공인 IP 확인은 https://www.whatismyip.com/에서 확인이 가능합니다. 위의 코드를 .htaccess에 추가하면 일반 사용자가 wp-login.php 페이지에 접속하면 "403 Permission Denied" 메시지가 표시됩니다.

wp-login.php 리디렉션시키기

또 다른 방법으로 wp-login.php 파일로 접근하는 방문자를 다른 페이지(예: 홈 페이지)로 이동시키는 방법을 생각해볼 수 있습니다.

add_action('init','custom_login');

function custom_login(){
global $pagenow;
if( 'wp-login.php' == $pagenow ) {
wp_redirect('http://www.example.com/'); // 리디렉션시키려는 URL로 변경
exit();
}
}

이 경우 관리자도 wp-login.php에 접근하지 못하는 문제가 발생할 것입니다. 이를 방지하기 위해 관리자 인터넷 회선의 IP 주소가 아닌 경우(IP 주소로 접속 제한 설정)에만 위의 함수가 실행되도록 할 수 있습니다. 이 경우에 다음과 같은 코드를 추가하면 될 것 같습니다.

if ($_SERVER['REMOTE_ADDR'] !== 'xxx.xxx.xx.xxx') // 관리자 IP 주소
{
// 코드
}

참고:


17 개 댓글

Leave a Comment

  1. 특정 아이피만 접근하도록 차단하면 관리자 본인도 지정된 장소의 컴퓨터 외에는 카페에서 혹은 여행 중에는 관리를 할 수 있는 방법이 없는거겠죠? 보안은 철저히 하고 싶지만 장소에 구애받지 않고 관리가 용이했으면 하는데 좋은방법이 있을지 궁금합니다

    응답
    • 안녕하세요, 제이님. 외부에서 관리자 페이지에 접속해야 하는 경우가 많다면 ip 주소로 관리자 페이지에 접속하는 것을 차단하는 코드를 삭제하는 것이 좋지 않을까 생각됩니다. 다른 방법으로 FTP에 접속하여 자주 방문하는 카페의 IP 주소를 추가로 입력하거나, 혹은 여행지에 가서 접속하는 IP 주소를 FTP에 접속하여 추가하는 것도 가능할 것입니다.

      응답
  2. 안녕하세요 워드 님! 항상 블로그의 글을 너무 잘 보고 있습니다. 좋은 글 써주셔서 감사합니다. 다름이 아니고 한가지 질문이 있는데요.

    'wp-login.php에 접근하지 못하도록 설정하기'

    위의 항목에서 nginx로 서버가 설정되어 있을 경우 어떻게 똑같은 효과를 볼 수 있는지 궁금합니다. nginx 에서는 .htaccess 파일을 수정해도 작동을 안하는 것 같습니다.

    좋은글 항상 감사합니다.

    응답
  3. 좋은 내용을 알려주셔서 감사합니다.
    워드크래커님 덕분에 늘 로그인창에 대한 못 미더움이 있었는데, 해결 되었습니다.

    리디렉션은 시도해보려 했는데, 잘 안돼서 포기 했어요.
    그래도 특정 ip만 접근할 수 있게 설정해서 마음이 한결 편해졌습니다. ^^
    정말 감사합니다.

    응답
    • 안녕하세요, 얄리님.

      로그인 페이지 주소를 변경하여 숨기는 것은 보안에 별 도움이 안 되고 오히려 시스템을 불안정하게 만들 수 있다는 것이 최근의 견해 같습니다.
      꼭 로그인 페이지 주소를 변경하고 싶은 경우 iThemes Security와 같은 보안 플러그인에서 제공하는 기능을 사용할 수 있습니다. 다음 글의 "Hide Backend" 부분을 참고해보시기 바랍니다.

      https://www.thewordcracker.com/basic/ithemes-security-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-%EA%B3%A0%EA%B8%89-%EA%B8%B0%EB%8A%A5/

      응답
      • 알려주신 방법으로

        Order Deny,Allow
        Deny from All
        Allow from xxx.xxx.xx.xxx

        로그인창에 접근하지 못하도록 하였는데요. 테마 업데이트가 안됩니다. 업데이트 부분은 해결할 수 있는 방법이 있는지 궁급합니다. 기존 .htaccess에 코드 삽입했던건 보이지가 않더라고요. 지우려고 했더니... 해결하는 방법이 있을까요?

      • 위의 코드는 테마 업데이트와는 아무 관련이 없을 것입니다.

        저도 비슷한 코드를 삽입했지만, 테마 업데이트나 플러그인 업데이트에 아무런 문제가 없습니다.
        아마도 다른 문제가 있을 수 있을 것입니다.

        .htaccess 파일이 없다는 것은 고유주소 문제 같네요.

        설정 > 고유주소에서 "기본"이 아닌 다른 옵션(예: 글제목)으로 선택해보시기 바랍니다.
        워드프레스에서는 고유주소를 "기본"으로 설정할 경우 문제가 발생하는 경우가 있습니다. 가급적 "기본"으로 설정하지 마시기 바랍니다.

  4. 제가 사이트그라운드를 사용중인데 사이트그라운드 cpanel의 redirects (301)를 이용해서 wp-login.php를 메인페이지로 리디렉션 시키는 것도 가능할까요? 플러그인 설치보다 이방법이 간단해 보여서요.

    응답
  5. 안녕하세요 ^^ 궁금한 부분이 있어 이렇게 댓글을 달게 되었습니다. 지금 현재 이 웹페이지도 "https://www.thewordcracker.com" '/wp-admin' 이나 '/wp-login.php' 를 하면 엑세스거부가 되는데, 이 페이지에는 어떤 방법을 적용하신건지 여쭤봐도 될까요? 민감한 보안문제이니, 혹시라도 결례가된다면 답변해주지 않으셔도 괜찮습니다. :) 좋은 정보 주셔서 감사합니다 !

    응답