Je suis très nouveau dans l'administration des réseaux, veuillez donc noter que je ne suis pas encore expérimenté.
J'ai un serveur racine Ubuntu avec panneau plesk.
Hier, mes amis et moi avons remarqué que la qualité de la parole sur notre TS3 était très mauvaise. J'ai envoyé des pings au serveur et il y a eu une perte de paquets très élevée. Après cela, j'ai googlé un peu et découvert qu'il y a un auth.log
. Je l'ai téléchargé et j'ai fait défiler un peu, puis j'ai trouvé ceci:
May 13 10:01:27 rs204941 sshd[9351]: input_userauth_request: invalid user student [preauth]
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): check pass; user unknown
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=112.220.198.102
May 13 10:01:29 rs204941 sshd[9351]: Failed password for invalid user student from 112.220.198.102 port 39806 ssh2
May 13 10:01:29 rs204941 sshd[9351]: Received disconnect from 112.220.198.102: 11: Bye Bye [preauth]
May 13 10:01:31 rs204941 sshd[9353]: Invalid user student from 112.220.198.102
Il semble que quelqu'un ait essayé de se connecter à plusieurs reprises via SSH. J'ai fait défiler un peu et j'ai vu que cette personne essayait d'utiliser de nombreux noms d'utilisateur différents: student, tech, psi, news,...
Des centaines de ces connexions ont été affichées dans le fichier.
J'ai recherché les statistiques de trafic sur le site Web de mon centre de données. Ce n'était qu'à 17 Mo par heure. J'ai une dorsale 100Mbit, donc le transfert de données lui-même ne semble pas être le problème.
Pour le moment, je ne peux en aucun cas accéder au serveur.
Ma question est: comment puis-je obtenir à nouveau l'accès, comment puis-je supprimer cette attaque et empêcher les attaques suivantes?
Comment y accéder?
La raison pour laquelle vous ne pouvez pas accéder à votre compte n'est pas claire.
Si votre ordinateur est attaqué ou soumis à une charge élevée, vous devriez parler à votre fournisseur de la restriction d'accès (restrictions IP) ou de la mise hors ligne du serveur (se déconnecter d'Internet).
Vous pourriez également avoir besoin d'un accès hors bande avec lequel votre fournisseur pourra vous aider.
Si quelqu'un a compromis votre serveur, vous devrez peut-être restaurer à partir de sauvegardes ou utiliser une image de récupération.
Comment empêcher les attaques sur votre serveur, en particulier SSH
Ne les laissez pas accéder à votre machine en premier lieu! Il existe de nombreuses façons d'arrêter les tentatives de force brute avant qu'elles n'atteignent votre hôte, ou même au niveau SSH.
Cela dit, protéger votre système d'exploitation avec quelque chose comme fail2ban est une excellente idée. http://en.wikipedia.org/wiki/Fail2ban
Fail2ban est similaire à DenyHosts ... mais contrairement à DenyHosts qui se concentre sur SSH, fail2ban peut être configuré pour surveiller tout service qui écrit des tentatives de connexion dans un fichier journal, et au lieu d'utiliser /etc/hosts.deny uniquement pour bloquer les adresses IP/hôtes , fail2ban peut utiliser Netfilter/iptables et TCP Wrappers /etc/hosts.deny.
Il existe un certain nombre de techniques de sécurité importantes que vous devez envisager pour empêcher les connexions par force brute:
SSH:
Application:
comment puis-je supprimer cette attaque et empêcher les attaques suivantes
Habituellement, je change le port ssh par défaut de 22 en un autre comme 1122. Cela empêche de nombreuses attaques automatiques du bot, mais une simple analyse de port peut le détecter. En tous cas:
vi /etc/ssh/sshd_config
et modifiez Port 22 en Port 1122 , mais cela ne suffit pas.
j'utilise log2iptables https://github.com/theMiddleBlue/log2iptables à la place Fail2ban, car c'est un simple script Bash qui analyse tout fichier journal avec une expression régulière et exécutez iptables. Par exemple, lorsque 5 correspondances se produisent, log2iptables supprime l'adresse IP spécifique. C'est cool car utilisez l'API Telegram et pouvez m'envoyer un message sur mon téléphone quand il trouve un problème :)
j'espère que cela vous aidera!
Je viens de mettre cela ensemble, d'exécuter toutes les 15 minutes en tant que cronjob, etc.:
for z in `grep Invalid /var/log/auth.log | awk '{ print $NF }' | sort | uniq`
do
count1=`grep $z /etc/hosts.deny | wc -l`
count2=`grep Invalid /var/log/auth.log | grep $z | wc -l`
if [ $count1 -eq 0 -a $count2 -gt 10 ] ; then
current=`egrep "^ssh" /etc/hosts.deny | sed 's/sshd[ :,]*//'`
Sudo cp /etc/hosts.deny.bak /etc/hosts.deny
Sudo chmod 666 /etc/hosts.deny
if [ $current ] ; then
echo "sshd : $current , $z" >> /etc/hosts.deny
else
echo "sshd : $z" >> /etc/hosts.deny
fi
Sudo chmod 644 /etc/hosts.deny
fi
done
Solution automatisée pour Centos/RHEL pour bloquer les mauvais acteurs
Voici un script pour Centos pour vérifier les échecs de connexion ssh pour les comptes d'utilisateurs non valides et les mauvais mots de passe pour les comptes valides. Si l'IP source nous a frappé plus de 3 fois et n'est pas déjà sur la liste de refus, elle est ajoutée à la liste de refus. Je l'exécute toutes les 15 minutes depuis le crontab de root. J'ai également interdit les connexions root via ssh, donc la combinaison garde les choses assez silencieuses.
#/bin/bash
# Save a copy of the existing hosts.deny file for safety
cp /etc/hosts.deny /etc/hosts.deny.bak
# Get a list of the offending IP addresses and process them
for z in `grep "Invalid\|Failed" /var/log/secure | awk '{ print $NF }' | sort | uniq`
do
# Get the number of times this IP hit us
hits=`grep "Invalid\|Failed" /var/log/secure* | grep $z | wc -l`
# Check whether this IP is already blocked
blocked=`grep $z /etc/hosts.deny | wc -l`
# If they hit us more than 3 times and are not already on the deny list
# add them to the deny list
if [ $hits -gt 3 -a $blocked -eq 0 ]
then
echo "sshd : $z" >> /etc/hosts.deny
fi
done
Ceci est ma solution alternative pour les attaques SSH. L'idée est de continuer à fermer le démon SSH s'il n'est pas utilisé. Pas de port ouvert, pas d'attaque. Tu peux l'essayer. C'est open source https://github.com/indy99/nnet_port_guard