Mein Server wird ständig angegriffen [geschlossen]


32

Ich bin ziemlich neu in der Welt der Systemadministration. Ich habe in letzter Zeit an einer Anwendung gearbeitet und wenn ich meine Anwendungsserver-Protokolle überprüfe, erhalte ich ständig verschiedene IP-Adressen, die versuchen, mit brachialer Gewalt auf meinen Server zu sshen. Hier ist ein Beispiel für mein Serverprotokoll:

Feb 14 04:07:20 foodwiz3 sshd[1264]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:07:21 foodwiz3 sshd[1264]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:07:21 foodwiz3 sshd[1264]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:07:23 foodwiz3 sshd[1264]: Failed password for root from 23.249.167.223 port 32997 ssh2
Feb 14 04:07:23 foodwiz3 sshd[1264]: Received disconnect from 23.249.167.223: 11: Bye Bye [preauth]
Feb 14 04:13:04 foodwiz3 sshd[1289]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:13:05 foodwiz3 sshd[1289]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:13:05 foodwiz3 sshd[1289]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:13:07 foodwiz3 sshd[1289]: Failed password for root from 23.249.167.223 port 41562 ssh2

Ist das etwas ziemlich Normales oder sollte ich mir Sorgen machen / etwas dagegen tun?


3
Versuchen Sie, die Portnummer zu ändern, und prüfen Sie, ob sie weiterhin besteht. Wenn sie nicht speziell auf Sie abzielen, wird dies wahrscheinlich nicht der Fall sein.
Goldlöckchen

13
Die beste Lösung ist, die Kennwortauthentifizierung in SSH zu deaktivieren, da dies Brute-Force-Angriffe auf jeden Fall unterbindet!
Willem


3
@Willem - Nein, durch Deaktivieren der Kennwortauthentifizierung werden die Angriffe NICHT gestoppt. Dies führt nur dazu, dass sie nicht erfolgreich sind (die Angreifer bemerken nicht, dass die Kennwortauthentifizierung deaktiviert wurde, und fahren mit dem Versuch fort).
Martin Vegter,

Antworten:


59

Willkommen in der wundervollen Welt des Internets ... Haben Sie:

Die eigentliche Antwort lautet jedoch: Ja, das ist normal : Das BotNet Maffia kann immer ein paar besonders schlecht geschützte Server verwenden ...


1
Ich bevorzuge es, kein SSH im wilden, wilden Internet zu haben. +1
Rui F Ribeiro

2
Neben dem Ändern des Standard-Ports für ssh gibt es auch Port-Knocking .
Pablo A

15

Es ist ziemlich normal, dass Anmeldeversuche ausreichen, um ein Flutprotokoll zu erstellen.

Das Ändern von SSH-Ports ist eher eine Art "Sicherheit durch Unbekanntheit" -Lösung, hilft jedoch bei der Flut. Ich betone, es ist nicht sehr elegant; Nicht ohne Grund gibt es De-facto-Ports für Dienste.

Wie es standardmäßig aktiviert sein sollte, aber stellen Sie sicher, dass Sie nicht als root SSH auf Ihrem Server ausführen können. Es ist der Benutzername, der unter den Servern ziemlich konsistent ist und daher das Hauptziel für Anmeldeversuche mit Passwort-Brute-Force ist. Erzwingen Sie die Einstellung mit der folgenden Zeile in sshd_config:

PermitRootLogin no

fail2banPrüfen Sie auch, ob sshd-Protokolle auf Wiederholungstäter überwacht werden. Zum Beispiel würden 5 fehlgeschlagene Anmeldungen innerhalb von 3 Minuten von einer bestimmten IP diese IP für 10 Minuten blockieren. Ich habe diese Sperrzeit auf 24 Stunden erhöht, um die Anzahl der Spam-Mails weiter zu reduzieren - erfolgreich. :)


1
Mit apt-get install fail2ban werden Sie im Grunde abgedeckt
Willem

7
"Ich habe diese Sperrzeit auf 24 Stunden erhöht, um die Anzahl der Spam-Mails weiter zu verringern." Vertrauen Sie mir. Wenn Sie keinen physischen Zugriff auf den Server haben, werden Sie dies eines Tages zutiefst bedauern. ;)
Daniel

8

Ich würde Ihnen vorschlagen, ein paar Dinge zu tun:

  1. Ändern Sie den Port, auf dem ssh lauscht (auf einen Wert weit über 1024), und stellen Sie sicher, dass Sie keine Version 1 des Protokolls verwenden:

/ etc / ssh / sshd_config

# What ports, IPs and protocols we listen for
Port 50022
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
  1. Installation fail2ban- Es überwacht Protokolldateien und sperrt fehleranfällige Adressen vorübergehend oder dauerhaft, indem vorhandene Firewall-Regeln aktualisiert werden ( iptables).

  2. Stellen Sie sicher, dass Sie Ihre vertrauenswürdigen Speicherorte in die weiße Liste aufgenommen haben.


7

Ja, sei besorgt . Sie werden sich möglicherweise nie verbrennen, sollten sich jedoch an die bewährten IT-Methoden halten. Sicher ist sicher.

Ich bin ein Netzwerkadministrator in einem Krankenhaus. Es ist immer eine schlechte Idee, eine Box direkt mit dem Internet zu verbinden. Was Sie sehen, sind all die tausenden automatisierten Scanner, die im Internet nach Sicherheitslücken suchen. Ich sehe diese und alle möglichen Dinge (Port-Scans, verschiedene bekannte Schwachstellentests) für alle Arten von Software (ssh, telnet, ftp usw.) in unserer ID-Box.
Ihr Computer sollte sich hinter einer Firewall / NAT-Lösung befinden, und Sie sollten nur Portweiterleitung der erforderlichen Ports zum Internet (80, 443 usw.). Es ist relativ einfach zu machen.
Etwas zu haben, das Sie für die Verwaltung verwenden können (SSH-Telnet), ist eine schlechte Idee, wenn Sie sich mit dem Internet auseinandersetzen, denn wenn - aus welchem ​​Grund auch immer - ein Fehler in der SSH- / Telnet-Software auf diesem Server vorliegt, erkennt der automatische Bot diesen sofort und du wirst geschraubt. Fehler in der Software treten ständig auf und es kann eine Weile dauern, bis ein Patch veröffentlicht wird oder Sie sich daran erinnern, ihn zu patchen.

Wenn Sie eine Remoteverwaltung benötigen, sollten Sie eine VPN-Lösung einrichten. Wenn Sie Windows verwenden, richten Sie das Terminaldienstegateway für den Remotedesktop ein. Ich weiß, dass Sie eine separate Linux- oder Windows-Box mit 2 Netzwerkkarten verwenden können, um das Routing und den Remotezugriff für VPN und NAT einzurichten, wenn Sie nur ein kleiner Laden sind. Andernfalls verfügen Anbieter wie Cisco über Hardware-Firewall- / NAT-Lösungen (Cisco ASA).

Stellen Sie Ihren Computer also hinter NAT. Leiten Sie nur die Ports weiter, die zum Ausführen des Dienstes erforderlich sind. Portieren Sie keine Weiterleitungsdienste, die für die Verwaltung verwendet werden, in das Internet, sondern suchen Sie nach VPN für die Remoteverwaltung.

PS Das Ändern der SSH-Ports kann zwar das Protokollvolumen verbessern, verhindert jedoch nicht den Zugriff auf SSH. Jeder der Tausenden automatisierten Schwachstellenfinder kann und wird Port-Scans durchführen, um festzustellen, welche Ports auf welche Dienste warten. Sie können es selbst mit einem Tool namens nmap tun .


7
Tatsächlich ist eine VPN-Lösung nicht mehr oder weniger sicher als ein SSH-Server. Beide setzen voraus, dass die kryptografischen Protokolle ordnungsgemäß implementiert und die Dienste ordnungsgemäß konfiguriert sind. Durch verschiedene Mittel würde ich sagen, dass sie genau das gleiche Maß an Sicherheit bieten. Wenn ich Sie dann gut verstehe, stellen Sie eine SSH hinter ein VPN, dann ist das ja eine Ebene sicherer.
Lgeorget

Ja , Sie sind richtig, was ich gemeint, Verwendung vpn die Firewall / nat dann ssh in den Server übergeben zu bekommen
Person

1
Die meisten VPN-Setups durchlaufen mehrere Ebenen der Clientauthentifizierung und stellen einen einzigen Punkt bereit, an dem externer Datenverkehr das interne Netzwerk erreichen kann. Versus mit vielen Knoten. VPN-Konzentratoren sind normalerweise auch keine interessanten Ziele an und für sich, verglichen mit dem Server, auf dem sich wahrscheinlich die sshdInstanz befindet. Eine ssh-Jumpbox kann so sicher sein wie die meisten VPN-Konfigurationen, aber im Allgemeinen funktioniert das nicht so.
Bratchley

5

Sie können die interne Firewall des Kernels mit iptables konfigurieren . Damit nur wenige Rechner auf Ihren Server ssh und andere IP-Pakete fallen lassen können. Siehe man iptablesfür weitere Informationen.

Wenn beispielsweise 192.168.1.67 der Host ist, von dem Sie ssh verwenden, geben Sie auf dem Server Folgendes ein:

sudo iptables -A INPUT -p tcp --dport ssh -s 192.168.1.67 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport ssh -j DROP
sudo iptables-save

2
Beachten Sie, dass Sie schwer verletzt werden, wenn die Remoteverwaltung Ihre einzige Option ist. Die meisten IP sind nur semipermanent. Ändern Sie die Hardware und Sie werden gebrannt.
Mast

3

Benötigen Sie wirklich Ihren Server im Internet? Wenn Sie es wirklich im Internet haben möchten, stellen Sie sicher, dass es sicher ist, bevor Sie es dort ablegen.

Das Ändern des Ports ist nur Sicherheit durch Unbekanntheit. Wenn Ihr Angreifer ausgefeilter ist als nur das Ausführen von Skripten, hilft das nichts.

Ein paar Dinge, die ich bereits erwähnte, empfehle ich auch:

  1. Ich bin mit Fail2Ban einverstanden und richtig konfiguriert, um die Skripte und die anspruchsvollsten Hacker in Schach zu halten.
  2. Das Setzen von PermitRootLogin auf no ist ein Muss.
  3. Konfigurieren Sie eine Firewall. Normalerweise bearbeite ich einfach die iptables-Regeln, aber so etwas wie UFW oder firehol funktionieren auch.

Ich bin gerade dieser Community beigetreten, weil es zwei Dinge gibt, die meiner Meinung nach nicht angemessen angesprochen wurden.

  • In der Firewall-Konfiguration unbedingt alles blockieren / deaktivieren, was nicht unbedingt nötig ist. Bevor Sie Ports öffnen, fragen Sie sich: "Brauche ich diesen Dienst wirklich aus dem Internet?" Jeder Port / Dienst, den Sie öffnen, wird zu einem weiteren potenziellen Vektor, den möglicherweise jemand ausnutzen kann. Wenn dieser Dienst einen Fehler enthält, der es ihm ermöglicht, als Root auf den Server zuzugreifen, kann er möglicherweise auf alle darauf befindlichen Elemente zugreifen. Ihre Sicherheit ist nur so stark wie das schwächste Glied.
  • Nun zum letzten und wohl wichtigsten. Die Skripte, die Sie beim Versuch gesehen haben, auf ssh zuzugreifen, können Ihr Kennwort möglicherweise im Laufe der Zeit erraten. Fail2Ban wird sie viel verlangsamen, aber sie könnten es immer noch erraten. Wenn dies der Fall ist, möchten Sie eine 2-Faktor-Authentifizierung für die zugreifbaren Dienste. Dafür empfehle ich einen kostenlosen Account bei Duo Security. https://www.duosecurity.com/docs/duounix

1
Das Ändern des Ports hat den Vorteil, dass die Protokolldateien bereinigt werden: Da Script-Kiddies meist keine nicht standardmäßigen Ports angreifen, wissen Sie, dass jeder Protokolleintrag eine ernsthafte Bedrohung darstellt.
Mark

Das Ändern des Ports ist gegen eine echte Bedrohung auch nicht ganz nutzlos. Eine Bremsschwelle ist nicht viel von einer Mauer, aber es ist immer noch eine Bremsschwelle, und es gibt Möglichkeiten, wie Sie diese in eine etwas größere Bremsschwelle verwandeln können. Auch wenn die 2-Faktor-Authentifizierung sicherlich eine gute Idee ist, wann immer dies möglich ist und fast immer möglich sein sollte, gibt es Randfälle. Wenn es eine bestimmte Mindestzeit gibt, können Sie sich ziemlich sicher sein, dass Fail2Ban sie verzögert. Wenn Sie Ihr Passwort einfach häufiger ändern, werden sie gezwungen, wiederholt von vorne zu beginnen und nie zu beenden.
Matthew Najmon

2

Ein weiteres Beispiel für die Antwort von @cff, wenn Sie beabsichtigen, aufeinanderfolgende "Versuche" auf Ihrem SSH-Server zu verbieten:

sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --update --seconds 600 --hitcount 4 --name DEFAULT --mask 255.255.255.255 --rsource -j DROP
sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource
sudo iptables-save

Dieser eine "markiert" Verbindungsversuch und wenn mehr als 4 in 600s (10mn) passieren, dann ist der Ursprung "gebannt". Verwenden Sie dies anstelle von @cff, da es sicherer ist (wenn Sie sich aussperren, warten Sie 10 Minuten und versuchen Sie es erneut).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.