Frage Wie man SSH-Bruteforce stoppt / verhindert [geschlossen]


Ich bin sehr neu in der Netzwerkadministration, also bitte beachte, dass ich noch nicht so erfahren bin.

Ich habe einen Ubuntu-Root-Server mit Plesk Panel.

Gestern haben meine Freunde und ich festgestellt, dass die Sprachqualität auf unserem TS3 sehr schlecht geworden ist. Ich habe einige Pings an den Server geschickt und es gab einen sehr hohen Paketverlust. Danach habe ich ein wenig gegoogelt und herausgefunden, dass es ein auth.log. Ich habe es heruntergeladen und ein bisschen herumgescrollt, dann habe ich folgendes gefunden:

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

Es scheint so, als hätte sich jemand viele Male über SSH angemeldet. Ich scrollte ein wenig herum und sah, dass dieser jemand versucht, viele verschiedene Benutzernamen zu verwenden: student, tech, psi, news,...

Hunderte dieser Logins wurden in der Datei angezeigt.

Ich habe die Verkehrsstatistik auf der Website meines Rechenzentrums nachgeschlagen. Es war nur bei 17 MB pro Stunde. Ich habe ein 100Mbit Backbone, daher scheint die Datenübertragung selbst nicht das Problem zu sein.

Im Moment habe ich keinen Zugang zum Server.

Meine Frage ist: Wie kann ich wieder Zugang bekommen, wie kann ich diesen Angriff unterdrücken und nachfolgende Angriffe verhindern?


18
2018-05-13 11:02


Ursprung


Ich lerne immer noch meine Sachen in dieser Abteilung ... Aber wäre das nicht ein guter Zweck für Port-Klopfen? - mjrider
Siehe auch Sicherung des SSH-Servers gegen Bruteforcing und Brute-Force-Angriffe gegen SSH verhindern? - Cristian Ciupitu
Hinzufügen Wie kann man den Ubuntu-Server vor Bruteforce-ssh-Angriffen schützen? und wie brute force attack auf ssh zu verhindern? zur Liste. - Cristian Ciupitu


Antworten:


Wie bekomme ich Zugang?

Es ist nicht klar, warum Sie nicht auf Ihr Konto zugreifen können.

Wenn Ihr Computer angegriffen oder stark ausgelastet ist, sollten Sie mit Ihrem Provider über die Beschränkung des Zugriffs (IP-Einschränkungen) oder die Offline-Verbindung zum Server (Verbindung zum Internet) sprechen.

Möglicherweise benötigen Sie auch einen Out-of-Band-Zugriff, bei dem Ihr Anbieter möglicherweise helfen kann.

Wenn jemand Ihren Server kompromittiert hat, müssen Sie möglicherweise aus Sicherungen wiederherstellen oder ein Wiederherstellungsabbild verwenden.

So verhindern Sie Angriffe auf Ihren Server, insbesondere SSH

beste Möglichkeit, Brute-Force-Anmeldungen zu verhindern?

Lass sie nicht erst zu deiner Maschine kommen! Es gibt viele Möglichkeiten, Brute-Force-Versuche zu stoppen, bevor sie zu Ihrem Host oder sogar auf SSH-Ebene gelangen.

Allerdings ist es eine gute Idee, Ihr Betriebssystem mit etwas wie fail2ban zu schützen. http://en.wikipedia.org/wiki/Fail2ban

Fail2ban ist DenyHosts ähnlich ... aber im Gegensatz zu DenyHosts welche   konzentriert sich auf SSH, kann fail2ban konfiguriert werden, um jeden Service zu überwachen, der   schreibt Anmeldeversuche in eine Protokolldatei und verwendet sie nicht   /etc/hosts.deny nur um IP-Adressen / Hosts zu blockieren, die fail2ban verwenden kann   Netfilter / iptables und TCP-Wrapper /etc/hosts.deny.

Es gibt eine Reihe wichtiger Sicherheitstechniken, die Sie berücksichtigen sollten, um Brute-Force-Logins zu verhindern:

SSH:

  • Root darf sich nicht anmelden
  • Ssh-Kennwörter nicht zulassen (private key authentication verwenden)
  • Hören Sie nicht an jeder Schnittstelle zu
  • Erstellen Sie eine Netzwerkschnittstelle für SSH (z. B. eth1), die sich von der Schnittstelle unterscheidet, an die Sie Anforderungen von (z. B. eth0) senden
  • Verwenden Sie keine allgemeinen Benutzernamen
  • Verwenden Sie eine Zulassungsliste und erlauben Sie nur Benutzern, die SSH-Zugriff benötigen
  • Wenn Sie Internetzugriff benötigen ... Beschränken Sie den Zugriff auf einen begrenzten Satz von IPs. Eine statische IP ist ideal, jedoch ist es auf x.x.0.0 / 16 besser als 0.0.0.0/0 zu sperren
  • Wenn möglich, eine Verbindung ohne Internet-Zugang zu finden, können Sie den gesamten Internet-Verkehr für SSH verweigern (z. B. mit AWS können Sie eine direkte Verbindung erhalten, die das Internet umgeht, es heißt Direct Connect)
  • Verwenden Sie Software wie fail2ban, um Brute-Force-Angriffe zu erfassen
  • Stellen Sie sicher, dass das Betriebssystem immer auf dem neuesten Stand ist, insbesondere in den Paketen security und ssh

Anwendung:

  • Stellen Sie sicher, dass Ihre Anwendung immer auf dem neuesten Stand ist, insbesondere Sicherheitspakete
  • Sperren Sie Ihre Anwendungs-Admin-Seiten. Viele der obigen Hinweise gelten auch für den Admin-Bereich Ihrer Bewerbung.
  • Passwort Schützen Sie Ihren Admin-Bereich. So etwas wie htpasswd für die Webkonsole projiziert alle Sicherheitslücken der zugrunde liegenden Anwendung und schafft eine zusätzliche Eintrittsbarriere
  • Sperren Sie Dateiberechtigungen. "Upload-Ordner" sind berüchtigt dafür, Einstiegspunkte für alle Arten von ekelhaften Dingen zu sein.
  • Erwägen Sie, Ihre Anwendung hinter ein privates Netzwerk zu stellen und nur Ihren Front-End-Lastenausgleich und eine Jumpbox verfügbar zu machen (dies ist eine typische Einrichtung in AWS mit VPCs).

35
2018-05-13 11:15



Ich habe Fail2ban via installiert help.ubuntu.com/community/Fail2ban Es scheint sehr mächtig und benutzerfreundlich zu sein (Mail Benachrichtigungen, ...)
Ich habe eine Nachricht von meinem Datacenter erhalten: Es gab einen Flutangriff (was ist das?) Und das hat die Verbindung für viele Server sehr schlecht gemacht. Es war vor allem kein Angriff auf meinen Server.
Sehen en.wikipedia.org/wiki/UDP_flood_attack - Drew Khoury
Interessant. So scheint es, dass mein Datacenter das Ziel des Angriffs war. Aber zu wissen, dass ich nebenbei bruteed war, ist auch sehr gut. Und Fail2ban ist wirklich ein gutes Werkzeug. Ich werde in den nächsten Tagen über Iptables und SSH Config lesen und versuchen, es viel sicherer zu machen.
Konfigurieren Sie openssh, um einen anderen Port als 22 zu hören, und konfigurieren Sie iptables, um alles, was an Port 22 ankommt, zu löschen. Wenn Sie nicht aus einem anderen Land als Ihrem Heimatland kommen, erstellen Sie eine Sperrliste unter countryipblocks.net/country_selection.php und benutze es mit iptables. - ThoriumBR


Wie kann ich diesen Angriff unterdrücken und nachfolgende Angriffe verhindern

Normalerweise ändere ich den Standard-SSH-Port von 22 zu einem anderen wie 1122. Dies verhindert viele automatische Angriffe von Bot, aber ein einfacher Port-Scan kann es erkennen. Sowieso:

vi /etc/ssh/sshd_config

und bearbeiten Hafen 22 zu Hafen 1122aber das ist nicht genug.

Automatische IPTabellenregeln für Bruteforce

ich benutze log2iptables  https://github.com/theMiddleBlue/log2iptables Stattdessen Fail2ban, weil es ein einfaches Bash-Skript ist, das jede Logdatei mit einem regulären Ausdruck analysiert und iptables ausführt. Wenn beispielsweise 5 Übereinstimmungen auftreten, löscht log2iptables die spezifische IP-Adresse. Es ist cool, weil Telegram API verwendet wird und mir eine Nachricht auf meinem Telefon senden kann, wenn er ein Problem findet :)

hoffe das wird helfen!


4
2017-11-19 08:43



Ich vermute aufgrund der Korrelation zwischen der Projekt-URL und Ihrem SF-Handle, dass Sie an diesem Projekt beteiligt sind. Bitte sehen unsere Richtlinien auf die Referenzierung Ihrer eigenen Produkte, insbesondere auf die Anforderung, dass "Sie Muss offenbaren Sie Ihre Zugehörigkeit in Ihren Antworten". - MadHatter


Ich habe es einfach zusammengefügt, lauf alle 15 Minuten als 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

1
2017-10-06 20:38





Dies ist meine alternative Lösung für SSH-Angriffe. Die Idee ist, den SSH-Daemon bei Nichtgebrauch zu schließen. Kein offener Port, kein Angriff. Du kannst es versuchen. Es ist Open Source https://github.com/indy99/nnet_port_guard


0
2018-04-10 15:58



Willkommen bei Serverfehler! Ihre Antwort schlägt vor, dass eine praktikable Lösung für die Frage über eine andere Website verfügbar ist. Die Stack Exchange-Familie von Q & A-Websites missbilligt im Allgemeinen diese Art von Antwort, da andere Websites möglicherweise verschoben, gelöscht oder geändert werden. Lesen Sie bitte Wie schreibe ich eine gute Antwort? und überlegen Sie, Ihre Antwort zu überarbeiten, um die erforderlichen Schritte zur Lösung des Problems einzubeziehen. Und vergiss nicht, das zu nehmen Site-Tour. - Paul


Automatisierte Lösung für Centos / RHEL zum Blockieren von schlechten Schauspielern

Hier ist ein Skript für Centos, mit dem ssh-fehlgeschlagene Anmeldungen sowohl für ungültige Benutzerkonten als auch für ungültige Kennwörter für gültige Konten überprüft werden können. Wenn die Quell-IP uns mehr als 3 mal getroffen hat und nicht bereits in der Verweigerungsliste ist, wird sie zur Verweigerungsliste hinzugefügt. Ich laufe das alle 15 Minuten von root's crontab. Ich habe auch Root-Logins über ssh abgelehnt, so dass die Kombination die Dinge ziemlich ruhig hält.

     #/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

0
2018-02-05 21:41



Schau ein fail2ban das macht das gleiche und ist kampferprobt. - Patrick Mevzek