Lorsque vous dites "domaines aléatoires", vous voulez dire des noms d'hôtes, n'est-ce pas? Pas des adresses IP?
Si c'est le cas, un nom d'hôte est, du moins en théorie, complètement dissocié de l'adresse IP réelle du serveur du point de vue du serveur. Chaque (enfin, presque chaque) requête HTTP aura un en-tête HTTP appelé 'Host', il est très facile de le simuler ou de le "faire" faux. Prenez la commande suivante
curl -H "Host: serverfault.com" http://www.google.com/
(Ignorez la sortie)
Cette commande amène les serveurs Google à répondre à une requête pour 'serverfault.com' comme s'il s'agissait d'un hôte virtuel normal, ce qui, dans le cas de Google, semble pointer vers un fichier qui redirige vers le site principal de Google.
En résumé, il n'y a pas de moyen de 'bloquer' ces demandes sans que votre pare-feu n'analyse chaque demande, ce qui ouvre tout un autre monde de problèmes. Une réponse 404 ou 403 est correcte, 404 signifie que la ressource n'existe pas sur le serveur, bien que normalement cela se réfère à un fichier, cela pourrait se référer à un site entier aussi.
Le fait que votre serveur choisisse de répondre ou non est basé (de manière simpliste) uniquement sur l'adresse IP cible, pas sur le nom d'hôte. Lorsque le serveur arrive à lire le nom d'hôte, il a déjà établi une connexion. Oui, vous pourriez lui demander de simplement interrompre la connexion, mais répondre avec un 404 est une bien meilleure option car cela dit officiellement au client que la ressource n'existe pas.