J’ai vu par le passé au moins deux attaques réussies sur des comptes de courrier électronique par force brute. Dans les deux cas les mots de passes était extrêmement basiques et présents dans les dictionnaires courants utilisés par les scripts kiddies. Les logs montraient qu’ils avaient été trouvés après seulement quelques dizaines de tentatives.
Fail2ban aurait sans doute pu ralentir le processus, mais ces comptes auraient fini par être compromis. La seule politique de sécurité viable à ce niveau est de forcer une complexité minimale des mots de passe, voire la double authentification.
À l’heure actuelle je vois plutôt ce type de tentatives sur les comptes courriels :
Jul 29 01:40:33 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 5 secs): user=<fynbar@example.com>, method=PLAIN, rip=210.61.47.79, lip=*.*.*.*, TLS: Connection closed, session=<G7nogjfIdKzSPS9P>
Jul 29 02:12:13 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 6 secs): user=<christiana@example.com>, method=PLAIN, rip=122.53.139.111, lip=*.*.*.*, TLS: Connection closed, session=<Yosc9DfI2tV6NYtv>
Jul 29 02:53:11 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 9 secs): user=<christiana@example.com>, method=PLAIN, rip=205.240.77.231, lip=*.*.*.*, TLS, session=<zyVxhjjIWYDN8E3n>
Jul 29 02:53:30 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 4 secs): user=<christiana@example.com>, method=PLAIN, rip=184.179.216.135, lip=*.*.*.*, TLS, session=<lsTWhzjI3Ze4s9iH>
Jul 29 06:04:38 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 5 secs): user=<fynbar@example.com>, method=PLAIN, rip=123.63.30.201, lip=*.*.*.*, TLS: Connection closed, session=<vIpWMzvIvaR7Px7J>
Jul 29 06:21:58 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 5 secs): user=<christiana@example.com>, method=PLAIN, rip=200.146.227.146, lip=*.*.*.*, TLS: Connection closed, session=<miNTcTvIuqzIkuOS>
Jul 29 06:39:37 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 5 secs): user=<christiana@example.com>, method=PLAIN, rip=129.126.101.198, lip=*.*.*.*, TLS: Connection closed, session=<5C5vsDvIAuqBfmXG>
Jul 29 07:39:39 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 5 secs): user=<fynbar@example.com>, method=PLAIN, rip=196.70.252.2, lip=*.*.*.*, TLS: Connection closed, session=<BMYhhzzIUbfERvwC>
Jul 29 08:06:01 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 5 secs): user=<christiana@example.com>, method=PLAIN, rip=220.66.155.2, lip=*.*.*.*, TLS, session=<gJdp5TzI8EPcQpsC>
Jul 29 08:52:58 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 6 secs): user=<christiana@example.com>, method=PLAIN, rip=129.205.106.123, lip=*.*.*.*, TLS: Connection closed, session=<I0JNjT3IdLOBzWp7>
Jul 29 09:22:08 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 5 secs): user=<christiana@example.com>, method=PLAIN, rip=177.43.251.153, lip=*.*.*.*, TLS: Connection closed, session=<hxGn9T3IsKSxK/uZ>
Jul 29 15:20:24 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 5 secs): user=<fynbar@example.com>, method=PLAIN, rip=187.50.136.210, lip=*.*.*.*, TLS: Connection closed, session=<QSfo9kLI+bO7MojS>
Jul 29 19:55:26 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 6 secs): user=<fynbar@example.com>, method=PLAIN, rip=200.146.227.146, lip=*.*.*.*, TLS: Connection closed, session=<zyN5zkbI9KXIkuOS>
Jul 29 20:27:58 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 6 secs): user=<christiana@example.com>, method=PLAIN, rip=200.205.134.107, lip=*.*.*.*, TLS, session=<Yt7TQkfI/cvIzYZr>
Jul 29 21:35:57 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 6 secs): user=<fynbar@example.com>, method=PLAIN, rip=139.198.121.63, lip=*.*.*.*, TLS: Connection closed, session=<P3n0NUjIw7qLxnk/>
Jul 29 21:48:51 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 4 secs): user=<christiana@example.com>, method=PLAIN, rip=212.98.122.91, lip=*.*.*.*, TLS: Connection closed, session=<7RUsZEjIK9XUYnpb>
Jul 29 22:03:05 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 6 secs): user=<christiana@example.com>, method=PLAIN, rip=143.59.208.91, lip=*.*.*.*, TLS: Connection closed, session=<fc76lkjIPISPO9Bb>
Jul 29 22:44:35 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 6 secs): user=<fynbar@example.com>, method=PLAIN, rip=220.66.155.2, lip=*.*.*.*, TLS, session=<gkJaK0nIMBTcQpsC>
Jul 29 23:11:16 ks10 dovecot: imap-login: Disconnected (auth failed, 1 attempts in 6 secs): user=<christiana@example.com>, method=PLAIN, rip=181.176.172.162, lip=*.*.*.*, TLS, session=<MKjViknIX3S1sKyi>
On voit que les IP sources sont différentes et les nouvelles tentatives provenant des mêmes IP se produisent plusieurs heures après. Elles passeront donc sous le radar d’un fail2ban configuré avec des délais raisonnables.
Je continue à utiliser fail2ban pour un ou deux services (et surtout pour transmettre les IP aux bases de données) mais on peut effectivement parfaitement s’en passer si les services sont correctement sécurisés avec une bonne politique de mots de passe.