5가지 필수 사항: 먼저 하세요
- WordPress 코어, 테마, 플러그인을 최신 상태로 유지하세요. 취약한 플러그인은 1위 공격 벡터입니다. 마이너 버전 자동 업데이트를 활성화하세요(WordPress 5.6+는 기본적으로 합니다). 메이저 버전의 경우, 출시 후 7일 이내에 업데이트하세요. 플러그인의 경우, 신뢰할 수 있는 것의 자동 업데이트를 활성화하고, 중요한 플러그인은 릴리스 노트를 수동으로 검토하세요.
- 각 WordPress 계정에 강력하고 고유한 비밀번호를 사용하세요. 특히 관리자 계정. 비밀번호 관리자(1Password, Bitwarden)를 사용하세요. «admin» 사용자 이름을 비활성화하세요: 새 관리자를 만들고 예전 것을 삭제하세요.
- 이중 인증을 활성화하세요. Wordfence Login Security(무료)나 저희 2FA QR 생성기를 임의의 TOTP 앱과 함께 사용하세요. 2FA는 자격 증명 스터핑 공격의 99% 이상을 물리칩니다.
- 신뢰할 수 있는 보안 플러그인을 설치하세요. Wordfence(대부분의 사이트에는 무료 버전으로 충분)나 Solid Security. 여러 개를 쌓지 마세요: 충돌합니다. 플러그인은 로그인 시도 제한, 파일 무결성 모니터링, 멀웨어 스캔을 관리합니다.
- 매일 오프사이트 백업. UpdraftPlus → Dropbox/Google Drive. 필요하기 전에 백업하세요. 복원 절차를 최소 한 번 테스트하세요.
다음 10가지: 추가 고영향 조치
- HTTPS를 강제하세요. Let's Encrypt는 모든 최신 호스팅에서 무료입니다. 서버 수준에서 HTTP를 HTTPS로 리디렉션하세요.
- 데이터베이스 테이블 접두사를 변경하세요. WordPress는 기본적으로 wp_를 사용합니다; 설치 중에 맞춤형으로 변경하세요. 공격을 막지는 않지만 일부 공격 패턴을 어렵게 만듭니다.
- 사용하지 않으면 XML-RPC를 비활성화하세요. XML-RPC는 흔한 무차별 대입 증폭 벡터입니다. Jetpack 모바일 앱이나 원격 게시를 사용하지 않으면, .htaccess나 플러그인을 통해 비활성화하세요.
- 로그인 시도를 제한하세요. Wordfence가 자동으로 합니다. 무차별 대입 자격 증명 스터핑을 막습니다.
- WordPress 인증 키/salt를 교체하세요. 저희 WordPress Salt 생성기를 사용하세요. 침해가 의심될 때, 침해된 관리자를 삭제한 후, 그리고 6-12개월마다 일상적으로 교체하세요.
- 파일 전송에 SSH나 SFTP를 사용하고, 절대 평문 FTP를 사용하지 마세요. FTP는 자격 증명을 평문으로 전송합니다.
- 가능하면 IP로 wp-admin 접근을 제한하세요. 팀이 고정 IP(사무실, VPN)를 사용하면, wp-admin을 그 IP로만 제한하세요. .htaccess나 Nginx 구성을 통해.
- wp-config.php에서 파일 편집을 비활성화하세요. 다음을 추가하세요:
define('DISALLOW_FILE_EDIT', true);공격자가 계정을 침해할 경우 패널에서 테마/플러그인을 편집하는 것을 막습니다. - WordPress 버전 번호를 숨기세요. generator 메타 태그를 제거하세요. 공격을 막지는 않지만 핑거프린팅을 줄입니다.
- 파일 권한을 잠그세요. 파일 644, 디렉터리 755, wp-config.php 600. 대부분의 관리형 호스팅은 자동으로 합니다; VPS에서는 명시적으로 구성하세요.
마무리: 좋지만 중요하지는 않음
- 맞춤 로그인 URL(예: WPS Hide Login). 주로 봇 트래픽의 소음을 줄입니다; 실제 보안은 아닙니다.
- 로그인 양식의 CAPTCHA. 자동화된 공격에 대한 약간의 마찰.
- /uploads/에서 PHP 실행을 비활성화하세요. 업로드된 PHP 셸의 실행을 막습니다.
- Cloudflare WAF(무료 등급)를 사용하세요. 악성 트래픽이 서버에 도달하기 전에 필터링합니다.
- 플러그인/코어 업데이트에 대한 관리자 이메일 알림을 설정하세요.
- HSTS 사전 로드를 사용하여 브라우저 수준에서 HTTPS를 강제하세요.
- REST API를 통한 사용자 열거를 비활성화하세요(Solid Security나 Wordfence가 처리합니다).
- 콘텐츠 보안 정책(CSP) 헤더를 사용하세요.
- 디렉터리 탐색을 비활성화하세요(대부분의 호스팅은 기본적으로 합니다).
- 외부 서비스로 가동 시간 + 무결성을 모니터링하세요(UptimeRobot 무료 등급 + 주간 Sucuri SiteCheck).
- 사용자 역할을 최소 권한으로 제한하세요. 대부분의 기여자는 편집자 수준 접근이 필요 없습니다.
- 데이터베이스 백업 암호화(UpdraftPlus Premium이 제공합니다).
- CDN을 통한 도메인 외부 이미지 호스팅(공격 표면을 줄입니다).
- 정기적인 보안 감사 로그 검토.
- 사이트가 상당한 수익을 창출하면 연간 침투 테스트.
WordPress 보안 신화: 건너뛰세요
널리 권장되는 여러 «보안» 조치는 최소한의 실제 보호만 제공합니다: (1) «WordPress 버전 숨기기»: 버전을 아는 것은 표적 공격에 약간 도움이 되지만, 실제 해결책은 숨기는 것이 아니라 업데이트하는 것입니다. (2) «wp-config.php를 public_html 위로 이동»: 본질적으로 보안 이점이 없습니다; 파일은 이미 .htaccess로 보호됩니다. (3) «REST API 비활성화»: 많은 플러그인을 망가뜨리고 차단하는 것은 거의 없습니다. 대신 특정 엔드포인트를 제한하세요. (4) «여러 보안 플러그인 쌓기»: 충돌하고 겹칩니다. 신뢰할 수 있는 플러그인 하나(Wordfence나 Solid Security)가 세 개가 할 일을 커버합니다. (5) «wp-login.php 이름 변경»: 모호함을 통한 보안; 공격자는 리디렉션을 통해 새 URL을 쉽게 찾습니다.
해킹당했다면: 복구 목록
- 당황하지 마세요; 즉시 무언가를 삭제하지 마세요. 먼저 포렌식 분석을 위해 현재 상태의 스냅샷을 찍으세요.
- 사이트를 오프라인으로 전환하세요(유지 관리 모드 플러그인이나 정적 페이지로의 .htaccess 리디렉션).
- 모든 관리자 비밀번호를 변경하고 WordPress salt를 교체하세요.
- 사용자 계정을 감사하세요: 인식되지 않는 관리자 계정을 즉시 삭제하세요.
- Wordfence Premium이나 Sucuri로 멀웨어를 스캔하세요.
- 현재 파일을 깨끗한 WordPress 다운로드와 비교하세요: diff가 수정된 코어 파일을 드러냅니다.
- 데이터베이스의 wp_options 테이블에서 예상치 못한 항목을 검토하세요(종종 주입된 JS를 포함합니다).
- 가장 최근의 깨끗한 백업에서 복원하세요(이것이 매일 백업이 중요한 이유입니다).
- 복원 후, 각 플러그인을 감사하세요: 사용하지 않는 것을 삭제하고, 모두 업데이트하고, 공개 CVE가 있는 것은 교체하세요.
- WordPress 코어를 최신 버전으로 업데이트하세요.
- 사이트를 다시 활성화하고 30일 동안 재감염을 주시하세요.