Je me suis connecté à mon VPS ce matin pour trouver des millions de tentatives de connexion infructueuses pour l'utilisateur root
et d'autres utilisateurs qui n'existent même pas. J'ai pris les mesures ci-dessous pour essayer de masquer les efforts des attaquants qui (se poursuivent depuis des mois).
Question (s)
- Est-ce une réponse appropriée?
- Que peut-on faire de plus?
- Puis-je faire quelque chose de précieux avec une liste de ces adresses IP?
Informations système pour un vps Centos7
uname - ainux vm01 3.10.0-327.22.2.el7.x86_64 # 1 SMP Thu Jun 23 17:05:11 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux
étape 1
Création d'un script pour récupérer toutes les adresses IP qui n'ont pas réussi à se connecter à partir du journal sécurisé. ( / var / log / secure
)
# get_ips.shgrep "Échec du mot de passe pour" / var / log / secure \ | grep -Po "[0-9] + \. [0-9] + \. [0-9] + \. [0-9] +" \ | trier \ | uniq -c
étape 2
Ecrivez un script pour créer des règles de pare-feu afin de bloquer l'adresse IP qui se trouve à partir du script à l'étape 1. Ce script est ip_list_to_rules.sh
#! / bin / bash # ip_list_to_rules.sh # script pour analyser la sortie de get_ips.sh et créer des règles de pare-feu # pour bloquer les requêtes sshif [-z $ 1 ]; then echo "arg1 doit être le chemin vers une liste de la forme <COUNT> <IP> \ n" exitfiLIST = $ (readlink -f $ 1) SSH_IP = $ (echo $ SSH_CLIENT | head -n1 | awk ') La lecture des IP à partir de $ {LIST} "echo" L'IP du client SSH sera ignorée ($ {SSH_IP}) "lors de la lecture de COUNT IP; do echo "Création d'une règle pour $ {IP}" firewall-cmd --direct --add-rule filtre ipv4 INPUT 1 -m tcp --source $ IP -p tcp --dport 22 -j REJECT firewall-cmd --direct --add-rule filtre ipv4 INPUT 1 -m tcp --source $ IP / 24 -p tcp --dport 22 -j REJECTdone<<< "$ (cat $ {LIST} | grep -v $ {SSH_IP})"
étape 3
Exécutez tout et enregistrez les règles.
./get_ips.sh > attack_ips.list./ip_list_to_rules.sh attack_ips.listfirewall-cmd --reload
Update
Voici les mesures que j'ai prises à partir des réponses.
- Connexions root désactivées
- Changé Port SSH
- Installer & configuré fail2ban
- Désactiver l'authentification par mot de passe & activer l'authentification par clé publique
Je n'ai pas fait 4 parce que je me connecte habituellement via client Chrome Secure Shell et AFAIK, il n'y a pas de support de clé publique.