Je viens de me connecter sur un serveur GitLab et j'ai remarqué qu'il y avait 18,974 échecs de connexion depuis la dernière vérification du serveur - près de 5 jours. J'ai vérifié les Ip et il semble que la plupart d'entre eux venaient de Chine et ont essayé d'accéder avec SSH et Brute Force. J'ai commencé à bloquer certains IP mais j'ai réalisé que c'était une énorme perte de temps et une meilleure idée serait de bloquer tout le pays.
Existe-t-il un moyen de bloquer TOUTE la Chine ou tout autre pays avec iptables?
J'ai trouvé quelques articles sur Internet mais presque tous sont des scripts bash. Je suis un débutant sous Linux, donc je ne comprends pas vraiment tous ces scripts. Je trouve iptables vraiment intéressant et je veux en savoir plus.
Des idées ? Je vous remercie!
Réponses:
Utiliser iptables pour identifier automatiquement, puis bloquer, les méchants pour ssh peut être fait en utilisant le
recent
module. Le segment suivant doit venir après votreESTABLISHED,RELATED
ligne générique :Maintenant, le problème récent (l'année dernière ou deux) avec la Chine est qu'ils sont devenus très intelligents et très souvent une fois bloqués d'une adresse IP, ils passent simplement à une autre sur le même sous-réseau et continuent. Cela court le risque de manquer d'entrées de table récentes par défaut (je pense que la valeur par défaut est 200). Je surveille cela, puis recherche le segment IP réel et bloque définitivement le segment entier. Dans mon cas, je ne me soucie pas des dommages collatéraux, c'est-à-dire de bloquer quelqu'un d'innocent:
Où dans ce qui précède:
Vous pouvez obtenir la liste complète des adresses IP pour la Chine ou tout autre pays, au format iptables ou autre, ici . Cependant, la liste est à la fois étonnamment longue et plutôt dynamique. Moi-même, j'ai décidé de ne pas bloquer toute la liste.
la source
Bloc de Chine à l'aide de l'ipset
Vous ne pouvez pas ajouter manuellement quelques milliers d'adresses IP à vos iptables, et même le faire automatiquement est une mauvaise idée car cela peut causer beaucoup de charge CPU (ou j'ai lu). Au lieu de cela, nous pouvons utiliser un ipset qui est conçu pour ce genre de chose. l'ipset gère de grandes listes d'adresses IP; vous créez simplement une liste, puis vous dites à iptables d'utiliser cette liste dans une règle.
Remarque; Je suppose que l'intégralité de ce qui suit se fait en tant que root. Ajustez en conséquence si votre système est basé sur sudo.
Ensuite, j'ai écrit un petit script Bash pour faire tout le travail, que vous devriez pouvoir comprendre à partir des commentaires qu'il contient. Créez un fichier:
Voici ce que vous souhaitez y coller:
Enregistrez le fichier. Rendez-le exécutable:
Cela n'a encore rien fait, mais ce sera dans une minute lorsque nous exécuterons le script. Tout d'abord, nous devons ajouter une règle dans iptables qui fait référence à cette nouvelle liste d'ipsets définie par le script ci-dessus:
Ajoutez la ligne suivante:
Enregistrez le fichier. Pour être clair, mon iptables.firewall.rules complet ressemble maintenant à ceci:
Pour l'instant, rien n'a changé avec le serveur car aucune nouvelle règle n'a été appliquée; pour ce faire, exécutez le script block-china.sh:
Cela devrait montrer une sortie car il tire une nouvelle liste d'adresses IP chinoises, puis, après quelques secondes environ, il se terminera et vous ramènera à une invite de commandes.
Pour tester si cela a fonctionné, exécutez:
Vous devriez maintenant voir une nouvelle règle bloquant la Chine - la sortie devrait ressembler à ceci:
Presque fini! Cela fonctionne et continuera de fonctionner sur les redémarrages. Mais, les adresses IP changent et cette liste deviendra obsolète au fil du temps. Si vous souhaitez extraire et appliquer une liste d'adresses IP mise à jour, vous pouvez simplement réexécuter le script block-china.sh.
Nous pouvons également configurer la machine pour qu'elle le fasse automatiquement via une tâche cron:
Ajoutez une ligne comme celle-ci:
Cela fonctionnera /etc/block-china.sh à 5h du matin tous les jours. L'utilisateur exécutant le script devra être root ou disposer des privilèges root.
la source
la source
wget http://www.ipdeny.com/ipblocks/data/aggregated/cn-aggregated.zone
Vous voudrez peut-être installer quelque chose comme fail2ban afin qu'il bloque les IPS qui tentent de se connecter à votre serveur et échouent.
la source
Vous pouvez utiliser le module geoip pour iptables: https://linoxide.com/linux-how-to/block-ips-countries-geoip-addons/
la source
Vous utilisez la liste de pare-feu IP2Location pour générer des iptables pour la Chine.
Le fichier est au format suivant. Exécutez-le dans le shell et vous devriez bloquer toutes les adresses IP chinoises.
la source