Solution 1 :
Comment y accéder ?
La raison pour laquelle vous ne pouvez pas accéder à votre compte n'est pas claire.
Si votre machine est attaquée ou surchargée, vous devriez discuter avec votre fournisseur de la possibilité de restreindre l'accès (restrictions IP) ou de mettre le serveur hors ligne (déconnexion d'Internet).
Vous pouvez également avoir besoin d'un accès hors bande pour lequel votre fournisseur peut être en mesure de 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 prévenir les attaques sur votre serveur, notamment SSH
meilleur moyen d'empêcher les connexions par force brute ?
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 les 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 à prendre en compte pour empêcher les connexions par force brute :
SSH :
- Ne pas autoriser root à se connecter
- Ne pas autoriser les mots de passe SSH (utiliser l'authentification par clé privée)
- N'écoutez pas sur toutes les interfaces
- Créez une interface réseau pour SSH (par exemple, eth1), différente de l'interface à partir de laquelle vous traitez les requêtes (par exemple, eth0)
- N'utilisez pas de noms d'utilisateur courants
- Utilisez une liste d'autorisation et n'autorisez que les utilisateurs nécessitant un accès SSH
- Si vous avez besoin d'un accès Internet... Limitez l'accès à un ensemble limité d'adresses IP. Une adresse IP statique est idéale, mais la verrouiller sur x.x.0.0/16 est préférable à 0.0.0.0/0
- Si possible, trouvez un moyen de vous connecter sans accès Internet, de cette façon vous pouvez refuser tout le trafic Internet pour SSH (par exemple, avec AWS, vous pouvez obtenir une connexion directe qui contourne Internet, c'est ce qu'on appelle la connexion directe)
- Utilisez un logiciel comme fail2ban pour détecter toute attaque par force brute
- Assurez-vous que le système d'exploitation est toujours à jour, en particulier les packages de sécurité et ssh
Candidature :
- Assurez-vous que votre application est toujours à jour, en particulier les packages de sécurité
- Verrouillez les pages "admin" de votre application. La plupart des conseils ci-dessus s'appliquent également à la zone d'administration de votre application.
- Mot de passe Protégez votre zone d'administration, quelque chose comme htpasswd pour la console Web projettera toutes les vulnérabilités d'application sous-jacentes et créera une barrière supplémentaire à l'entrée
- Verrouillez les autorisations de fichiers. Les "dossiers de téléchargement" sont connus pour être des points d'entrée de toutes sortes de choses désagréables.
- Envisagez de placer votre application derrière un réseau privé et d'exposer uniquement votre équilibreur de charge frontal et un jumpbox (il s'agit d'une configuration typique dans AWS utilisant des VPC)
Solution 2 :
comment puis-je supprimer cette attaque et empêcher les attaques suivantes
Habituellement, je change le port ssh par défaut de 22 à un autre comme 1122. Cela empêche de nombreuses attaques automatiques du bot, mais une simple analyse de port peut le détecter. Quoi qu'il en soit :
vi /etc/ssh/sshd_config
et modifiez Port 22 au port 1122 , mais cela ne suffit pas.
Règles IPTables automatiques sur la force brute
j'utilise log2iptables https://github.com/theMiddleBlue/log2iptables au lieu de Fail2ban, car il s'agit d'un simple script Bash qui analyse n'importe quel fichier journal avec une expression régulière et exécute iptables. Par exemple, lorsque 5 correspondances se produisent, log2iptables supprime l'adresse IP spécifique. C'est cool parce qu'il utilise l'API Telegram et peut m'envoyer un message sur mon téléphone quand il trouve un problème :)
j'espère que cela vous aidera !
Solution 3 :
Je viens de mettre cela ensemble, exécuté 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