사이트를 불량 봇으로부터 보호하기: Badbot 차단 코드

Last Updated: 2024년 09월 11일 댓글

불량 봇 때문에 CPU 사용량이 100%로 치솟아 워드프레스 사이트 속도가 크게 느려지는 문제가 발생하는 경우가 있을 수 있습니다. 이런 경우 .htaccess 파일에 Badbot을 차단하는 코드를 추가하여 문제를 해결할 수 있습니다.

사이트를 불량 봇으로부터 보호하기: Badbot 차단 코드

방문자 수가 증가하거나 순간적으로 트래픽이 급증하는 경우 서버 리소스 부족으로 인해 사이트 속도가 느려지는 현상이 발생할 수 있습니다.

예를 들어, 패스트코멧(FastComet) 호스팅을 이용하는 경우 서버 리소스가 부족하게 되면 'Resource Limit is Reached'와 같은 에러가 발생할 수 있습니다. 다음과 같은 원인으로 인해 이러한 오류가 발생할 수 있습니다.

  1. 웹사이트 트래픽 증가: 사이트에 갑작스럽게 많은 방문자가 몰리면 리소스 한도를 초과하여 에러가 발생할 수 있습니다.
  2. 백엔드 스크립트 또는 크론 작업: 자동 백업이나 크론 작업 등 백그라운드에서 실행되는 스크립트가 웹사이트 성능에 부담을 줄 수 있으며, 이는 일반적인 트래픽과 함께 리소스 과부하를 일으켜 사이트 성능 저하를 초래할 수 있습니다.
  3. 웹 크롤러 또는 검색엔진의 잦은 색인화: 검색엔진이 사이트를 너무 자주 방문하여 색인 생성을 시도하면 서버에 과부하를 일으킬 수 있습니다.
  4. 잘못 작성된 스크립트: 오래되거나 잘못 작성된 스크립트 또는 플러그인이 오작동을 일으켜 무한 루프를 유발할 수 있습니다.
  5. 디도스(DDoS) 공격: 서비스 거부 공격(DDoS)은 서버를 과부하 상태로 만들어 정상적인 사용이 불가능하게 만듭니다.

불량 봇(Badbot)

"불량 봇(Badbot)"은 사이트나 서버에 악의적이거나 원치 않는 활동을 하는 자동화된 소프트웨어 또는 봇을 일컫습니다.

Badbot은 웹사이트에 비정상적으로 많은 트래픽을 유발하여 서버를 과부하를 일으키고 성능 저하나 서버 다운을 초래할 수 있습니다.

불량 봇 (Badbot) 차단

최근 이 블로그가 지속적인 디도스(DDoS) 공격을 받았습니다. 처음 디도스 공격이 발생하여 클라우드웨이즈(Cloudways)에 연락하니 공격에 사용된 IP 주소들을 차단해주었습니다. 그러면서 불량 봇을 차단하는 코드도 함께 추가해주었습니다.

다음과 같은 코드를 .htaccess 파일에 추가하면 배드 봇을 차단할 수 있습니다.

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*(SCspider|Textbot|s2bot|MJ12bot|YandexBot|SemrushBot|AspiegelBot|BLEXBot|webmeup-crawler|oBot|Semrush|SiteExplorer|BaiDuSpider).*$ [NC]
RewriteRule .* - [F,L]

FTP/SFTP에 접속하여 워드프레스가 설치된 루트 디렉터리에 있는 .htaccess 파일에 위의 코드를 추가하시기 바랍니다.

파일질라(FileZilla)와 같은 FTP 클라이언트 툴을 사용하여 FTP 서버에 접속한 다음, .htaccess 파일을 오른쪽 마우스 버튼을 클릭하여 보기/편집을 클릭하여 파일을 편집할 수 있습니다.

.htaccess 파일의 맨 위에 상기의 코드를 추가할 수 있습니다.

FTP 접속 정보를 모르는 경우 웹호스팅 업체에 문의할 수 있으며, 다음 글에서 FTP 사용 방법을 참고해보세요.

디도스(DDoS) 공격 발생 시 대응 방법

개인 블로그를 상대로 디도스 공격이 그리 흔하지는 않지만, 디도스 공격 단가가 과거에 비해 하락하여 소규모 사이트를 상대로도 디도스 공격이 자주 발생한다고 합니다.

이 블로그의 경우 지난 8월 23일부터 디도스 공격이 시작되었으며, 한 번 공격이 들어오면 3~4시간에서 길게는 7~8시간까지 지속되었습니다. 며칠 동안 매일 한 번씩 지속되다 2~3일 정도 잠잠했다가 다시 반복하는 패턴으로 디도스 공격을 받았습니다.

지금은 다행히 지난 금요일에 공격이 발생한 이후 5일째 잠잠합니다.😄

디도스 공격을 받으면 다음과 같은 방법으로 대응할 수 있습니다.

  1. Cloudflare에 가입하여 도메인을 연결하고, 디도스 발생 시 Under Attack 모드를 활성화합니다.
  2. 웹호스팅 업체에 연락하여 공격에 사용된 IP 주소들을 차단해줄 것을 요청합니다.
  3. 필요한 경우 서버 리소스를 증설합니다.

저는 2GB 램 크기에서 디도스 방어가 잘 안 되어 4GB 램 크기로 업그레이드하니 디도스 공격을 받더라도 안정적으로 사이트가 정상 작동했습니다.

클라우드플레어(Cloudflare)에 연동하는 방법은 다음 글을 참고해보세요.

디도스 공격이 들어오면 초당 엄청난 HTTP 요청이 수신됩니다. 저는 디도스 공격이 발생하면 이메일로 알림을 받도록 설정했습니다. 알림 이메일에 초당 최대 요청수에 대한 정보가 포함되어 있습니다.

상기 이미지에서 830 rps가 초당 요청수(Requests per Second)를 의미한다고 합니다. 가장 강도가 심할 때 이 정도로 공격이 들어왔습니다.

디도스 공격이 들어오면 트래픽 소모가 심하므로 클라우드플레어의 CDN을 이용하는 것이 좋습니다. 클라우드플레어에서 과도한 경우가 아니라면 매우 큰 트래픽도 감당해 주는 것 같습니다.

저는 평소에는 CDN 캐시를 비활성화하였다가 디도스 공격이 시작될 때에만 CDN을 활성화하고 있습니다.

이 워드프레스 사이트를 타겟으로 한 공격에서는 한 번의 공격에 400~500GB의 트래픽이 발생했습니다.

트래픽 공격이 자주 발생하는 경우 클라우드플레어 CDN을 사용하지 않으면 이렇게 큰 트래픽을 감당할 수가 없습니다.

참고


댓글 남기기

Leave a Comment