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

워드프레스 로그인 시도 제한 설정 방법: 해커로부터 사이트를 지키는 완벽 가이드

해커가 워드프레스 사이트에 로그인을 시도하고 있다는 사실이 걱정되시나요? 그렇다면 그 걱정은 당연합니다.

해커들은 시행착오 방식으로 로그인 정보를 추측해 워드프레스 사이트에 침입하려 합니다. 실제로 워드프레스 사이트에서 가장 많이 공격받는 페이지가 바로 로그인 페이지입니다.

해커가 한번 관리자 대시보드에 침입하면 사이트를 완전히 장악할 수 있습니다. 악성코드와 백도어를 설치하고, 사이트를 훼손하며, 불법 제품을 광고·판매하고, 사용자의 개인정보를 탈취하고, 방문자에게 스팸을 보내는 등 각종 악의적인 활동을 벌일 수 있습니다.

다행히 로그인 시도 횟수를 제한하면 이러한 위협으로부터 로그인 페이지를 보호할 수 있습니다. 이 가이드에서는 워드프레스 사이트에 로그인 시도 제한을 설정하는 방법을 자세히 알려드립니다.

핵심 요약: 워드프레스 사이트에서 로그인 시도를 제한하면 해커의 침입 시도를 차단할 수 있습니다. 이 기능을 활성화하는 가장 쉽고 효율적인 방법은 플러그인을 사용하는 것입니다. MalCare를 설치하면 방화벽과 로그인 보호 기능이 함께 제공되어 무차별 대입 공격(brute force attack)으로부터 사이트를 안전하게 지켜줍니다.

워드프레스 로그인 시도 제한이란?

기본적으로 워드프레스는 로그인 시도 횟수에 제한이 없습니다. 아이디와 비밀번호 조합을 원하는 만큼 몇 번이고 시도할 수 있습니다.

워드프레스 로그인 시도 제한 설정 방법: 해커로부터 사이트를 지키는 완벽 가이드

해커들은 바로 이 점을 노립니다. 먼저 일반적으로 많이 사용되는 아이디와 비밀번호 목록, 유출되거나 거래되는 데이터를 모아 데이터베이스를 구축합니다. 그다음 봇(bot) 프로그램을 만들어 워드프레스 사이트를 돌아다니며 단 몇 분 만에 수천 가지 아이디·비밀번호 조합을 시도합니다.

이런 방식으로 해커들은 수많은 워드프레스 사이트에 침입합니다. 짧은 시간 안에 수천 건의 로그인 요청을 쏟아붓기 때문에 무차별 대입 공격(Brute Force Attack)이라고 부릅니다.

이 해킹 기법의 성공률은 약 10%로 상당히 높은 편입니다. 그 이유는 워드프레스 사용자들이 약한 로그인 정보를 설정하는 경우가 많기 때문입니다. 10%가 낮아 보일 수 있지만, 전 세계에 수백만 개의 워드프레스 사이트가 존재한다는 점을 고려하면 해커들은 순식간에 수천 개의 사이트를 해킹할 수 있습니다.

로그인 시도 횟수를 제한하면 해커와 봇의 발걸음을 막을 수 있습니다.

사용자에게 올바른 로그인 정보를 입력할 수 있는 기회를 제한적으로 부여하는 것입니다. 예를 들어 3번의 기회를 주고, 세 번 모두 실패하면 계정이 잠기게 됩니다.

계정이 잠긴 사용자에게는 다음과 같은 복구 옵션이 제공됩니다.

  1. 관리자에게 문의하기
  2. 비밀번호 찾기 기능을 이용해 질문에 답하고 비밀번호 재설정하기
  3. OTP 인증 또는 이메일 인증으로 본인 확인하기
  4. 캡차(CAPTCHA) 풀기를 통해 사람임을 증명하기

봇이 세 번 로그인을 시도하면 이런 장애물에 직면하게 됩니다. 더 이상 진행하지 못하고 다른 표적을 찾아 떠나게 됩니다.

따라서 이 보안 조치는 해커로부터 사이트를 보호하고 큰 문제를 예방할 수 있습니다. 이제 워드프레스에서 로그인 시도 제한을 설정하는 방법을 알아보겠습니다.

워드프레스에서 로그인 시도를 제한하는 방법

워드프레스에서 로그인 시도를 제한하는 방법은 두 가지입니다.

  1. 플러그인 사용 (쉬움)
  2. 직접 코드 수정 (어려움)

먼저 플러그인 방법을 소개합니다. 간단하고 빠르며 오류 위험도 없기 때문입니다.

1. 플러그인으로 로그인 시도 제한하기

워드프레스에서 로그인 제한 기능을 제공하는 플러그인은 여러 가지가 있습니다. 그렇다면 어떻게 적합한 플러그인을 선택할까요?

설치가 간편하고 과정을 자동화해주는 플러그인을 찾으세요. 또한 차단된 로그인 시도에 대한 리포트를 제공하는지 확인하세요. 플러그인이 실제로 작동하고 있는지 확인할 수 있습니다.

여기서는 MalCare 보안 플러그인을 예시로 들어 설명하겠습니다. 위 조건을 모두 충족할 뿐 아니라, 로그인 시도 제한을 넘어 사이트를 항상 보호해주는 기능까지 갖추고 있습니다.

MalCare를 사용하면 캡차(CAPTCHA) 기반의 로그인 시도 제한이 적용됩니다. 즉, 사용자가 잘못된 로그인 정보를 3회 이상 입력하면 캡차를 풀어야 합니다.

캡차를 통과하면 다시 로그인을 시도할 수 있습니다. 또는 비밀번호 찾기 옵션을 이용해 로그인 정보를 복구할 수 있습니다.

시작해 보겠습니다.

1단계: 사이트에 MalCare를 설치합니다. 플러그인을 활성화하고 워드프레스 대시보드에서 접속합니다.

2단계: 이메일 주소를 입력하고 Secure Site Now(지금 사이트 보호)를 선택합니다.

워드프레스 로그인 시도 제한 설정 방법: 해커로부터 사이트를 지키는 완벽 가이드

3단계: MalCare가 자체 대시보드로 안내하며 자동으로 사이트 보안 검사를 실행합니다.

4단계: 로그인 시도 제한이 자동으로 활성화됩니다. 이제 "워드프레스 로그인 시도 제한은 어떻게 작동하나요?"라고 궁금하실 겁니다.

잘못된 로그인 정보로 로그인을 시도하면 재시도가 차단됩니다.

워드프레스 로그인 시도 제한 설정 방법: 해커로부터 사이트를 지키는 완벽 가이드

Click here(여기를 클릭)를 선택하면 다음과 같은 캡차가 나타납니다.

워드프레스 로그인 시도 제한 설정 방법: 해커로부터 사이트를 지키는 완벽 가이드

캡차를 통과하면 다시 사이트에 로그인할 수 있습니다. 로그인 정보가 기억나지 않는다면 비밀번호 찾기 옵션을 이용하세요.

워드프레스 로그인 시도 제한 설정 방법: 해커로부터 사이트를 지키는 완벽 가이드

이것으로 끝입니다! 성공적으로 로그인 시도 제한을 설정했습니다. 이 외에도 MalCare는 강력한 방화벽을 구축하여 악성 봇이나 유해 트래픽이 사이트에 접근하지 못하도록 차단합니다. 모든 로그인 시도에 대한 리포트도 제공되며, 대시보드에서 확인할 수 있습니다.

워드프레스 로그인 시도 제한 설정 방법: 해커로부터 사이트를 지키는 완벽 가이드

실패한 시도와 성공한 로그인 기록을 확인할 수 있으며, MalCare가 의심스럽다고 판단해 자동으로 차단한 시도도 확인 가능합니다.

워드프레스 로그인 시도 제한 설정 방법: 해커로부터 사이트를 지키는 완벽 가이드

플러그인 사용이 마음에 들지 않는다면, 플러그인 없이 로그인 시도 제한을 구현하는 방법도 있습니다. 다만 이 방법은 복잡하고 오류가 발생하기 쉬우므로 신중하게 진행하세요.

2. 수동으로 로그인 시도 제한 구현하기

워드프레스 파일에 코드 조각을 직접 삽입하여 로그인 보호 기능을 추가할 수 있습니다. 하지만 워드프레스 파일을 수동으로 수정할 때마다 사이트가 손상될 위험이 있다는 점을 반드시 유의하세요. 사소한 오류 하나가 큰 문제로 이어질 수 있습니다.

이 방법을 진행하려면 반드시 사이트의 전체 백업을 먼저 생성하기를 강력히 권장합니다. 문제가 생기면 백업본을 빠르게 복원해 사이트를 정상 상태로 되돌릴 수 있습니다. BlogVault 백업 플러그인을 설치하거나 다른 우수한 백업 플러그인 중 하나를 선택해 손쉽게 백업할 수 있습니다.

백업을 완료했다면 아래 단계를 따르세요.

1단계: 호스팅 계정에 로그인하고 cPanel에 접속한 후 파일 관리자(File Manager)를 선택합니다.

2단계: public_html 폴더(또는 웹사이트가 위치한 폴더)를 엽니다. wp-content > Themes로 이동합니다.

워드프레스 로그인 시도 제한 설정 방법: 해커로부터 사이트를 지키는 완벽 가이드

3단계: 현재 사용 중인 테마 폴더를 선택합니다. 그 안에서 functions.php 파일을 찾습니다. 예시에서는 활성 테마 이름이 Personal Blogily이므로 해당 폴더를 선택했습니다.

워드프레스 로그인 시도 제한 설정 방법: 해커로부터 사이트를 지키는 완벽 가이드

4단계: 마우스 오른쪽 버튼을 클릭하고 Edit(편집)을 선택합니다. 파일이 열리면 아래 코드를 삽입합니다.

function check_attempted_login( $user, $username, $password ) {
    if ( get_transient( 'attempted_login' ) ) {
        $datas = get_transient( 'attempted_login' );
        if ( $datas['tried'] >= 3 ) {
            $until = get_option( '_transient_timeout_' . 'attempted_login' );
            $time = time_to_go( $until );
            return new WP_Error( 'too_many_tried', sprintf( __( '<strong>ERROR</strong>: You have reached authentication limit, you will be able to try again in %1$s.' ), $time ) );
        }
    }
    return $user;
}
add_filter( 'authenticate', 'check_attempted_login', 30, 3 );
function login_failed( $username ) {
    if ( get_transient( 'attempted_login' ) ) {
        $datas = get_transient( 'attempted_login' );
        $datas['tried']++;
        if ( $datas['tried'] <= 3 )
            set_transient( 'attempted_login', $datas , 300 );
    } else {
        $datas = array(
            'tried' => 1
        );
        set_transient( 'attempted_login', $datas , 300 );
    }
}
add_action( 'wp_login_failed', 'login_failed', 10, 1 );
function time_to_go($timestamp)
{
    // converting the mysql timestamp to php time
    $periods = array("second", "minute", "hour", "day", "week", "month", "year");
    $lengths = array("60", "60", "24", "7", "4.35", "12");
    $current_timestamp = time();
    $difference = abs($current_timestamp - $timestamp);
    for ($i = 0; $difference >= $lengths[$i] && $i < count($lengths) - 1; $i++) {
        $difference /= $lengths[$i];
    }
    $difference = round($difference);
    if (isset($difference)) {
        if ($difference != 1)
            $periods[$i] .= "s";
        $output = "$difference $periods[$i]";
    }
    return $output;
}

이 코드는 로그인 시도를 3회로 제한합니다.

5단계: 파일을 저장하고 종료합니다.

코드가 사이트에 적용되면 사용자는 올바른 로그인 정보를 입력할 기회가 3번 주어집니다. 3번 모두 실패하면 일정 시간 동안 계정 접근이 차단됩니다.

워드프레스 로그인 시도 제한 설정 방법: 해커로부터 사이트를 지키는 완벽 가이드

이 방법을 선택해야 하는 유일한 이유는 사이트에서 플러그인 사용을 최소화하고 싶고, 직접 기능을 구현하고자 할 때입니다. 그 외에는 플러그인을 사용하는 것이 훨씬 안전하고 간편합니다.

완성입니다! 로그인 시도 제한을 성공적으로 설정했으니 이제 해커와 봇이 사이트에 접근하는 것을 막을 수 있습니다!

함께 읽으면 좋은 글: 워드프레스 로그인 보안 경고 문제 해결 방법

워드프레스에서 로그인 시도 제한, 정말 필요할까?

워드프레스 사이트에 적용하는 모든 기능에는 장점과 단점이 공존합니다. 로그인 시도 제한을 활성화하기 전에 장단점을 살펴보고, 내 사이트에 적합한 기능인지 판단해 보세요.

로그인 시도 제한의 장점

  • 무단 접근 방지

로그인 시도를 제한하면 해커와 악성 봇이 로그인 페이지를 무차별 대입 공격으로 뚫고 들어오는 것을 막을 수 있습니다.

일시적인 계정 잠금만으로도 봇을 낙담시키고 사이트에서 떠나게 만들 수 있습니다.

  • 트래픽 폭증 및 서버 다운 방지

앞서 언급했듯이 무차별 대입 공격에서는 봇이 수천 가지 아이디·비밀번호 조합을 시도합니다. 매 시도마다 봇은 웹 서버에 요청을 보냅니다.

웹 서버는 로그인 요청을 포함해 사이트의 각종 작업과 기능을 처리하는 리소스를 제공합니다. 봇이 1분에 수천 건의 요청을 쏟아붓으면 서버에 과부하가 걸려 다운될 수 있습니다.

그러면 방문자들이 일시적으로 사이트에 접속하지 못하게 됩니다.

  • 호스팅 계정 정지 방지

웹 서버는 사이트 운영에 사용할 수 있는 리소스가 제한적입니다. 리소스를 초과하면 서버에 과부하가 걸립니다.

공유 호스팅 플랜을 사용 중이라면 같은 서버에 있는 다른 웹사이트에도 영향을 줄 수 있습니다.

봇이 수백 번의 로그인을 시도하면 사이트가 과도한 서버 리소스를 사용하게 됩니다. 이 경우 호스팅 업체는 서버 내 다른 웹사이트에 미치는 영향을 막고 자신들의 이익을 보호하기 위해 사이트를 일시적으로 정지시킬 수 있습니다.

로그인 시도 제한의 단점

  • 계정 잠김 – 실수로 아이디나 비밀번호를 잊어버리면 계정에서 잠길 수 있습니다. 비밀번호를 복구하려면 인증 절차를 거쳐야 하며 시간이 걸릴 수 있습니다.

이것이 생각할 수 있는 유일한 단점입니다. 사이트에 로그인 보호를 적용하지 말아야 할 다른 이유는 없습니다. 로그인 시도 제한의 대안을 찾고 있다면 2단계 인증(2FA)을 시도해 보세요. 이 역시 워드프레스 로그인 페이지를 보호할 수 있습니다. MalCare에서 2단계 인증 베타 버전을 출시했으며, Google Authenticator를 사용할 수도 있습니다.

결국 워드프레스 로그인 시도 제한은 구현이 쉽고 해커로부터 사이트를 보호해줍니다. 로그인 시도 제한과 관련해서는 장점이 단점보다 훨씬 크다는 것을 알 수 있습니다.

마무리 thoughts

워드프레스는 세계에서 가장 인기 있는 CMS(콘텐츠 관리 시스템)입니다. 하지만 이러한 인기가 해커들의 주목을 받습니다.

워드프레스 사이트는 끊임없이 해커의 표적이 됩니다. 따라서 사이트에 충분한 보안 조치를 취하는 것이 더욱 중요합니다. 워드프레스 로그인 페이지가 가장 많이 공격받는 페이지라는 점을 감안하면, 로그인 시도 제한부터 시작하는 것이 좋은 출발점입니다.

워드프레스 로그인 페이지를 더욱 철저히 보호하고 싶다면 아래 자료들이 도움이 될 것입니다.

  • 워드프레스 로그인 보안 강화 방법
  • HTTP 인증으로 로그인 페이지 비밀번호 보호하기
  • 워드프레스 사이트를 무차별 대입 공격으로부터 보호하기
  • 2단계 인증(2FA) 설정하기

간편하면서도 강력한 올인원 보안 솔루션을 찾고 있다면 MalCare 플러그인을 추천합니다. 정기적인 보안 검사, 강력한 방화벽 구축, 로그인 시도 제한, 의심스러운 활동 발생 시 알림 기능을 제공하며 24시간 내내 사이트를 보호합니다.

MalCare로 워드프레스 사이트를 해커로부터 안전하게 지키세요!