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?