Je voulais fournir un délai de connexion lors de la connexion via ssh. J'ai essayé deux façons de faire la même chose mais je n'ai pas pu trouver le résultat souhaité.
J'ai essayé les étapes fournies par le lien donné.
http://hostingfu.com/article/ssh-dictionary-attack-prevention-with-iptables
iptables -N SSH_CHECK
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK
iptables -A SSH_CHECK -m recent --set --name SSH
iptables -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP
Je n'ai pas de module pam installé sur ma machine, je ne peux donc pas apporter de modifications liées aux fichiers pam
Donc, n'importe quel organisme me laisse suggérer une autre façon de faire de même?
J'ai un noyau linux nu fonctionnant sur une plate-forme intégrée.
linux
networking
ssh
sshd
RAM
la source
la source
fail2ban
utilise l'infrastructure exacte que vous avez déjà - les journaux ssh et les règles iptables.Réponses:
Méthode n ° 1 - désactiver les connexions par mot de passe
Si vous n'avez pas besoin d'autoriser les connexions par mot de passe, alors simplement les interdire vous donnera l'effet souhaité. Ajoutez simplement cette ligne à
/etc/ssh/sshd_config
:De plus, vous pouvez limiter l'utilisation du mot de passe à certains utilisateurs utilisant l'
Match
opérateur danssshd_config
:Méthode n ° 2 - iptables
Vous pouvez également utiliser
iptables
pour suivre les tentatives de connexion échouées et les supprimer après un certain seuil. Ceci est similaire à votre exemple de hostingfu mais est plus facile à comprendre.REMARQUE: la première ligne crée une règle qui s'applique uniquement aux paquets utilisés pour les nouvelles tentatives de connexion sur le port ssh. La deuxième ligne indique que s'il y a plus de 4 tentatives à partir d'une adresse IP dans les 60 secondes, tout trafic provenant de cette adresse IP doit être blackholé. Cette solution ne se soucie pas si les tentatives sur différents comptes d'utilisateurs.
Méthode n ° 3 - utilisez PAM
Je me rends compte que vous avez dit que PAM n'était pas disponible, mais si vous le faisiez, c'est ainsi que vous pourriez retarder les tentatives de connexion infructueuses. Si votre intention est de simplement retarder les échecs de connexion ssh, vous pouvez utiliser le module PAM
pam_faildelay
. Ce module PAM est généralement inclus avec le mixage par défaut.Sur mon système Fedora 19, cela fait partie de l'installation par défaut.
Exemple
Recherchez les fichiers liés à
pam_faildelay
.Découvrez les RPM fournis par:
Usage
Pour créer un retard en cas d'échec, il vous suffit d'ajouter une ligne comme celle-ci à votre
sshd
fichier de configuration pam. Encore une fois sur les systèmes Fedora / CentOS / RHEL ce fichier se trouve ici:/etc/pam.d/sshd
.Pour créer un délai de 10 secondes:
Un délai de 60 secondes:
Exemple
Avec un délai de 20 secondes en utilisant la méthode ci-dessus, j'ai changé mon
sshd
fichier de configuration PAM comme suit:Maintenant, lorsque je me connecte:
Références
la source
--hitcount 4
est dépassée, la règle troue l'adresse IP incriminée pendant 60 secondes.Désactivez les mots de passe. Pas de mots de passe, pas d'attaque par force brute.
Vous pouvez utiliser des clés ssh pour vous connecter - ce qui devrait être beaucoup plus sûr et beaucoup plus difficile à pirater.
la source
Sur une nouvelle installation d'Ubuntu 16.04 avec
openssh-server
, il y a déjà un délai pour une tentative de mot de passe incorrect de plus de zéro caractère. Le retard semble être supérieur à 1 seconde .Pour une tentative de mot de passe erronée de zéro caractère, il n'y a pas de délai, donc l'attaquant déterminera immédiatement que votre mot de passe n'est pas la chaîne vide s'il ne s'agit en effet pas de la chaîne vide. Étant donné que la chaîne vide n'est probablement pas autorisée en tant que mot de passe, ils le savent déjà et ne vont donc pas essayer la chaîne vide.
la source