sshdfilt pour ne plus avoir de brute force SSH
Je ne sais pas vous mais moi ça me tue de lire mes logs et de voir le nombre de tentatives de connexions SSH distantes avec des identifiants et mots de passes automatiques !
Après avoir cherché une solution sympa, testé le port knoking ... j'ai trouvé une solution super sympa: sshdfilt
Pourquoi SSHDFilt ?
Parceque j'ai testé
- le port knoking qui marche super bien, par défaut le port 22 est fermé, vous faites la tentative de connexion sur le port 123, 204 et 543 et hop le firewall ouvre pour votre ip le port 22 ... avec bien entendu ce que vous voulez comme liste de ports à frapper pour déclancher l'ouverture; Dans mon cas de figure ce système n'est pas utilisable;
- le firewall qui interdit plus de 3 connexions sur le port SSH par minute, moi j'en fait des dizaines de connexions SSH, (redirection de ports, tunnels pour l'imap, le web etc.);
- les logiciels de logwatch qui analysent les fichiers logs et en fonction décident de fermer le port 22 ... j'aime pas, si le log n'est pas écris ou même de manière générale je trouve que "c'est trop tard" si on s'appuie sur les logs pour fermer le port 22 aux IP qui font 200 tentatives avec des mauvais login/pass;
L'utiliser
- 1. prendre le script qui est ici: http://www.csc.liv.ac.uk/~greg/sshdfilter/
- 2. Modifier le fichier /etc/init.d/ssh
make_sshd_iptables_rule() { datest=`/sbin/iptables -L SSHD || echo ` if [ -z "${datest}" ]; then echo "Creation de la chaine SSHD" /sbin/iptables -N SSHD /sbin/iptables -A INPUT -p tcp -m tcp --dport 22 -j SSHD fi }
et ensuite dans le start du script j'ai rajouté l'appel à la fonction
case "$1" in start) check_for_no_start check_privsep_dir make_sshd_iptables_rule echo -n "Starting OpenBSD Secure Shell server: sshd" start-stop-daemon --start --quiet --exec /usr/local/sbin/sshdfilter -- $SSHD_OPTS & echo "." ;;
- 3. Relancer le démon ssh, c'est tout !
Retour d'expérience
Ça fait plus de 3 ou 4 mois que j'ai installé ça sur notre serveur principal et ça marche tellement bien que je vais le généraliser à tous les serveurs que j'administre.