← 블로그 목록
작성일: 2026-05-20 WordPress보안Nginx

WordPress 공격 패턴 총정리: 로그로 보안 이벤트 탐지하기

WordPress는 전 세계 웹사이트의 40% 이상을 차지하는 만큼 공격자들의 주요 타깃입니다. 자동화 봇은 WordPress를 사용하는 서버를 끊임없이 스캔하고, 알려진 취약점을 찾아 공격을 시도합니다. 이 모든 시도는 Nginx 또는 Apache 액세스 로그에 기록됩니다.


공격자가 먼저 하는 일: WordPress 탐지

GET /wp-login.php HTTP/1.1
GET /wp-admin/ HTTP/1.1
GET /wp-content/ HTTP/1.1
GET /xmlrpc.php HTTP/1.1

이 경로에 대한 요청이 갑자기 증가했다면, 봇이 WordPress 사이트임을 확인하고 공격 준비에 들어간 것입니다.


공격 유형별 로그 패턴

1. wp-login.php 브루트포스

203.0.113.42 - - [10/May/2024:03:21:05 +0000] "POST /wp-login.php HTTP/1.1" 200 4823
203.0.113.42 - - [10/May/2024:03:21:06 +0000] "POST /wp-login.php HTTP/1.1" 200 4823

주의: 응답이 200이어도 로그인 실패입니다. WordPress는 로그인 실패 시에도 200을 반환하므로 응답 크기로 판단해야 합니다.

탐지:

grep 'POST /wp-login.php' /var/log/nginx/access.log \
  | awk '{print $1}' | sort | uniq -c | sort -rn | head -10

2. xmlrpc.php 악용

198.51.100.7 - - [10/May/2024:04:10:01 +0000] "POST /xmlrpc.php HTTP/1.1" 200 403
198.51.100.7 - - [10/May/2024:04:10:02 +0000] "POST /xmlrpc.php HTTP/1.1" 200 403

XML-RPC의 system.multicall 메서드를 사용하면 단 1번의 HTTP 요청으로 수백 번의 로그인 시도가 가능합니다.

3. 플러그인 취약점 스캔

GET /wp-content/plugins/revslider/temp/update_extract/revslider/revslider.php
GET /wp-content/plugins/contact-form-7/
GET /wp-content/plugins/elementor/

4. 사용자 이름 열거

GET /?author=1 HTTP/1.1
GET /?author=2 HTTP/1.1
GET /?author=3 HTTP/1.1

WordPress의 ?author=숫자 파라미터는 유효한 사용자 페이지로 리다이렉트됩니다.


Nginx 설정으로 WordPress 보호

wp-login.php IP 제한

location = /wp-login.php {
    allow 203.0.113.10;
    deny all;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    include fastcgi_params;
}

xmlrpc.php 완전 차단

location = /xmlrpc.php {
    deny all;
    return 403;
}

플러그인 PHP 직접 실행 차단

location ~* /wp-content/.*\.php$ {
    deny all;
    return 403;
}

사용자 열거 차단

if ($query_string ~* "author=[0-9]+") {
    return 403;
}

WordPress 보안 체크리스트

항목방법
관리자 계정명 변경admin 대신 예측 불가 사용자명 사용
이중 인증(2FA) 적용Google Authenticator 플러그인
로그인 시도 횟수 제한Limit Login Attempts 플러그인
xmlrpc.php 비활성화Jetpack 등 필요 시 IP 제한
파일 편집기 비활성화define('DISALLOW_FILE_EDIT', true);
플러그인 최신화취약한 구버전 플러그인이 주요 침투 경로

정리

WordPress 공격은 대부분 자동화 봇에 의해 반복적으로 발생합니다. 핵심 방어 경로는 wp-login.php 접근 제한, xmlrpc.php 차단, 플러그인 PHP 실행 차단 세 가지입니다.