본문 바로가기

IT 리뷰/블로그 SEO

워드프레스 & WHM 보안 서치콘솔 오류부터 외부 유입 차단까지

반응형

검색 엔진 최적화(SEO)와 서버 보안을 동시에 잡는 1%의 설정 디테일

워드프레스 운영 중 구글 서치콘솔에서 "robots.txt가 유효하지 않음"이나 "REST API 403 오류" 메일을 받으셨나요? 혹은 댓글창을 껐는데도 쏟아지는 스팸 때문에 골머리를 앓고 계신가요? 이 모든 문제는 단순한 플러그인 설정이 아닌, 서버 하단부(WHM/PHP)와 클라우드플레어의 설정 불일치에서 시작됩니다.

제가 직접 하나하나 삽질하며 찾아낸 최적의 설정값을 공개합니다.

1. robots.txt "Unknown directive" 오류와 AI 봇 차단

 

구글 페이지스피드 Robots.txt AI봇 차단 해결후기

웹사이트 운영자라면 한 번쯤 마주하게 되는 구글 서치콘솔과 페이지스피드 인사이트의 빨간 경고등. 최근 저도 robots.txt 유효성 오류와 REST API 403 Forbidden 문제를 해결하며 진땀을 뺐습니다.우선

jab-guyver.co.kr

구글 페이지스피드서치콘솔에서 29번 라인 등에 오류가 뜨는 이유는 클라우드플레어의 비표준 문법 때문입니다.

Robots.txt 수정값

이를 해결하기 위해 제가 적용한 표준 최적화 코드입니다.

🛠 적용 코드

# 1. AI 및 데이터 무단 수집 봇 차단 (표준 지시어)
User-agent: Amazonbot
User-agent: Applebot-Extended
User-agent: Bytespider
User-agent: CCBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: GPTBot
User-agent: meta-externalagent
Disallow: /

# 2. 다음 웹마스터 도구 인증 (기존 인증값 유지)
#DaumWebMasterTool: [본인_인증키]

# 3. 보안을 위한 핵심 경로 차단
User-agent: *
Disallow: /wp-login.php
Disallow: /wp-register.php
Disallow: /xmlrpc.php  # XML-RPC 공격 방어
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php # 워드프레스 필수 통신 허용
Allow: /

# 4. 멀티 사이트맵 등록 (색인 생성 속도 최적화)
Sitemap: https://yourdomain.co.kr/sitemap.xml
Sitemap: https://yourdomain.co.kr/post-sitemap.xml

왜 이렇게 했나? 클라우드플레어의 '콘텐츠 신호 정책'을 끄고 수동으로 설정하면 구글 봇과의 충돌을 막으면서도 GPTBot 같은 무단 크롤러를 완벽하게 배제할 수 있습니다.

2. WHM(Web Host Manager) PHP 버전 핸들러 동기화

우선 저는 블루호스트 VPS 서버를 사용하고 있으며 PHP 8.3으로 도는데 .htaccess 파일이 8.2를 가리키면 REST API 403 오류가 발생하느것을 확인했습니다.

워드프레스 사이트 건강 - 예정된 이벤트가 실패했습니다.
워드프레스 사이트 건강 - 예정된 이벤트가 실패했습니다.

그래서 사이트 건강 진단에서 '예정된 이벤트 실패'가 뜬다면 바로 이 부분을 확인해야 합니다.

 

워드프레스 성능 개선 3가지 - 하나 이상의 필수모듈 누락 예정된 이벤트, 지속적인 객체캐시 사

워드프레스 사이트 건강 경고 – 필수 모듈, 예약 작업, 객체 캐시까지 완벽 정리 워드프레스 사이트를 운영하다 보면 관리자 화면의 ‘도구 > 사이트 건강 상태’ 메뉴에서 다양한 경고나 권장

jab-guyver.co.kr

우선 이에대해서 기존에 작성한 글로 위에 참고하세요

✅ WHM 및 cPanel 필수 체크리스트

  • MultiPHP Manager: 도메인별 PHP 버전을 8.3으로 일괄 적용
  • MultiPHP INI Editor: memory_limit 512M, allow_url_fopen On 설정 (루프백 통신 필수)
  • .htaccess 동기화: AddHandler application/x-httpd-ea-php83 .php 코드 확인

3. 핫링크 방지 규칙과 REST API 403 해결

내 이미지를 무단으로 퍼가는 것을 막기 위해 핫링크 방지(Hotlink Protection)를 설정할 때, 서버 자신(Local)의 요청까지 막아버리는 실수를 범하기 쉽습니다.

🛠 최적화된 .htaccess 핫링크 보안 코드

RewriteEngine on
# 서버 IP 및 루프백 예외 처리 (API 403 에러 방지 핵심)
RewriteCond %{REMOTE_ADDR} ^127\.0\.0\.1$ [OR]
RewriteCond %{REMOTE_ADDR} ^[본인_서버_IP]$ [OR]
RewriteCond %{HTTP_REFERER} !^$
# 본인 도메인 허용
RewriteCond %{HTTP_REFERER} !^https://(www\.)?yourdomain\.co\.kr [NC]
# 차단할 확장자 지정 및 Forbidden 처리
RewriteRule \.(jpg|jpeg|png|gif|webp|pdf)$ - [F,NC,L]

* 리퍼러가 비어있는(Internal Request) 경우를 허용해야 워드프레스 내부 스케줄러가 정상 작동합니다.

4. 외부 유입 차단 및 크롤링 효율 극대화

구글 페이지스피드에서 "링크를 크롤링할 수 없음" 경고가 뜨는 것은 SEO에 치명적입니다.

로그인 시도 제한 리로리드에서 하루에 2만5천권에 달하는 로그인 시도 중

또한 댓글창을 닫아도 들어오는 스팸은 '뒷문'을 잠그지 않았기 때문입니다.

① HTML/CSS UI 최적화

공유 버튼의 javascript:void(0)를 제거하고 <button> 태그로 교체했습니다.

로봇에게는 버튼임을 명확히 하고, 사용자에게는 빠른 반응성을 제공합니다.

② 스팸 댓글의 근본적 차단

  • 원인: 봇이 wp-comments-post.php로 직접 POST 요청 전송
  • 조치: 클라우드플레어 WAF(Web Application Firewall)에서 해당 파일에 대한 외부 접근을 차단하거나, 시스템 수준에서 기능을 죽이는 Disable Comments 설정을 적용했습니다.

워드프레스 최적화는 단순히 플러그인 설정에서 끝나지 않습니다.

진짜 승부는 서버 관리 도구인 WHM(Web Host Manager)에서 어떤 시스템 패키지를 설치하고, 어떤 보안 레이어를 활성화하느냐에서 중요합니다.

오늘은 제가 직접 서버 환경을 구축하며 진행했던 WHM 시스템 보안 및 모듈 활성화 과정을 아주 상세하게 기록해 봅니다.

5. WHM 시스템 패키지 및 모듈 활성화 (Deep Dive)

서버 안정성과 보안을 위해 WHM에서 가장 먼저 건드렸던 핵심 설치 항목들입니다.

왜 이 모듈들이 필요한지 이유와 함께 정리했습니다.

🛡️ ModSecurity (WAF) 활성화

웹 애플리케이션 방화벽입니다. SQL 인젝션, XSS 공격 등 웹 기반 공격을 서버 단에서 1차로 필터링하기 위해 필수적으로 설치하고 규칙(Rule)을 활성화했습니다.

⚡ Redis & Memcached 설치

데이터베이스 부하를 줄이기 위해 객체 캐싱 모듈인 Redis를 서버에 직접 설치했습니다. PHP 모듈(ea-php-redis) 활성화 과정이 수반되어야 워드프레스와 연동됩니다.

🛠️ EasyApache 4 프로파일 커스텀

단순한 PHP 설치가 아닙니다. mbstring, imagick, bcmath 등 워드프레스 권장 라이브러리를 하나하나 선택하여 빌드하고 활성화했습니다.

cPHulk Brute Force Protection

우선 보안 및 로그인 횟수 봇들을 차단하기 위해서 ModSecurity WAF와 함께 cPHulk Brute Force Protection 등을 모두 하나하나 설정을 수정했습니다.

 

Cloudflare + WHM(cPanel) + ModSecurity + cPHulk 해외 로그인 공격(Brute Force) 차단

Cloudflare + WHM(cPanel) + ModSecurity + cPHulk로 해외 로그인 공격(Brute Force) 막은 실전 설정값 정리최근 워드프레스 사이트 운영 중 해외 IP에서 로그인 시도(무차별 대입, Brute Force)가 하루 수천~1만 건 단

jab-guyver.co.kr

처음 WHM 구입하면 모든것이 어느정도 설정이 되어 있는줄 알았는데 블루호스트 VPS 구입하고 3년이 넘게 쓰고서 이제야 이런설정을 만져보네요

우선 제가한 설정은 위에 글을 참고하시고 모든 설정을 완료한 뒤에는 캐시를 제거해줍니다.

🏁 최종 적용의 완성 캐시 퍼지(Purge)

설정값을 아무리 잘 바꿔도 캐시가 남아있으면 소용없습니다. 저는 설정을 마칠 때마다 다음 세 단계를 루틴처럼 수행합니다.

  1. 클라우드플레어: [Caching] -> [Purge Everything] (가장 중요)
  2. 워드프레스 Redis: [Redis Object Cache] -> [Flush Cache] (DB 쿼리 갱신)
  3. 서치콘솔: [색인 생성 범위] -> [해결 방법 확인] 요청

결과적으로 페이지스피드 점수는 100점 만점에 가까운 초록불로 바뀌었고, 지긋지긋하던 REST API 오류도 사라졌습니다.

728x90
반응형
그리드형