본문 바로가기
Wordpress/etc

워드프레스 wp-admin, wp-login.php 보호, HTTP 404 처리

by aegypius 2021. 12. 16.
728x90
반응형

워드프레스로 제작한 사이트를 운영하다보면 외부에서(주로 해외ip) wp-login.php나 wp-admin 페이지로의 무단 접속시도가 빈번하다. 아직까지 워드프레스 관리자 비밀번호가 뚫린 적은 없지만 이러한 접속시도가 불편한 것은 사실이다. 간혹 심하게(연속으로 20회 이상정도?) 접속을 시도하는 ip는 차단하고 싶은 생각이 들기도 하지만 이것 때문에 ip를 차단한 적은 없다. 아직까지는......

 

서버차원에서 막을 수 있는 방법은.....

웹서버의 설정에서 /wp-admin과 wp-login.php에 접근할 수 있는 ip를 별도로 설정하여, 내 pc의 ip에서만 접속하게 설정할 수는 있다. 외부에서 접속하려면 불편할 수도 있겠지만, 접근할 수 있는 ip를 서너개 정도 설정해서 집과 사무실등 기타 자주 가는 곳의 ip주소에서만 워드프레스의 로그인 페이지(/wp-admin, /wp-login.php)에 접근할 수 있다면 그럴듯해 보이기는 하는데......그래도 불편한 상황이 발생할 수 있을 것도..같고......(이건 나중에 정리하기로....-_-;)

 

사이트 관리자가 막을 수 있는 방법은...

플러그인을 사용하는 것이다.(-_-;) 많은 플러그인이 있겠지만 이번에 설치한 것은 WPS Hide Login이다. 용량이 작고(212kb) 가벼우며 기능이 심플하다. 플러그인을 설치/활성화 한 후에 대시보드의 '설정 -일반' 메뉴로 들어가면  맨 마직막 부분에 아래와 같은 메뉴가 보인다. (대시보드의 '설정'에 WPS Hide Login이라는 메뉴가 별도로 생성되는데  결국 같은 내용이다-_-.)

WPS Hide Login에서는 위와 같이 Login urlRedirection url 두 개를 설정할 수 있다.

Login url에 mylogin이라고 입력하면 '도메인/wp-admin'이나 '도메인/wp-login.php'로는 더이상 로그인 할 수 없으며 '도메인/mylogin'으로만 로그인이 가능해진다. 그리고 대소문자를 확실히 구별한다.

아래의 Redirection url은 기존의 wp-admin이나 wp-login.php로 로그인 시도를 했을 경우 보여줄 페이지이다. 개인적으로 이 부분은 공란으로 두고 싶은데 내용을 삭제하면 기본값인 404로 변경되고 만다.

무단접속을 시도하는 경우는 예외로 두더라도 일반적인 HTTP 404 ERROR가 발생하는 경우 원하는 페이지로 리디렉트 해주는 Redirect 404 Error Page to Homepage or Custom Page with Log라는 플러그인이 있다. 이 플러그인을 사용해서 '없는 페이지로의 접근'을 모두 홈페이지(-첫 페이지- 혹은 원하는 페이지)로 리디렉션 할 수 있다.

Redirect 404 Error Page to Homepage or Custom Page 설정화면

이 플러그인은 오직 HTTP 404에 대한 리디렉트만 처리한다. 404 에러가 발생하면 Redirect to에서 원하는 페이지로 리디렉트할 수 있으며 방식은 301, 302, 404 이렇게 3개가 있다. 홈페이지를 만드는 도중이거나 만든 후의 개편(수정)중에 일시적으로 발생하는 404 오류가 아니라면 (301)영구이동이나 (302)임시이동은 별다른 의미가 없을 것이다. 게다가 별도의 404페이지를 만들어서 404로 처리하려한다면 굳이 이 플러그인을 설치할 필요는 없을 것 이다.

WPS Hide Login에서 설정해야만 하는 404페이지를 만들지 않아서 실제로 HTTP 404 오류가 발생한다면 Redirect 404 Error Page to Home... 플러그인에 의해서 홈페이지로 리디렉트 할 수 있기에 두 플러그인의 조합이 만족스럽다. (존재하지 않는 페이지로의 접근은 그냥 첫 페이지로 넘기는 것이 가장 깔끔한거 같다-_-)

아쉬운 점은 HTTP 403에 대한 처리가 없다는 것인데.......아마도 잘 찾아보면 위의 두 가지 플러그인의 기능을 모두 갖고 있는 플러그인이 있를 것도 같다. 아파치 로그를 살펴보면 간혹 워드프레스의 wp-content나 wp-content/theme 등에 무단으로 접속을 시도하는 경우도 있다. 이러한 경우에는 워드프레스가 기본적으로 각 폴더마다 비어있는 index.php파일을 두어서 빈 화면이 출력되기는 하는데...이는 웹서버의 설정으로 간단하게 홈페이지나 원하는 페이지로 리디렉트 할 수 있으니... 이것으로 만족해야 할 것같다. 서버차원에서 막는 방법은 테스트 후에 다시 정리해야겠다.

728x90
반응형

댓글