Pour protéger une configuration aussi médiocre, vous pouvez bien sûr augmenter la RAM disponible sur les instances VPS hôtes, mais comme nous pouvons le voir, même une AWS EC2 Large (8 Go de RAM) n'est pas en mesure de traiter correctement un scan Nuclei de base sans latences pour les autres utilisateurs. 8GB RAM est normalement plus que suffisant pour supporter un service web typique et devrait être capable de gérer un scan Nuclei, il suffit de le configurer correctement.
Pour comprendre le problème, il est important de savoir que les serveurs web traditionnels comme Apache ont été conçus à l'origine pour gérer efficacement un nombre modéré de connexions simultanées, mais pas le type de concurrence élevée exigée par le trafic moderne ou les scanners automatisés.
En revanche, les Reverse-Proxy comme Nginx sont construits autour d'une architecture événementielle, ce qui les rend très efficaces pour gérer des milliers de connexions simultanées avec une utilisation minimale des ressources, contrairement à Apache, qui génère un processus ou un thread par requête. Cela permet également de limiter le nombre de demandes avant qu'elles n'atteignent les services qui consomment beaucoup de mémoire vive.
Nginx fonctionne comme un tampon protecteur : il absorbe, gère et filtre le trafic web entrant - empêchant Apache, PHP et la base de données d'être submergés, même sur de petites configurations VPS.
Ensuite, nous avons configuré toutes nos instances derrière une configuration Nginx très simple, en ajoutant proxy_cache et un limit_conn très basique devant tous nos Wordpress. Cela évite qu'une seule IP (comme Nuclei) ne submerge le backend avec trop de connexions simultanées :