Quelle est la meilleure pratique pour bloquer les adresses IP?

J’ai une application Java qui s’exécute sur le serveur Tomcat 7. Où sont les nombreux bots qui essayent mon application Web et “mangent” des ressources. Sur quel niveau dois-je bloquer les adresses IP de ces robots?

  1. Je pense qu’au niveau de l’application, ce n’est pas une bonne idée, mais dans ce cas, je peux append dynamicment de nouvelles adresses IP bloquées.

  2. J’ai lu sur Valves sur Tomcat et j’ai testé de cette façon, mais si le nombre d’IP sera supérieur à 1000 ou supérieur à 10000? Et après chaque ajout, je dois redémarrer tomcat. Ce n’est pas si mignon.

  3. Où est une autre façon – pare-feu du serveur – mais dans ce cas, je ne peux pas append dynamicment IP, et je pense que je ne peux pas faire de page personnalisée pour l’erreur 403 dans ce cas.

Quel est le meilleur moyen?

Sur quel niveau dois-je bloquer les adresses IP de ces robots?

Au niveau du pare-feu. Par exemple, utiliser des IPtables ou un pare-feu externe.

Le blocage dans l’application (ou dans la stack Tomcat) signifie que le code de votre serveur seb doit accepter les connexions indésirables avant de décider de les fermer. Il est beaucoup plus efficace de filtrer les paquets beaucoup plus tôt. Il économise les ressources du système et permet de mieux répondre aux attaques DoS.

Où est une autre façon – pare-feu du serveur – mais dans ce cas, je ne peux pas append dynamicment IP, et je pense que je ne peux pas faire de page personnalisée pour l’erreur 403 dans ce cas.

Vous pouvez mettre à jour un pare-feu IPtable à la volée et rapidement.

Vous ne devriez pas donner à ces gars-là un 403. Si vous avez décidé de les bloquer, c’est probablement parce qu’ils ignorent votre “robots.txt” et / ou font d’autres choses antisociales. Ils ne méritent pas une réponse 403. Juste “trou noir” leurs tentatives de connexion.

Vous pouvez également envisager d’implémenter le filtrage de paquets dans vos commutateurs réseau, même si je ne sais pas dans quelle mesure il est possible d’append ou de supprimer un bloc à la volée.

Sur quel niveau dois-je bloquer les adresses IP de ces robots?

Il y a 3 options disponibles:

  • Blocage au niveau du pare-feu
  • Blocage au niveau de l’application
  • Blocage au niveau du serveur (serveur d’applications – Tomcat ou serveur Web – Apache)

Tout d’abord, je pense que le 2e choix est celui qui devrait être évité à tout prix. L’application doit être indépendante de la sécurité, car il existe de nombreuses manières de sécuriser l’application depuis l’extérieur.

En ce qui concerne les suggestions 1 et 3, l’avantage de la protection par pare-feu est que les adresses IP seront bloquées avant même d’atteindre le serveur , offrant ainsi une plus grande sécurité à votre environnement. D’autre part, le blocage IP dans le pare-feu ne peut être dynamic qu’en utilisant des scripts de shell personnalisés, ce qui peut s’avérer assez difficile.

D’un autre côté, si vous ajoutez un Apache en tant que serveur Web devant votre tomcat, vous pouvez utiliser des modules déjà développés (comme mod_security ), qui préviennent de nombreuses attaques, vous permettant de personnaliser des règles de sécurité spécifiques. Vous pouvez même tirer parti de modules comme GeoIP Legacy Apache Module , qui empêchent le DOS de certains pays.

Note: Les attaquants peuvent toujours “cacher” leur véritable adresse IP, en utilisant Tor. Ainsi, vous ne devriez pas croire qu’un attaquant utilisera toujours une adresse IP unique.