GNU/Linux >> Tutoriels Linux >  >> Linux

Des centaines de connexions ssh échouées

Solution 1 :

Vous pouvez utiliser iptables pour limiter le débit des nouvelles connexions entrantes au port SSH. Je devrais voir toute votre configuration iptables afin de vous donner une solution clé en main, mais vous parlez essentiellement d'ajouter des règles comme :

iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 5 --name SSH --rsource -j DROP 
iptables -A INPUT -p tcp --dport 22 -m recent --set --name SSH --rsource -j ACCEPT 

Ces règles supposent que vous acceptez les connexions ÉTABLIES plus tôt dans le tableau (de sorte que seules les nouvelles connexions respecteront ces règles). Les nouvelles connexions SSH respecteront ces règles et seront marquées. En 60 secondes, 5 tentatives à partir d'une seule adresse IP entraîneront l'abandon de nouvelles connexions entrantes à partir de cette adresse IP.

Cela a bien fonctionné pour moi.

Edit :je préfère cette méthode à "fail2ban" car aucun logiciel supplémentaire à installer, et se passe totalement en mode noyau. Il ne gère pas l'analyse des fichiers journaux comme "fail2ban", mais si votre problème concerne uniquement SSH, je n'utiliserais pas quelque chose en mode utilisateur qui nécessite l'installation d'un logiciel et qui est plus complexe.

Solution 2 :

fail2ban peut vous aider en bloquant les adresses IP avec trop de tentatives de connexion infructueuses.

Solution 3 :

Je recommanderais d'utiliser un port non standard pour SSH si vous le pouvez (c'est-à-dire le port 10222) mais puisque vous avez mentionné que vous ne pouvez pas le faire, je recommanderais d'utiliser quelque chose comme DenyHosts.

http://denyhosts.sourceforge.net/

Excellent package, facile à installer et à configurer.

Solution 4 :

Bien qu'il puisse être agréable de pouvoir accéder en ssh à votre système à partir d'emplacements arbitraires sur Internet, il existe des systèmes d'attaque par mot de passe automatisés qui se verrouillent sur un port ssh ouvert et appliquent diverses attaques de compte Joe et de dictionnaire contre votre système. Cela peut être agaçant à lire dans votre résumé de journal nocturne et constitue un gaspillage de votre bande passante.

Si vous avez un serveur Web sur le même système, vous pouvez utiliser des wrappers php et tcp pour restreindre le trafic entrant ssh aux systèmes connus, et vous donner une clé de porte dérobée pour vous permettre l'accès à partir de systèmes arbitraires sur Internet.

Voici comment procéder :

refuser toutes les connexions ssh dans /etc/hosts.deny :

# /etc/hosts.deny fragment
sshd:  all

Autorisez les systèmes connus par IP dans /etc/hosts.allow, et ajoutez un fichier pour un accès temporaire :

# /etc/hosts.allow fragment
sshd:  10.0.10.2     # some system
sshd:  172.99.99.99  # some other system
sshd:  /etc/hosts.allow.temporary-sshd-access

Créez un fichier php sur votre serveur Web et donnez-lui un nom non évident comme my-sshd-access.php :

<?php
function get_ip()
{
    return getenv("REMOTE_ADDR"); 
}

?>

<?php
$out='/etc/hosts.allow.temporary-sshd-access';
$log='/var/log/sshd-access-addition-log';

print "Was:";
readfile($out);
print "<br>";
$ip=get_ip();
$fp=fopen($out,"w");
fputs($fp,$ip);
fclose($fp);

$lfp=fopen($log,"a");
fputs($lfp,$ip);
fputs($lfp,"n");
fclose($lfp);

print "Wrote: ";
readfile($out);
?>

Pardonnez le code php - je l'ai glissé d'un autre endroit, donc il pourrait probablement être nettoyé de tout un tas. Tout ce qu'il fait est d'ajouter l'adresse IP du système qui y accède au fichier /etc/hosts.allow.temporary-sshd-access, qui est lu par sshd (en raison de son inclusion par /etc/hosts.allow) au moment de la connexion .

Maintenant, lorsque vous êtes sur un système arbitraire sur le Web et que vous souhaitez vous connecter en ssh à ce système, utilisez d'abord un navigateur Web et cliquez sur ce fichier (ou utilisez wget ou equivilent) :

$ wget http://your.system.name/my-sshd-access.php

Vous devriez maintenant pouvoir vous connecter en ssh à votre système. S'il s'agit d'un endroit où vous allez probablement vous connecter fréquemment en ssh, il serait trivial de lire le contenu du fichier /etc/hosts.allow.temporary-sshd-access et d'ajouter définitivement l'adresse IP à /etc/hosts. autoriser.

Solution 5 :

Vous voudrez peut-être aussi regarder denyhosts.

Pour votre information :OpenSSH 6.7 abandonne la prise en charge de tcpwrappers, ce qui signifie que denyhosts n'est probablement pas la solution pour les nouvelles installations.


Linux
  1. Huit façons de protéger l'accès SSH sur votre système

  2. Activer SSH sur Ubuntu 20.04 - Guide étape par étape ?

  3. Activer SSH sur le système Debian 9 - Procédure étape par étape ?

  4. Ssh renvoie le message "Échec de la demande de transfert x11 sur le canal 1" ?

  5. Modifier le port SSH dans le système d'exploitation Linux Ubuntu

Connexions SSH basées sur des clés avec PuTTY

Comment répertorier les connexions SSH infructueuses sous Linux

Limiter le nombre de connexions SSH par utilisateur/groupe/système

SSHFS :montage d'un système de fichiers distant via SSH

Comment générer et utiliser la clé SSH dans le système Linux ?

Commande pam_tally2 - verrouiller et déverrouiller les échecs de connexion ssh sous Linux