Empêcher les attaques SSH

9

J'essaie de configurer des règles iptables pour n'autoriser que 3 tentatives par IP par minute pour se connecter au service via SSH, et supprimer toutes les connexions après pour empêcher les attaques SSH; mais il semble que je fais quelque chose de mal!

-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

Merci

MGP
la source

Réponses:

10

Je pense qu'il vaut mieux utiliser fail2ban, car vos règles ipfilter bloquent également les connexions légitimes. fail2banne bloquera les adresses IP qu'après l'échec des connexions.

Ensuite, une pratique courante consiste à interdire les adresses IP lorsqu'elles essaient de se connecter au port 22 et à lier votre serveur ssh à un autre port. Vous n'êtes alors confronté qu'à quelques connexions illégitimes par semaine si votre ordinateur n'est pas une cible bien connue.

Pour la question précise que vous avez posée:

iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
Gregory MOUSSAT
la source
1
Étant donné que le serveur est un vps bas de gamme, j'essaie de garder la consommation de ressources au minimum tout en la maintenant aussi sécurisée que possible. J'ai déjà changé le port du serveur ssh. Dois-je conserver ces règles (ci-dessus) sur le nouveau port et interdire celui par défaut (22)?
MGP
Fail2ban est en fait la meilleure solution, même pour les bas VPS
MGP
7

Vous pouvez implémenter ce que vous voulez avec les 2 règles suivantes

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 -j DROP

Notez que l'utilisation -Aqui ajoute des règles à la fin de la chaîne peut être contraire à la façon dont les règles iptables sont traitées, c'est-à-dire dans l'ordre, donc s'il y a un DROP général ou une règle d'autorisation avant que la vôtre ne soit atteinte, elles ne seront jamais appliquées.

Cela dit, vous pouvez également trouver fail2ban est une meilleure façon de mettre en œuvre ce type de bloc.

user9517
la source
Quand j'essaye d'ajouter ces règles, j'obtiens un message d'erreur: iptables: Aucune chaîne / cible / correspondance par ce nom.
MGP
Upvote pour fail2ban.
Michael B
4

Vous voudrez peut-être essayer le module LIMIT.

iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/minute -j ACCEPT
Magellan
la source