워드프레스는 사용 편의성으로 인해 많은 사용자가 사용하는 반면 보안의 우려도 있습니다. 특히 외부 플러그인을 자유롭게 설치할 수 있다 보니 본의 아니게 플러그인으로 인해 보안이 취약해지는 경우가 있습니다. 오래 전 레볼루션 슬라이더가 심각한 보안 취약점에 노출되어 여러 신문사의 인터넷 기사까지 나온 적이 있을 정도입니다.
이 뿐만 아니라 워드프레스는 스팸봇에 의해 끊임없이 공격을 받습니다. 워드프레스 사이트를 운영하다 보면 얼마 지나지 않아 각종 스팸 댓글이 마구 달리는 것을 볼 수 있습니다. 개인적으로는 여러 가지 스팸 방지 플러그인 중에서는 Akismet이 강력한 것 같습니다. 저는 댓글 블랙리스트 기능을 사용하여 스팸 댓글을 차단하고 있습니다.
워드프레스 보안: 관리자 페이지/로그인 페이지 주소를 숨기는 방법
아래 그림은 IP Blacklist라는 플러그인에 의해 차단된 IP의 목록(IP는 위의 그림에 표시하지 않음)과 그들이 시도했던 로그인 정보를 보여줍니다.
봇들은 주로 Admin, admin, administrator와 같은 ID(사용자 이름)로 로그인을 시도합니다. 특이하게 demo1이라는 사용자 이름으로도 시도하고 있네요. 그러므로 관리자 사용자 이름으로 Admin, admin, administrator 등은 피하는 것이 안전할 것 같습니다.
플러그인을 사용하여 관리자 페이지 주소/로그인 페이지 주소 변경하기
원하는 경우 관리자 페이지 경로인 /wp-admin와 로그인 페이지 경로인 /wp-login.php를 변경할 수 있습니다. 보안 전문가들에 의하면 이 방법이 그리 효과는 없다고 합니다. 하지만 많은 사이트에서 플러그인을 사용하여 로그인 페이지를 변경하고 있습니다. 아래의 플러그인을 사용하면 /wp-login.php 또는 /wp-admin으로 로그인을 시도하는 봇을 차단하는 데 효과가 있을 것입니다.
Solid Security 보안 플러그인의 기능 사용하기
Solid Security (이전 명칭 "iThemes Security") 보안 플러그인을 사용하는 경우 플러그인에서 관리자 페이지 경로를 변경하는 옵션을 제공합니다. "iThemes의 Hide Backend 기능을 사용하여 워드프레스 로그인 페이지 숨기기"를 참고해보세요.
WPS Hide Login 플러그인
로그인 페이지를 숨기는 기능을 하는 플러그인 중에서 많이 사용되는 플러그인으로 WPS Hide Login이 있습니다. 이 플러그인은 2024년 5월 현재 100만 개가 넘는 사이트에 설치되어 사용되고 있습니다.
이 플러그인은 로그인 양식을 제공하는 다음과 같은 플러그인과 호환됩니다.
- BuddyPress
- bbPress
- Jetpack (젯팩)
- WPS Limit Login
- User Switching
하지만 wp-login.php를 하드 코딩한 플러그인이나 테마와는 호환되지 않는다고 합니다.
WPS Hide Login은 서브도메인 및 서브디렉터리 방식의 멀티사이트와 호환되며, (WP Rocket을 제외한) 캐시 플러그인의 경우 새로운 로그인 URL이 캐시되지 않도록 설정해야 합니다.
Protect Your Admin 플러그인
또 다른 플러그인으로 Protect Your Admin이라는 플러그인이 있습니다.
이 플러그인은 비교적 최근에 업데이트되었네요. 일부 플러그인은 업데이트가 잘 안 되어 결국에는 사용하지 못하게 되는 경우가 발생합니다. 그래서 플러그인을 선택할 때에는 먼저 평점과 함께 업데이트가 언제 되었는지 보게 됩니다. 그리고 다양한 기능을 제공하네요:
- 사용자 정의 wp-admin url(예: http://yourdomain.com/myadmin) 지정
- 로그인 페이지에서 사용자 정의 로그를 지정하거나 기본 로고 변경
- 로그인 페이지의 body 배경색 지정
- SEO에 유리한 "등록" 페이지 URL
- 기타
Hide My WP 플러그인 (유료)
Hide My WP 플러그인은 wp-admin 경로뿐만 아니라 거의 모든 고유주소를 변경하여 사이트가 워드프레스로 제작되었다는 사실을 사용자들이 알지 못하도록 하여 보안을 강화해주는 플러그인입니다. 자세한 내용은 이 글을 참고해보시기 바랍니다.
다른 방법 - 코드를 사용하여 관리자 페이지 주소 변경하기
사실 워드프레스에서 플러그인을 많이 설치하다 보면 사이트 속도에 영향을 미치고, 간혹 원치 않은 플러그인 간 또는 플러그인과 테마 간 충돌이 발생하기도 합니다. 또, 플러그인으로 인해 보안 문제가 야기되기도 하고요. 그러므로 가급적 플러그인 설치를 최소화하는 게 바람직합니다. 플러그인을 설치하지 않고 다음과 같은 방법으로 관리자 URL을 변경할 수 있습니다.
코드를 사용한 이 방법은 이전에는 잘 되었지만 이제는 더 이상 작동하지 않는 것으로 확인되었습니다.
1. wp-config.php 파일에 변수를 추가합니다.
define('WP_ADMIN_DIR', 'secret-folder'); define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR);
2. 함수 파일(functions.php)에 아래 필터를 추가합니다.
add_filter('site_url', 'wpadmin_filter', 10, 3); function wpadmin_filter( $url, $path, $orig_scheme ) { $old = array( "/(wp-admin)/"); $admin_dir = WP_ADMIN_DIR; $new = array($admin_dir); return preg_replace( $old, $new, $url, 1); }
3. 다음 라인을 .htaccess 파일에 추가합니다.
RewriteRule ^secret-folder/(.*) wp-admin/$1?%{QUERY_STRING} [L] // 출처: stackoverflow
변경된 로그인 주소를 잊은 경우
플러그인을 사용하여 관리자 페이지 주소나 로그인 페이지 주소를 변경한 후에 변경된 로그인 URL이 기억이 나지 않아서 로그인을 못하는 경우가 있을 수 있습니다. 이 경우에는 FTP를 통해 웹 서버에 접속하여 해당 플러그인을 삭제하면 문제가 해결될 것입니다.
플러그인은 /wp-content/plugins/ 폴더 아래에 위치해 있습니다.
관리자 페이지/로그인 페이지 URL을 복구하는 데 어려움을 겪는 경우 여기에서 서비스(유료)를 의뢰하실 수 있습니다.
마치며
워드프레스 사이트를 업데이트하지 않고 방치하거나 비밀번호 관리를 소홀히 하다가 간혹 해킹당해 관리자 계정이 삭제되거나 관리자 비밀번호가 변경되어 관리자 페이지에 접속하지 못한다고 호소하는 경우를 본 적 있습니다. 이 경우 이 글을 참고로 관리자 비밀번호 복구를 시도하거나, 다소 복잡하지만 이 글에서 설명하는 방법으로 새로운 관리자 계정을 추가할 수 있습니다. 이상으로 워드프레스에서 보안 강화를 위해 관리자 URL을 변경하는 방법을 살펴보았습니다.
초기 보안 플러그인에는 워드프레스 로그인 페이지/관리자 로그인 페이지를 숨기는 기능이 포함되어 있었지만 이러한 ‘불분명함을 통한 보안(Security through Obscurity, 은둔 보안)’ 방식은 실질적인 보호를 제공하지 않고 오히려 시스템을 불안하게 하고 테마가 깨질 수 있다고 합니다.
따라서 로그인 페이지를 숨기는 방식은 별로 권장하지 않습니다. 보안 플러그인을 설치하고 워드프레스와 워드프레스 테마 및 플러그인을 항상 최신 버전으로 업데이트하고 백업을 생활화하는 것이 보안에 도움이 될 것입니다("워드프레스 보안 강화를 위한 기본적인 세 가지 방법" 참고).
혹시 워드프레스 내에서 글들 색상 변경이랑 글씨체는 못 바꿀까요?
안녕하세요?
CSS를 통해 조정이 가능합니다.
다음 글을 참고해보시기 바랍니다.
https://www.thewordcracker.com/basic/%EC%9B%8C%EB%93%9C%ED%94%84%EB%A0%88%EC%8A%A4%EC%97%90-css%EB%A5%BC-%EC%A0%81%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95%EA%B8%B0%EC%B4%88/
인터넷을 검색해보면 무료 CSS 강의 동영상도 있으니 참고해보시면 좋을 듯 합니다.
플러그인 설치하지 않고 관리자 url을 변경하는 방법으로 파일들을 수정하였더니. 모든 페이지가 Internal Server Error 가 뜹니다.
안녕하세요?
테스트를 해봤는데요 Internal Server Error가 표시되지 않지만 더 이상 작동하지는 않네요.
이 글을 작성할 당시에는 잘 되었는데 이제는 위에 나온 코드로는 되지 않고, 플러그인을 사용하셔야 할 것 같습니다.
워드프레스가 계속 업데이트되기 때문에 이전에 잘 되었던 방법이 업데이트가 되면서 안 되는 경우가 많습니다. 알려주셔서 감사합니다.
3.htacess 파일에 작성된 내용은 정규표현식인가요
안녕하세요?
좋은 질문입니다. mod_rewrite는 Perl 호환 정규식(Regular Expression)을 이용한다고 합니다. 다음 두 글을 참고해보세요:
치트시트: http://www.cheatography.com/davechild/cheat-sheets/mod-rewrite/
Apache mod_rewrite 소개: https://httpd.apache.org/docs/2.4/rewrite/intro.html