Tout panneau sur une adresse publique est essayé sans relâche par des machines qui déroulent des listes de noms d'utilisateur et de mots de passe fuités. Le volume n'est pas le signe que vous êtes visé. Cela devient une intrusion à l'instant où un compte porte un mot de passe qui figure sur l'une de ces listes.

Voir ce qui se passe

sudo grep -c "Failed password" /var/log/auth.log
sudo awk '/Failed password/ {print $(NF-3)}' /var/log/auth.log | sort | uniq -c | sort -rn | head

Les quatre qui y mettent fin

  • La double authentification sur chaque compte d'administration. Un mot de passe correct cesse alors de suffire - voyez la double authentification sur le panneau.
  • La limitation de débit, pour qu'une machine ait une poignée de tentatives par minute et non des milliers - voyez limiter un point de connexion.
  • Fail2ban, pour bannir l'adresse après quelques échecs - voyez ce que Fail2ban arrête.
  • Aucun compte partagé. Une personne, un accès, pour qu'un retrait soit un seul retrait.

Renommer admin, sans compter dessus

Changer le nom d'utilisateur évident supprime l'essentiel du bruit automatique, car les listes sont courtes en noms et longues en mots de passe. Ce n'est pas une protection : le nom se retrouve d'ordinaire depuis le site lui-même.

Restreindre d'où le panneau répond, tout simplement

# nginx: the panel only answers to the office
location /admin/ {
    allow 203.0.113.0/24;
    deny all;
}
Une connexion réussie depuis un pays inattendu, à une heure inhabituelle, après une longue série d'échecs : voilà le motif qui compte. Alertez sur la réussite, pas sur les échecs - les échecs sont permanents et tout le monde finit par ne plus les lire.
Si vous découvrez qu'un compte a été pris, changer ce mot de passe ne clôt pas l'affaire. Lisez détecter un site compromis avant de supposer que cela s'est arrêté là.