Talvez você possa usar a solução de aqui ?
Resumindo:
RewriteCond %{QUERY_STRING} feed=ads
RewriteRule .* - [F]
Acabei de transferir meu site para um novo host e estou vendo uma quantidade enorme de spam de feeds RSS.
Dentro dos meus logs do Apache, vejo um monte de solicitações GET para um URL de feed RSS que não existe (pelo menos 20 por segundo):
2017-11-03T12:06:43.128572347Z [03/Nov/2017:12:06:42 +0000] 192.168.37.231 TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 "GET /?feed=ads HTTP/1.1" 2475
2017-11-03T12:06:43.389441028Z 192.168.37.231 - - [03/Nov/2017:12:06:43 +0000] "GET /?feed=ads HTTP/1.1" 301 -
2017-11-03T12:06:43.389574732Z [03/Nov/2017:12:06:43 +0000] 192.168.37.231 TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 "GET /?feed=ads HTTP/1.1" -
2017-11-03T12:06:43.408464613Z 192.168.37.231 - - [03/Nov/2017:12:06:43 +0000] "GET /?feed=ads HTTP/1.1" 301 -
2017-11-03T12:06:43.40850661Z [03/Nov/2017:12:06:43 +0000] 192.168.37.231 TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 "GET /?feed=ads HTTP/1.1" -
2017-11-03T12:06:43.411540849Z 192.168.37.231 - - [03/Nov/2017:12:06:43 +0000] "GET /?feed=ads HTTP/1.1" 301 -
2017-11-03T12:06:43.411641255Z [03/Nov/2017:12:06:43 +0000] 192.168.37.231 TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 "GET /?feed=ads HTTP/1.1" -
2017-11-03T12:06:43.468777814Z 192.168.37.231 - - [03/Nov/2017:12:06:43 +0000] "GET /?feed=ads HTTP/1.1" 503 2475
Eu não estou vendo mais nada nos meus logs do Apache que seriam a causa dessa CPU constantemente rodando com 100% de problemas.
Dentro dos meus logs do php-fpm, estou vendo:
2017-11-03T13:20:07.466546451Z [03-Nov-2017 13:20:07] NOTICE: [pool www] child 117 started
2017-11-03T13:20:14.359871929Z [03-Nov-2017 13:20:14] NOTICE: [pool www] child 91 exited with code 0 after 606.968836 seconds from start
2017-11-03T13:20:14.359917735Z [03-Nov-2017 13:20:14] NOTICE: [pool www] child 127 started
2017-11-03T13:20:43.867682884Z [03-Nov-2017 13:20:43] NOTICE: [pool www] child 90 exited with code 0 after 637.440716 seconds from start
2017-11-03T13:20:43.867694486Z [03-Nov-2017 13:20:43] NOTICE: [pool www] child 135 started
2017-11-03T13:20:58.577836366Z [03-Nov-2017 13:20:58] NOTICE: [pool www] child 86 exited with code 0 after 662.714762 seconds from start
2017-11-03T13:20:58.578920398Z [03-Nov-2017 13:20:58] NOTICE: [pool www] child 136 started
2017-11-03T13:22:25.865573438Z [03-Nov-2017 13:22:25] NOTICE: [pool www] child 89 exited with code 0 after 742.035998 seconds from start
E, finalmente, o pool de fpm atinge seu limite:
2017-11-03T11:59:03.178672211Z [03-Nov-2017 11:59:03] WARNING: [pool www] server reached max_children setting (15), consider raising it
Eu não tenho ideia de como evitar que isso ocorra, mas isso está fazendo com que minha CPU gire em 100% e torne meu site inacessível.
Além disso, não sei ao certo por que, no meu último encontro, isso não foi um problema, mas agora que eu transferi isso, isso se tornou um problema.
Como evito essas solicitações GET? Eu tenho tentado bloquear isso no meu arquivo .htaccess, eu removi todos os arquivos de modelo de feed RSS que eu tinha, e eu desabilitei o RSS no site - mas nada disso parece estar funcionando.
Talvez você possa usar a solução de aqui ?
Resumindo:
RewriteCond %{QUERY_STRING} feed=ads
RewriteRule .* - [F]
Tags cpu rss spam-prevention