SysFailure

Imprimer

sshdfilter

.

Présentation de SshdFilter

Sshdfilter est un outil permettant de réagir, en temps réel, aux attaques en force brute sur les mots de passe du système, lorsqu'elles sont faites par des connexions répétées au serveur sshd. Il présente les caractéristiques suivantes :

  • examen en temps réel du fichier de journalisation de ssh,
  • blocage par des règles iptables,
  • blocage suite à des erreurs ou échecs de connexion uniquement,
  • blocage dès la première erreur pour l'accès à un compte inconnu ou d'autres erreurs fortement discriminantes.
Une autre note évoque les méthodes de blocage d'attaques sur SSH.

Installation de sshdfilter

L'installation est simple et automatisée, mais nous vous conseillons de suivre la procédure manuelle. Dans le répertoire où vous avez décompressé l'archive des sources de sshdfilter :

  1. Modifier le fichier etc/sshdfilterrc. Les variables repurgetime, maxblocktime, maxchances, interface et sshdpath doivent être adaptées par rapport à votre configuration (pour sshdpath) et au comportement voulu (pour les autres).
    • repurgetime indique l'intervalle (en secondes) de contrôle de la liste de blocage afin d'en retirer les adresses pour lesquelles aucune activité néfaste n'a été observée. Défaut : 7200 secondes (deux heures).
    • maxblocktime indique la durée (en secondes) de blocage d'une adresse IP détectée comme étant à l'origine d'une attaque. Défaut : 259200 secondes (trois jours).
    • interface indique l'interface sur laquelle les règles iptables vont être appliquées. Cela vous permet éventuellement de ne filter et bloquer que les connexion venant d'Internet, si votre serveur dispose de plusieurs interfaces réseau. Défaut : vide (toutes les interfaces)
    • maxchances donne le nombre d'échecs provoquant le blocage d'une adresse IP source. Dans les faits, il s'agit du nombre de messages d'erreur. Sshd produisant deux messages par échec, maxchances contient donc le double du nombre d'échecs déclenchant le blocage. Défaut : 6.
    • sshdpath donne le chemin d'accès à sshd. Défaut : /usr/sbin/sshd.
  2. Génerer le programme sshdfilter, par la commande
    sh regen.sh
En étant le super-utilisateur,
  1. copier le fichier etc/sshdfilterrc vers /etc/sshdfilterrc.
  2. copier le programme sshdfilter. vers le répertoire où vous souhaitez qu'il demeure (/usr/sbin, /usr/local/sbin, etc.).
  3. Créer une chaine iptables appelée SSHD : iptables -N SSHD
  4. Connecter cette chaîne à vos règles iptables existantes. Si vous voulez filtrer toutes les connexions ssh, vous pouvez exécuter par exemple :
    iptables -I INPUT -p tcp --dport 22 -m state --state NEW -j SSHD
    Si vous souhaitez que seules les connexions issues de l'interface eth1 soient contrôlées, vous exécuterez
    iptables -I INPUT -i eth1 -p tcp --dport 22 -m state --state NEW -j SSHD
  5. Modifier le programme de démarrage du démon sshd (typiquement /etc/init.d/sshd), afin de remplacer l'appel à sshd par celui à sshdfilter.
  6. Relancer le service sshd, et vérifiez que sshd a bien redémarré.