SSH / SSHD - Comment définir le nombre maximal de tentatives de connexion?
17
Quelle est la façon la plus simple de configurer les tentatives de connexion max dans un environnement LAMP (sshd installé via yum)? Existe-t-il un package ou une règle de pare-feu simple?
@Hyppy Merci, j'ai essayé de chercher mais malheureusement il y a beaucoup de questions / fils mal nommés.
John Himmelman
Réponses:
11
J'utilise Fail2ban ; J'ai utilisé Denyhosts dans le passé, et cela fonctionne très bien aussi. Je préfère Fail2ban maintenant car il est plus configurable et plus capable de gérer la surveillance de plusieurs services différents - par exemple, votre page de connexion sshd et votre application Web simultanément (à condition que vous enregistriez les échecs).
Vous pouvez également envisager d'implémenter une règle LIMIT dans iptables; Je ne peux malheureusement pas vous aider avec cela, sauf si vous voulez installer Shorewall , et je vous indiquerais simplement l'excellente documentation sur ce site pour savoir comment configurer une règle LIMIT pour, eh bien, limiter la capacité de quelqu'un à brutaliser -forcez votre serveur.
Je dois ajouter que Fail2ban est disponible dans de nombreux dépôts de distributions, donc son installation est un jeu d'enfant; Je n'ai vu aucun Denyhosts dans aucun d'entre eux, mais cela ne signifie pas qu'il ne l'est pas dans certains, ni qu'il n'a pas été ajouté depuis la dernière fois que j'ai vérifié.
Kromey
J'ai rencontré un problème selon lequel fail2ban de la v0.8.14 ne fonctionnait pas correctement avec la commande iptables-multiport. Et c'est un problème connu avec l'utilitaire fail2ban résolu dans de nouvelles versions ... Voici la description: github.com/fail2ban/fail2ban/issues/798 Je ne crois donc qu'aux mécanismes de sécurité développés en logiciel serveur, ni aux utilitaires tiers ...
George Gaál
44
Je n'aime pas utiliser d'outils tiers. Par conséquent, j'ai utilisé une combinaison de configuration ssh et de paramètres de pare-feu. Avec la solution suivante, un attaquant est autorisé à produire exactement 3 connexions d'erreur en 2 minutes, ou il sera bloqué pendant 120 secondes.
1) Ajoutez la ligne suivante à /etc/ssh/sshd_config
MaxAuthTries 1
Cela ne permettra qu'une seule tentative de connexion par connexion. Redémarrez le serveur ssh.
2) Ajoutez les règles de pare-feu suivantes
Créer une nouvelle chaîne
iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP
Bloquer chaque adresse IP pendant 120 secondes, ce qui établit plus de trois connexions en 120 secondes. En cas de quatrième tentative de connexion, la demande est déléguée à la SSHATTACKchaîne, qui est responsable de la journalisation de l'attaque ssh possible et abandonne finalement la demande.
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK
3) Voir les entrées du journal des attaques ssh possibles dans /var/log/syslog
Dec 27 18:01:58 ubuntu kernel: [ 510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0
Impressionnant! mais j'ai un problème, un gars / bot en France n'a pas configuré correctement ses outils de piratage, donc il continue de se connecter, même si son trafic est diminué. Le résultat, mes journaux sont remplis de données chaque seconde de ce type. Un moyen de contourner cela?
Smarties89
2
Pour les personnes moins expérimentées comme moi: les lignes iptables sont tapées à l'invite bash, pas entrées dans un fichier quelque part.
Andrew Swift
4
Il n'y a pas de package spécifique associé à SSH pour configurer cela. Vous pouvez cependant installer CSF qui est ConfigServer & Firewall.
Deux changements de configuration que je suggérerais seraient apportés dans le fichier: / etc / ssh / sshd_config
Limitez le nombre maximal de connexions non authentifiées que le serveur ssh gérera en même temps. Plus il est petit, plus il est difficile pour les script kiddies de faire des tentatives de craquage parallèles et coordonnées avec plusieurs connexions. éditez sshd_config et changez MaxStartups par défaut de "10" à "3:50:10". Les valeurs séparées par deux points indiquent au serveur ssh de "permettre à 3 utilisateurs de tenter de se connecter en même temps et de supprimer de façon aléatoire et croissante les tentatives de connexion entre 3 et 10 maximum". Remarque: cela devrait être augmenté sur les serveurs avec un nombre important d'utilisateurs ssh valides qui se connectent.
Par défaut : MaxStartups 10
MaxStartups 3:50:10
Réduisez la durée maximale de connexion réussie avant de vous déconnecter. La valeur par défaut de 2 minutes est trop de temps pour maintenir ouverte une tentative de connexion non authentifiée (voir ci-dessus); 30 secondes, c'est plus que suffisant pour se connecter:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl --name SSH -j DROP
Cela permettra seulement à 4 paquets TCP / SYN de se connecter au port 22 à partir d'une adresse IP en 5 minutes. S'il fait plus de tentatives, la porte est fermée jusqu'à 5 minutes.
A peu près la même chose que: -A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT.
Alix Axel
J'ai fait ces deux commandes iptables dans Debian Jessie, mais je peux toujours voir les tentatives de connexion SSH toutes les 2 secondes à partir de la même adresse IP. Des idées?
Alexey Ozerov
1
il y a une option que vous pouvez mettre dans votre fichier sshd_config pour le serveur:
MaxAuthTries
Specifies the maximum number of authentication attempts permitted per
connection. Once the number of failures reaches half this value, additional
failures are logged. The default is 6.
Utile (surtout lorsqu'il est combiné avec d'autres suggestions déjà faites), mais ne résout pas vraiment le problème à lui seul car il est trivial pour quelqu'un de continuer à se reconnecter.
Réponses:
J'utilise Fail2ban ; J'ai utilisé Denyhosts dans le passé, et cela fonctionne très bien aussi. Je préfère Fail2ban maintenant car il est plus configurable et plus capable de gérer la surveillance de plusieurs services différents - par exemple, votre page de connexion sshd et votre application Web simultanément (à condition que vous enregistriez les échecs).
Vous pouvez également envisager d'implémenter une règle LIMIT dans
iptables
; Je ne peux malheureusement pas vous aider avec cela, sauf si vous voulez installer Shorewall , et je vous indiquerais simplement l'excellente documentation sur ce site pour savoir comment configurer une règle LIMIT pour, eh bien, limiter la capacité de quelqu'un à brutaliser -forcez votre serveur.la source
Je n'aime pas utiliser d'outils tiers. Par conséquent, j'ai utilisé une combinaison de configuration ssh et de paramètres de pare-feu. Avec la solution suivante, un attaquant est autorisé à produire exactement 3 connexions d'erreur en 2 minutes, ou il sera bloqué pendant 120 secondes.
1) Ajoutez la ligne suivante à
/etc/ssh/sshd_config
Cela ne permettra qu'une seule tentative de connexion par connexion. Redémarrez le serveur ssh.
2) Ajoutez les règles de pare-feu suivantes
Créer une nouvelle chaîne
Bloquer chaque adresse IP pendant 120 secondes, ce qui établit plus de trois connexions en 120 secondes. En cas de quatrième tentative de connexion, la demande est déléguée à la
SSHATTACK
chaîne, qui est responsable de la journalisation de l'attaque ssh possible et abandonne finalement la demande.3) Voir les entrées du journal des attaques ssh possibles dans
/var/log/syslog
la source
Il n'y a pas de package spécifique associé à SSH pour configurer cela. Vous pouvez cependant installer CSF qui est ConfigServer & Firewall.
CSF
Deux changements de configuration que je suggérerais seraient apportés dans le fichier: / etc / ssh / sshd_config
Limitez le nombre maximal de connexions non authentifiées que le serveur ssh gérera en même temps. Plus il est petit, plus il est difficile pour les script kiddies de faire des tentatives de craquage parallèles et coordonnées avec plusieurs connexions. éditez sshd_config et changez MaxStartups par défaut de "10" à "3:50:10". Les valeurs séparées par deux points indiquent au serveur ssh de "permettre à 3 utilisateurs de tenter de se connecter en même temps et de supprimer de façon aléatoire et croissante les tentatives de connexion entre 3 et 10 maximum". Remarque: cela devrait être augmenté sur les serveurs avec un nombre important d'utilisateurs ssh valides qui se connectent.
Réduisez la durée maximale de connexion réussie avant de vous déconnecter. La valeur par défaut de 2 minutes est trop de temps pour maintenir ouverte une tentative de connexion non authentifiée (voir ci-dessus); 30 secondes, c'est plus que suffisant pour se connecter:
la source
J'utilise ces règles IPTables pour cela:
Cela permettra seulement à 4 paquets TCP / SYN de se connecter au port 22 à partir d'une adresse IP en 5 minutes. S'il fait plus de tentatives, la porte est fermée jusqu'à 5 minutes.
la source
-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT
.il y a une option que vous pouvez mettre dans votre fichier sshd_config pour le serveur:
la source