Deixa eu tentar dar um contexto melhor de como eu estruturo os servidores atualmente.

. Servidores basicos na Linode utilizando CyberPanel . Não fiz nenhum tipo de configuração adicional relacionado a segurança . Os dominios sao adicionados na Cloudflare e crio um registro A com o IP da Linode . Os sites dos clientes sao sistemas em Laravel

A maioria dos clientes nao tem esse problema com ataques, mas um em especifico esta sendo o alvo principal. Ele ate me disse que o responsavel pelo ataque falou com ele, mostrou uma tela de prompt com o bot que faz o ataque(nao achei mais o print pra anexar aqui), e disse que esta fazendo de proposito para chantagear ele(e algumas outras pessoas com sites similares) e tambem por ele ter um site do mesmo tipo que nao e popular(leia-se: inveja).

Então minha dúvida é, existe uma configuração de segurança que precise ser feita? Com relação a permitir apenas requisições dos IP's da CF, eu acredito que deve ser feito diretamente no Firewall da Linode, mas a questão é sobre quais portas bloquear, pois fico na duvida com relação as portas dos serviços internos: banco de dados(3306), email(443/587) e redis(6379) por exemplo.

Sim, ha como bloquear as requisicoes que nao sao da CDN, você só precisa pegar o CIDR deles como por exemplo: https://www.cloudflare.com/ips/ E na DigitalOcean permitir que apenas esses IPs acessem a porta da aplicacao. Existem varias implicacoes nisso, como por exemplo algum serviço de terceiro que bata direto na aplicação.

Outra forma é você editar o VCL no CloudFlare ou talvez eles tenham um painel para isso e adicionar um header com um valor criptografado em base64 por exeplo, e na Linode, na sua camada web, permitir apenas requests que tenham aquele header.

Existem diversas formas de bloquear isso, o mais importante é entender como é o ataque e qual das solucoes melhor te serve.

Ou pegar os IPs das CDNs e colocar no banco de dados. Seu banco de dados deveria ser aberto a rede externa mesmo? Se sim, eu recomendaria uma VPN para poder acessá-lo.

No firewall da Linode consigo fazer isso, mas alem do campo IP tem outros campos para cada IP que eu quiser permitir/bloquear: . Protocolo: tcp, udp, icmp e ipencap . Portas(campo de multipla seleção): custom, dns(53), http(80), https(443), mysql(3306) e ssh(22) . Source: todos IPV4, todos IPV6 e IP/Netmask > Seu banco de dados deveria ser aberto a rede externa mesmo? Não, o banco de dados não precisa de acesso externo. Qual seria sua recomendação para configurar esses campos para cada um dos IP's da Cloudflare?
Primeiro passo seria bloquear o acesso externo ao banco e permitir somente da rede interna. Isso já pode te ajudar muito. Mas tome cuidado em como sua aplicacao chama o banco, confira se ela usa a rede interna. Se voce optar pela solucao de bloquear um IP ou um CIDR inteiro, você então vai bloquear todos os prrotocolos/portas tcp/udp FILTRANDO apenas para esse IP ou CIDR, afinal, esse IP não deve sacessar sua rede.