Comme la plupart des serveurs (je suppose), nous avons des gens qui essaient de forcer nos services 24/7. J'ai cpHulk blacklist leurs IP, mais il semble que ce serait mieux s'ils ne sont pas allés aussi loin en premier lieu. Moi et mon hôte sont les seuls qui se connectent au serveur sur des ports autres que 80, donc je voudrais bloquer les connexions de tous les pays en dehors des États-Unis, à l'exception du port 80. J'ai contacté mon hôte pour configurer cela, mais ils étaient hésitants car ils ont dit que cela créerait une charge de serveur exceptionnellement élevée. Il s'agit d'un serveur Xeon 1230 dédié avec 32 Go de RAM exécutant CentOS 6.6 et iptables.
Tout d'abord, une raison de ne pas le faire? Deuxièmement, ce que mon hôte m'a dit est-il correct? Troisièmement, existe-t-il un moyen d'y parvenir sans impact sur les performances?
Réponses:
La définition de règles spécifiques pour bloquer chaque plage IP (en répertoriant chaque plage) n'est pas la bonne approche.
Définissez les règles par défaut dans iptables pour supprimer tout le trafic vers vos ports de gestion. Ajoutez ensuite des règles pour n'autoriser l'accès qu'à partir de vos adresses IP de confiance (la vôtre et celle de votre hôte).
Tout bloquer par défaut et autoriser uniquement le trafic approuvé est généralement appelé "refuser explicitement tout" et est considéré comme une meilleure pratique. Dans ce cas, cela permet également d'éviter l'impact sur les performances de votre hôte.
la source
Pour ce faire, vous devez ajouter des dizaines de milliers de règles de pare-feu, une pour chaque netblock, où un pays peut avoir entre un et plusieurs milliers de netblocks associés.
Lorsqu'une demande arrive, elle doit être vérifiée par rapport à chaque règle , ce qui prend très peu de temps pour quelques dizaines ou peut-être même quelques centaines de règles, mais avec autant de règles que vous devez utiliser, (1) chaque la demande sera considérablement ralentie et (2) elle utilisera beaucoup de CPU.
La façon de le faire sans impact significatif sur les performances consiste à faire ce que vous faites déjà: bloquer uniquement les adresses spécifiques qui posent problème.
la source
Vous avez besoin d'un outil appelé ipsets
la chose importante à noter ici, c'est que c'est rapide comme l'éclair! En effet, un grand nombre de réseaux IP peuvent être représentés par un seul hachage au lieu de centaines ou de milliers de lignes de règles iptables.
Pour les pays bloquants, voir cet exemple :
la source
Ignorer le peu de savoir si le faire de cette façon est une bonne idée, vous pouvez faire ce que vous avez demandé avec le module GeoIP pour iptables.
Après avoir construit et installé le module (et gardé vos listes IP mises à jour mensuellement), vous pouvez faire des choses comme ça pour bloquer des pays individuels:
Ou utilisez
--src-cc US -j ACCEPT
et ainsi de suite si vous préférez spécifier les pays que vous souhaitez conserver.la source
Si vous souhaitez conserver la possibilité de vous connecter de n'importe où sans maintenir une liste noire / liste blanche de géolocalisation, vous pouvez implémenter le port-knocking . Il arrêterait la plupart des tentatives automatisées tout en vous permettant de vous connecter à partir de n'importe quelle adresse.
Remarque: ne mettez pas le port à frapper à côté du port à ouvrir, sinon une analyse séquentielle du port activera votre règle.
la source
Si vous avez un ou deux routeurs compatibles BGP dans votre pile ET avez une sorte d'idée ce que vous faites / travaillez avec quelqu'un qui sait ce que c'est qu'ils font, ou sont peut-être derrière un fournisseur de prévention DDoS assez cool pour aider à la mise en œuvre de cela, il y a une méthode relativement nouvelle pour restreindre le trafic aux régions géographiques appelée blackholing sélectif qui, je pense, vaut le détour.
https://ripe68.ripe.net/presentations/176-RIPE68_JSnijders_DDoS_Damage_Control.pdf
http://mailman.nanog.org/pipermail/nanog/2014-F February/064381.html
http://www.internetsociety.org/deploy360/blog/2014/07/video-selective-blackholing-at-ripe-68/
Comme cette méthode fonctionne sur la manipulation des routes, elle contourne tous les problèmes de charge du serveur.
la source