워드프레스 사이트를 운영하다 보면 악성 봇이나 악성 IP의 무차별적인 접속으로 서버 RAM이나 CPU 사용률이 급격히 치솟아 사이트가 느려지거나 아예 다운되는 경험, 한 번쯤 겪어보셨을 겁니다. 이 블로그 역시 악성 봇으로 인한 서버 과부하로 몇 차례 다운되는 일을 겪었고, 그때마다 다양한 방법을 시도해 보았습니다. 이번 글에서는 그중에서도 실제로 효과가 있었던 방법들을 정리해서 공유해 드리려고 합니다.

워드프레스 악성 봇 차단하여 서버 과부하 방지하기
악성 봇 차단하기
SEO 봇이나 스팸 리퍼러(Spam Referrer) 같은 악성 봇이 과도하게 몰려들면서 서버 CPU 사용량이 100%까지 치솟는 경우가 종종 있습니다.
저 역시 이 워드프레스 사이트를 10년 넘게 운영해오면서, 이런 악성 봇들의 무분별한 방문으로 서버가 급격히 느려지거나 아예 다운되는 상황을 여러 번 경험했습니다. 그래서 사이트에 문제를 일으킨 악성 봇들을 하나씩 파악해 .htaccess 파일에 차단 코드를 추가하는 방식으로 대응해오고 있습니다.
예시:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (SCspider|Textbot|s2bot|MJ12bot|YandexBot|SemrushBot|AspiegelBot|BLEXBot|webmeup-crawler|oBot|SiteExplorer|BaiDuSpider|Barkrowler|proximic|PetalBot|Trendiction|DataForSeoBot|Bolt|FlipboardProxy|SeznamBot) [NC]
RewriteRule ^ - [F,L]
</IfModule>
# Abuse HTTP Referrer Blocking
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} arendovalka\.xyz [NC,OR]
RewriteCond %{HTTP_REFERER} begalka\.xyz [NC,OR]
RewriteCond %{HTTP_REFERER} rank-checker\.online [NC,OR]
RewriteCond %{HTTP_REFERER} free-social-buttons-ccc\.xyz [NC,OR]
RewriteCond %{HTTP_REFERER} site-auditor\.online [NC,OR]
RewriteCond %{HTTP_REFERER} monetizationking\.net [NC,OR]
RewriteCond %{HTTP_REFERER} bezlimitko\.xyz [NC,OR]
RewriteCond %{HTTP_REFERER} biteg\.xyz [NC,OR]
RewriteCond %{HTTP_REFERER} boltalko\.xyz [NC,OR]
RewriteCond %{HTTP_REFERER} leadsgo\.io [NC,OR]
RewriteCond %{HTTP_REFERER} \.(xyz|online)(/|$) [NC]
RewriteRule .* - [F,L]
</IfModule>
보안 플러그인
Wordfence와 같은 보안 플러그인을 사용하면 과도하게 유입되어 서버 부하를 일으키는 악의적인 IP 공격을 효과적으로 차단할 수 있습니다.
클라우드웨이즈를 이용하는 경우 강력한 서버 방화벽이 작동하고 있어서 많은 공격을 차단하지만, 방화벽을 뚫고 들어오는 공격을 Wordfence로 방어할 수 있습니다.
디도스 공격과 비슷한 패턴으로 IP 주소를 바꾸어가면서 공격하는 경우 워드펜스의 속도 제한(Rate Limiting) 설정을 통해 어느 정도 방어가 가능할 수 있습니다. 저는 서버 과부하로 인해 ERR_TIMED_OUT 에러가 발생하는 문제 때문에 워드펜스를 설치하여 속도 제한 설정을 하니 문제가 재발하지 않았습니다.
로그인 페이지 접근 차단하기
워드프레스 사이트의 방문자가 늘어나면 자연히 로그인 페이지를 노리는 자동화된 봇 공격도 함께 증가하는 경향이 있습니다.
클라우드웨이즈(Cloudways)를 이용 중이라면 서버 방화벽에서 이런 악의적인 로그인 시도를 상당 부분 감지해 차단해주지만, 여기에 더해 Limit Login Attempts Security 같은 무료 플러그인을 함께 사용하는 것도 좋은 방법입니다.

이 플러그인은 현재 100만 개가 넘는 사이트에 설치되어 있을 정도로 널리 쓰이며, 카페24에서 워드프레스를 설치할 때 기본으로 함께 설치되기도 합니다.
wp-login.php나 XML-RPC(xmlrpc.php)를 노린 브루트포스 로그인 공격이 서버 부하의 원인이라면 이 플러그인만으로도 어느 정도 효과를 볼 수 있지만, 사실 서버 부하 완화보다는 로그인 보안을 강화하는 용도로 더 유용합니다.
클라우드플레어(Cloudflare)를 통해 악성 IP 차단
디도스(DDoS) 공격이 잦다면 클라우드플레어에 가입하여 연동시키면 도움이 됩니다. 특히 디도스 공격이 시작되면 이메일로 알림이 전송되도록 설정할 수 있습니다. 디도스 공격으로 서버가 다운되면 Under Attack 모드를 활성화하고 공격 IP를 체크하여 차단하면 서버가 복구될 수도 있습니다.
IP를 바꾸어가면서 공격하면 공격에 사용된 IP들을 체크하여 클라우드플레어에서 차단하도록 설정하는 것도 고려할 수 있습니다.
저는 2024년 8월과 9월 사이 한 달 동안 극심한 디도스 공격을 받았습니다. 당시 다음과 같은 조치로 경우 방어할 수 있었습니다.
- 서버 크기를 2GB 램에서 4GB 램으로 업그레이드
- 클라우드플레어 연동
- 디도스 공격이 시작되면 Under Attack 설정
- 클라우드웨이즈에서 공격 IP를 확인하여 클라우드플레어에서 차단하도록 설정
워드프레스 사이트 최적화하기
저는 서버에 10개가 넘는 워드프레스 블로그를 추가하여 관리하고 있습니다. 추가된 사이트 중 하나가 최적화되지 않아서 서버 과부하를 일으키는 원인으로 작용했습니다.
특정 워드프레스 사이트가 문제를 일으킨다면 어떤 원인 때문에 서버 CPU 또는 램 사용량이 급증하는지를 파악해야 대응 방법을 결정할 수 있습니다.
문제의 사이트를 케미클라우드로 일시적으로 옮겼지만, 해당 사이트에서 실행되는 MySQL 쿼리들이 디스크 I/O를 과도하게 사용하는 문제 때문에 공유 서버 전체의 성능을 저하시키고 있으므로 문제를 해결하지 않으면 웹 접속을 차단시키겠다는 경고 메일을 받았습니다.
경고를 받은 후에 케미클라우드의 도움을 받아 문제의 원인을 파악하고 문제 해결을 시도하여 사이트를 어느 정도 최적화할 수 있었지만, 문제가 완전히 해결이 안 되어 다시 클라우드웨이즈로 옮긴 후에 클라우드웨이즈 담당자의 도움을 받아서 추가적인 조치를 취해서 어느 정도 안정화시킬 수 있었습니다.
해당 사이트의 경우 Yoast SEO가 문제를 일으켰고, 특히 검색할 경우 과도한 쿼리가 실행되어 서버 전체에 영향을 미쳐서 Yoast SEO를 제거하고 검색 기능도 차단했습니다.
이러한 일련의 조치가 효과가 있었지만, 문제가 완전히 사라지지는 않았습니다. 이후에 Wordfence를 설치하여 Rate Limiting을 설정하니 문제가 사라졌습니다.
워드프레스 사이트를 운영하는 경우 GeneratePress와 같은 가벼운 테마를 사용하고 플러그인도 최소한으로 유지하는 것이 좋습니다. 무거운 테마를 사용하면 그만큼 사이트가 무거워져서 서버 리소스를 더 빠르게 소진할 수 있습니다.
Q&A (질문과 답변)
Q1. 악성 봇 차단 코드를 .htaccess에 추가했는데도 서버 부하가 줄지 않아요. 왜 그런가요?
.htaccess 차단은 Apache 레벨에서 요청을 막아주지만, 이미 알려진 User-Agent나 리퍼러 패턴에만 효과가 있습니다. 봇이 User-Agent를 위장하거나 매번 새로운 IP·리퍼러를 사용하는 경우에는 걸러지지 않을 수 있습니다. 이럴 때는 Cloudflare나 Wordfence 같은 상위 레이어의 방화벽과 함께 사용하는 것이 좋습니다.
참고로 .htaccess 파일에 IP 차단 코드를 추가하여 차단할 수 있지만, 이 방식은 완벽하게 차단되지 않는 경우가 있습니다. .htaccess 차단은 요청이 이미 서버(Apache)까지 도달한 상태에서 처리되기 때문에, 차단 여부를 판단하는 과정에서도 어느 정도 서버 자원이 소모됩니다.
이럴 때는 클라우드플레어의 WAF(Web Application Firewall) 규칙을 추가하여 문제가 되는 IP들을 차단하는 방법을 시도해볼 수 있습니다. 클라우드플레어에서 차단하면 요청이 서버에 도달하기 전, 엣지 단계에서 걸러지기 때문에 서버에는 전혀 영향을 미치지 않습니다. 악성 IP로 인한 서버 부하가 반복된다면 .htaccess보다 클라우드플레어 WAF 쪽에서 우선적으로 차단하는 것이 더 효과적입니다.
Q2. Wordfence의 속도 제한(Rate Limiting) 기능은 구체적으로 어떻게 작동하나요?
일정 시간 동안 한 IP에서 발생하는 요청 수가 설정한 임계값을 넘으면 해당 IP를 일시적으로 차단하거나 접속을 제한하는 방식입니다. 특히 IP를 바꿔가며 공격하는 디도스성 트래픽보다는, 동일 IP에서 반복적으로 몰려드는 요청을 억제하는 데 효과적입니다.
Q3. Limit Login Attempts Security 플러그인과 Wordfence를 같이 써도 되나요?
네, 함께 사용해도 무방합니다. 다만 두 플러그인 모두 로그인 시도 제한 기능을 갖고 있으므로 기능이 중복될 수 있습니다. 서버 부하 완화가 목적이라면 Wordfence의 속도 제한 설정에 더 비중을 두고, 로그인 페이지 보안 강화 목적이라면 Limit Login Attempts Security를 보조적으로 사용하는 방식을 고려할 수 있습니다.
Q4. 클라우드웨이즈를 쓰고 있는데도 디도스 공격으로 서버가 다운될 수 있나요?
클라우드웨이즈의 서버 방화벽이 많은 공격을 걸러주지만, 방화벽을 우회하거나 서버 자원 자체를 소진시키는 방식의 공격에는 완전히 막지 못할 수 있습니다. 이런 경우 Cloudflare 연동, 서버 사양 업그레이드, Under Attack 모드 활성화 등 추가적인 대응이 필요합니다.
Q5. Under Attack 모드를 계속 켜두면 방문자 경험에 문제가 생기지 않나요?
Under Attack 모드는 방문자에게 잠깐의 확인 절차(체크 화면)를 거치게 하므로, 평상시에 계속 켜두면 정상 방문자의 접속 경험을 떨어뜨릴 수 있습니다. 공격이 진행 중일 때만 켜두었다가 공격이 잦아들면 다시 꺼두는 방식으로 운영하는 것이 좋습니다.
Under Attack 모드에서는 구글 등 검색엔진의 접근이 방해를 받는 것 같습니다. 사용자 경험과 SEO를 위해 평소에는 Under Attack 모드는 활성화하지 않도록 합니다.
Q6. 서버 램(RAM)을 늘리는 것만으로 디도스 공격을 방어할 수 있나요?
서버 사양 업그레이드만으로는 근본적인 해결이 어렵습니다. 램을 늘리면 일시적으로 버틸 수 있는 여유가 생기지만, 공격 규모가 커지면 다시 한계에 부딪힐 수 있습니다. 이 글에서 소개한 것처럼 클라우드플레어 연동, 악성 봇 차단, 속도 제한 설정 등을 함께 적용해야 실질적인 방어 효과를 볼 수 있습니다.
댓글 남기기