디도스 공격으로 인한 워드프레스 DB (데이터베이스) 에러 문제 해결

워드프레스 정보를 제공하는 블로그 Avada 2024. 9. 28. 23:55 • 댓글:

일반 공유 웹호스팅에서 사이트가 디도스(DDoS) 공격을 당하면 일반적으로 사이트가 차단되고 디도스가 반복되면 해당 웹호스팅에서 퇴출될 수 있습니다. 공유호스팅에서 한 사이트 때문에 많은 사이트가 피해를 받는 상황이 발생할 수 있기 때문에 어쩔 수 없는 조치인 것 같습니다.

최근 싱가포르에서 사업을 하는 클라이언트가 관리하는 한 사이트에 디도스 공격이 감지되어 사이트가 차단되는 문제가 발생한 적이 있습니다. 다행히 디도스 공격이 멈추었지만 디도스 공격 여파로 인해 디비 에러가 발생하여 사이트에 접속이 되지 않는 문제가 발생했습니다.

디도스 공격으로 인한 워드프레스 DB (데이터베이스) 문제 해결

디도스 공격을 당하는 경우

사이트가 디도스 공격을 당하게 되면 단독 서버로 옮겨서 대응해야 할 수 있습니다. 제 워드프레스 블로그는 9년 이상 운영하면서 디도스 공격을 당한 적이 없었지만 지난달 8월 말부터 거의 한 달 동안 14차례나 디도스 공격을 받았습니다.

 

디도스 (DDoS) 공격 트래픽 소모량과 초과 트래픽 비용

지난 8월 23일부터 워드프레스 블로그에 대한 디도스 (DDoS) 공격이 지속적으로 이루어지고 있습니다. 어제까지 14차례나 디도스 공격이 있었으며 이틀에 한 번꼴로 공격이 들어왔습니다.처음에는

avada.tistory.com

저는 클라우드웨이즈에서 서버를 생성하여 운영하고 있었는데, 클라우드플레어(Cloudflare)에 도메인을 연결하고 서버 크기를 2GB 램 서버에서 4GB 램 서버로 업그레이드하니 디도스 공격이 어느 정도 방어가 되었습니다. 클라우드플레어에서 Under Attack 모드를 활성화해도 CPU 사용률이 떨어지지 않으면 공격에 이용되는 IP들을 확인하여 차단하면 보통 CPU 사용률이 정상화되었습니다.

일반 웹호스팅에서는 디도스 공격이 들어오면 해당 사이트가 호스팅 업체에 의해 차단 조치되고, 심할 경우 방을 빼달라는 요청을 받거나 계정이 삭제될 수 있습니다. 공유호스팅에서 한 사이트가 디도스 공격을 받으면 동일 서버 내에 입주한 다른 사이트들에도 영향을 미치므로 호스팅 운영자 입장에서는 어쩔 수 없는 조치가 아닌가 생각됩니다.

디도스 공격이 자주 들어오면 클라우드웨이즈나 AWS 등으로 옮기고 클라우드플레어를 활성화하여 방어하는 것을 고려할 수 있습니다.

워드프레스 데이터베이스 문제로 인해 디도스 공격으로 잘못 감지되어 서버 차단

싱가포르에서 여러 사이트를 운영하는 한 클라이언트로부터 디도스 공격으로 인해 사이트가 차단당한 문제로 연락을 해왔습니다. 

Your server was experiencing heavy load earlier, this seems to be due to a flood of requests directed at OOO.com. These are coming from many different IP addresses, notably from Amazon's IP ranges. As such, we aren't able to just block by IP address or range easily, so we've had to block access to the entire site for now. I will take a look and see if we can block by ranges and allow access to the site once that's done. If this is something arranged on your customer's side (for SEO purposes, for example), please have them inform their SEO provider to scale down the rate of requests and spread them out over time.

많은 HTTP  요청 때문에 서버에 과부하가 걸려 사이트가 차단되었다고 합니다. 하지만 하루 정도 지난 후에 다량의 Request가 멈추어서 사이트 차단이 풀렸습니다. 그러나 wp_options 테이블에서 문제가 발생하여 DB 에러가 발생했습니다.

The block on OOO.com was actually removed since the 19th as the wave of requests in question seem to have stopped. The block itself should only have shown a Forbidden error. The current error on the site is "Error establishing a database connection", this has nothing to do with us. I've taken a look and it seems that there was an issue with the wp_options table for their database:

OOOO_DB.wp_options
warning : Number of rows changed from 0 to 828285
status : OK

The table seems to have an unusually high number of entries, with a large number of it being similar ones (see attached screenshot.) You may wish to contact the web developer and have them take a look at this as it may be the cause of your issue.

레코드 수가 80만 개 이상으로 급증하면서 "Error establishing a database connection (데이터베이스 연결 중 오류)" 문제로 사이트에 접속이 되지 않았습니다. 

실제로 디도스 공격으로 인한 것인지는 확신할 수 없지만, 다량의 HTTP 요청으로 인해 대규모 transient 레코드가 생성되면서 디비가 에러를 일으킨 것이 아닌가 추정되었습니다.

phpMyAdmin에 접속하여 데이터베이스를 확인해 보니 엄청난 수의 _transient_ 항목이 생성된 것이 확인되었습니다.

디도스 공격으로 인한 워드프레스 DB (데이터베이스) 에러 문제 해결

디도스 공격으로 인해 HTTP 요청이 급증하는 경우 _transient_ 항목이 대량으로 생성될 가능성이 있는 것 같습니다. 특히 우커머스에서 transient 캐시를 생성하거나 업데이트하는 작업이 빈번하게 발생하는 경우에 DB에 큰 부하를 일으킬 수 있다고 합니다.

디도스 공격으로 HTTP 요청 급증 → 디비에서 _transient_ 항목 급증  → DB 과부하로 인해 디비 접속 에러 발생

순전히 저의 뇌피셜이기는 이 때문에 문제가 발생한 것이 아닌가 생각됩니다.

위의 추정을 바탕으로 조치를 취했고 일주일이 지나도 문제가 재발하지 않은 것으로 보아 제가 취한 조치가 효과가 있었던 것 같습니다.

만약 상기의 원인으로 인해 문제가 발생한 것이라면 다음과 같은 조치를 취하여 대응할 수 있습니다.

  1. 디비에 접속하여 _transient_ 항목을 모두 삭제
  2. 만료된 우커머스 _transient_ 항목 자동 삭제 및 만료 시간 설정

우커머스 관련 transient 레코드는 다음 그림을 참고하여 삭제할 수 있습니다.

[경고*작업을 진행하기 전에 전체 DB 백업을 실시하시기 바랍니다. 명령을 실행한 후에는 되돌릴 수 없습니다.*]

디도스 공격이 다시 발생한다면 이것은 별개의 문제 같습니다. 이 경우에는 공유호스팅을 이용한다면 VPS 서버로 옮겨서 대응해야 할 수 있습니다.

 

클라우드웨이즈 디도스 (DDoS) 공격 대응 방법 4가지 - 워드프레스 정보꾸러미

클라우드웨이즈에서 호스팅하는 사이트에 디도스(DDoS) 공격이 들어오는 경우 어떻게 되는지에 대하여 작년에 클라우드웨이즈에 문의한 적이 있습니다. 클라우드웨이즈 담당자에 의하면 분산

www.thewordcracker.com

디도스 공격이 단가가 과거에 비해 저렴해주셔서 이제는 소규모 사이트를 대상으로 한 디도스 공격도 많이 발생하는 것 같습니다.😥

참고

https://avada.tistory.com/3451

 

10번째 디도스 공격... 정말 징하네요

지난 8월 23일 첫 디도스 공격 이후 오늘 10번째 디도스 공격을 받았습니다. 며칠 동안 공격하다 2~3일 정도 쉰 후에 다시 공격을 재개하는 패턴을 반복하고 있네요. 처음에는 제대로 대응을 못해

avada.tistory.com

https://avada.tistory.com/2897

 

엘리멘터 무료 버전 vs. 프로 버전 비교

엘리멘터(Elmentor)는 500만 개가 넘는 사이트에 설치되어 사용되고 있는 인기 워드프레스 페이지 빌더 플러그인입니다. 엘리멘터는 무료 버전과 프로 버전으로 제공됩니다. Elementor 프로 버전에서

avada.tistory.com

https://avada.tistory.com/3458

 

블루호스트에서 멀웨어 치료 및 클라우드웨이즈로 워드프레스 이전 작업

한 계정에 여러 개의 사이트를 설치하는 경우 하나의 사이트가 멀웨어에 감염되며 다른 사이트들도 멀웨어에 감염되는 경우가 많습니다. 블루호스트(Bluehost)에서 같은 계정에 있는 모든 워드프

avada.tistory.com