로그인 시도 공격을 줄이는 워드프레스 보안 설정

작성자

카테고리:

로그인 시도 공격을 줄이는 워드프레스 보안 설정

워드프레스 사이트는 인기만큼 로그인 시도(brute-force) 공격의 대상이 되기 쉽습니다. 이 글에서는 과장된 약속 없이, 실무에서 바로 적용 가능한 설정과 방법을 정리합니다. 단계별로 적용하면 자동화된 로그인 시도와 무단 접근 위험을 상당히 줄일 수 있습니다. 적용 전에는 반드시 전체 백업을 먼저 만들어 두세요.

1. 우선 적용할 기본 설정

강력한 관리자 계정 관리

  • 관리자 계정명은 ‘admin’ 또는 이메일 주소처럼 쉽게 추측되는 이름을 사용하지 마세요. 새 사용자 계정을 만들고 기존 관리자 계정은 권한을 낮추거나 삭제하세요.
  • 모든 관리자/편집자 계정에 길고 유니크한 비밀번호를 사용하세요. 비밀번호 관리자(예: Bitwarden, 1Password 등) 사용을 권장합니다.

최신 상태 유지

  • 워드프레스 코어, 테마, 플러그인은 최신 안정 버전으로 유지하세요. 업데이트는 보안 패치에 중요합니다.
  • 자동 업데이트를 신중히 설정하되, 플러그인 호환성 문제를 고려해 테스트 후 적용하는 것이 안전합니다.

HTTPS(SSL) 적용

로그인 정보를 보호하려면 사이트 전체에 HTTPS를 적용하세요. 호스팅에서 무료/유료 SSL을 제공하는지 확인하고, 워드프레스 설정에서 사이트 주소를 https로 바꾸세요.

2. 로그인 관련 보안 강화

2단계 인증(2FA) 적용

  • 관리자와 편집자 계정에는 2단계 인증을 필수로 적용하세요. Google Authenticator, Authy 같은 앱 기반 2FA가 SMS보다 안전합니다.
  • 백업 코드나 대체 인증 수단도 안전하게 보관하세요.

로그인 시도 제한(차단 정책)

  • 로그인 실패 횟수를 제한하고 일정 횟수 초과 시 일정 시간 동안 잠금하거나 추가 인증을 요구하세요. 플러그인을 사용하면 설정과 로그 관리가 편합니다.
  • 일반적인 설정 예: 실패 3~5회 시 15~60분 잠금(사이트 특성에 따라 조정).

reCAPTCHA 또는 봇 차단

로그인 폼에 reCAPTCHA 등을 도입하면 자동화된 봇 공격을 줄이는 데 효과적입니다. 사용자 경험을 해치지 않도록 invisible reCAPTCHA 또는 점진적 적용을 고려하세요.

로그인 URL 숨기기(주의 필요)

기본 로그인 URL(/wp-login.php 또는 /wp-admin)을 변경하면 무차별 스캔을 일부 회피할 수 있습니다. 다만 플러그인 호환성 문제로 로그인 불가 상황이 생길 수 있으므로, 적용 전 백업과 관리자 액세스 복구 방법을 마련하세요.

3. 서버·호스팅 수준의 방어

웹 방화벽(WAF)과 호스팅 보안 기능

  • 호스팅 제공업체의 방화벽 또는 클라우드 WAF(예: Cloudflare, Sucuri 등)를 활용하면 공격 트래픽을 서버에 닿기 전에 차단할 수 있습니다.
  • 호스팅에서 제공하는 로그인 보호(예: IP 차단, rate limiting) 기능을 확인하고 활성화하세요.

불필요한 기능 비활성화: XML-RPC

XML-RPC를 사용하지 않는다면 비활성화하면 로그인 공격 표면을 줄일 수 있습니다. 서버 접근 권한이 있다면 아래와 같은 .htaccess 규칙으로 차단할 수 있습니다 (Apache 기준).

<Files xmlrpc.php>
    Require all denied
</Files>

Apache 2.2 환경에서는 ‘Require all denied’ 대신 아래를 사용합니다:

<Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
</Files>

특정 IP만 허용(관리자용)

관리자 접근이 특정 IP에서만 이루어지는 경우 wp-login.php 또는 /wp-admin 경로에 대해 IP 허용 규칙을 적용하면 보안이 크게 강화됩니다. 다만 사무실/개인 IP가 변동적이라면 주의가 필요합니다.

<Files wp-login.php>
    Require ip 1.2.3.4
    Require ip 5.6.7.8
</Files>

4. 워드프레스 내부·운영 관리

파일 편집 기능 비활성화

관리자 화면에서 테마·플러그인 편집 기능을 비활성화하세요. wp-config.php에 다음을 추가하면 됩니다.

define('DISALLOW_FILE_EDIT', true);

권한과 파일 퍼미션 점검

  • 파일/디렉터리 퍼미션을 적절히 설정하세요(예: 디렉터리 755, 파일 644 등). 호스팅 가이드라인을 따르되, 과도한 쓰기 권한은 피하세요.

로그와 모니터링

  • 로그인 시도 기록을 남기고 정기적으로 검토하세요. 로그인 실패가 급증하면 원인(비밀번호 유출, 봇 공격 등)을 분석하세요.
  • 활동 로그(예: 사용자 생성/권한 변경)에 대한 알림을 설정하면 침해 탐지에 도움이 됩니다.

체크포인트

  • 관리자 계정명 변경 및 관리자 권한 최소화
  • 모든 관리자 계정에 강력한 비밀번호와 2단계 인증 적용
  • 로그인 실패 제한(잠금 정책) 설정
  • 사이트 전체 HTTPS 적용
  • XML-RPC가 불필요하면 차단
  • 파일 편집 비활성화(DISALLOW_FILE_EDIT)
  • 정기 백업 및 업데이트 자동화(테스트 포함)
  • 로그·모니터링 시스템 활성화
  • 호스팅/방화벽에서 추가 보안 기능 사용

자주 묻는 질문(FAQ)

Q1: 로그인 시도 제한을 걸면 정상 사용자가 차단될 위험은 없나요?

A: 예, 과도한 제한은 정상 사용자의 일시적 차단을 초래할 수 있습니다. 일반적으로 실패 횟수(예: 3~5회)와 잠금 시간을 적절히 조합하고, 관리자 이메일로 잠금 알림을 받거나 잠금 해제 절차(관리자 승인)를 마련하는 것이 좋습니다.

Q2: XML-RPC를 비활성화하면 어떤 기능이 영향을 받나요?

A: XML-RPC를 이용하는 일부 플러그인(예: 원격 게시, 특정 모바일 앱, Jetpack의 일부 기능)은 동작하지 않을 수 있습니다. 사용 중인 기능을 먼저 확인한 뒤, 필요 시 제한적 차단 또는 플러그인 수준의 보호 대책을 고려하세요.

Q3: 2단계 인증이 불편해서 적용을 망설입니다. 그래도 해야 하나요?

A: 2단계 인증은 계정 탈취 위험을 크게 줄이는 효과적인 수단입니다. 사용자 수가 적고 내부 보안 규칙을 엄격히 관리할 수 있다면 선택적 적용도 가능하지만, 관리자 권한을 가진 계정만큼은 반드시 2FA를 적용하는 것을 권장합니다. 인증 앱 기반 2FA가 SMS보다 안전합니다.

마무리

로그인 시도 공격은 완전히 없애기 어렵지만, 위 조치들을 종합적으로 적용하면 공격 성공 확률을 크게 낮출 수 있습니다. 변경을 적용할 때는 단계적으로, 먼저 백업을 만든 뒤 한 번에 많은 설정을 바꾸지 않는 것이 안전합니다. 보안은 한 번의 조치가 아니라 지속적인 관리와 모니터링이 필요합니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다