Wie riskant ist es, einen Personal Server mit ssh für das Internet zu öffnen?

25

Die Fortsetzung des Titels würde lauten „bei begrenzten Kenntnissen der Internetsicherheit“.

Ich habe kürzlich einen kleinen Server mit einem Low-End-Computer eingerichtet, auf dem Debian läuft, mit dem Ziel, ihn als persönliches Git-Repository zu verwenden. Ich habe ssh aktiviert und war ziemlich überrascht über die Schnelligkeit, mit der es unter Brute-Force-Angriffen und dergleichen litt. Dann habe ich gelesen, dass dies durchaus üblich ist, und grundlegende Sicherheitsmaßnahmen zur Abwehr dieser Angriffe kennengelernt (viele Fragen und Duplikate zu Serverfehlern beschäftigen sich damit, siehe zum Beispiel diese oder diese ).

Aber jetzt frage ich mich, ob all dies die Mühe wert ist. Ich habe beschlossen, meinen eigenen Server hauptsächlich zum Spaß einzurichten: Ich konnte mich nur auf Lösungen von Drittanbietern verlassen, wie die von gitbucket.org, bettercodes.org usw. Während ein Teil des Spaßes darin besteht, etwas über Internetsicherheit zu lernen, habe ich es nicht getan genug Zeit, um mich darauf einzulassen, ein Experte zu werden und fast sicher zu sein, dass ich die richtigen Präventionsmaßnahmen ergriffen habe.

Um zu entscheiden, ob ich mit diesem Spielzeugprojekt weiterspielen werde, möchte ich wissen, was ich dabei wirklich riskiere. Inwieweit sind beispielsweise auch die anderen an mein Netzwerk angeschlossenen Computer bedroht? Einige dieser Computer werden von Personen verwendet, die noch weniger wissen als ich, auf denen Windows ausgeführt wird.

Wie groß ist die Wahrscheinlichkeit, dass ich ernsthafte Probleme bekomme, wenn ich grundlegende Richtlinien befolge, z. B. ein sicheres Kennwort, den deaktivierten Root-Zugriff für ssh, einen nicht standardmäßigen Port für ssh und möglicherweise die Deaktivierung der Kennwortanmeldung sowie eine der Regeln fail2ban, denyhosts oder iptables?

Anders ausgedrückt, gibt es einige große böse Wölfe, die ich fürchten sollte, oder dreht sich alles hauptsächlich darum, Drehbuchkinder zu verscheuchen?

Alfred M.
quelle
Ich denke, Sie haben den Nagel auf den Kopf getroffen, als Sie sagten, dass Sie nicht die Zeit oder die Neigung haben, ein Experte für Sicherheit von $ TECHNOLOGY zu werden. Dies ist der Hauptgrund für die Verwendung einer gehosteten Lösung. Das einzige weitere Argument bei der Bewertung von Inhouse- und Hosting-Prozessen sind die Kosten. Da Github und ähnliches kostenlos ist, geben Sie im Wesentlichen Ihre persönliche Zeit auf, um sich das Wissen darüber anzueignen, wie man ein Git-Repo betreibt. Wir können Ihnen nicht sagen, was Sie mit Ihrer persönlichen Zeit anfangen sollen, aber in einer beruflichen Situation macht dies keinen Sinn. (Vorbehalt: Komplizierte Situationen haben mehr Variablen).
Chris S
1
Wenn Sie sich für den Betrieb eines eigenen Servers entscheiden, fügen Sie Ihrer Aufgabenliste außerdem die regelmäßige Überprüfung auf Updates und Sicherheitslücken für jeden von Ihnen ausgeführten Dienst hinzu. Es reicht nicht aus, es nur einzurichten.
Woche
Zwei Wörter: öffentliche Schlüssel, wie @Stephane es ausdrückte. Deaktivieren Sie die keyboard-interactiveAuthentifizierung und verwenden Sie nur die pubkeyAuthentifizierung.
Kostix

Antworten:

14

IMO SSH ist eines der sichersten Dinge, die man im offenen Internet hören kann. Wenn Sie wirklich besorgt sind, sollten Sie einen nicht standardmäßigen High-End-Port abhören. Ich würde immer noch eine Firewall (auf Geräteebene) zwischen Ihrer Box und dem eigentlichen Internet haben und nur die Portweiterleitung für SSH verwenden, aber das ist eine Vorsichtsmaßnahme gegen andere Dienste. SSH selbst ist ziemlich solide.

Ich habe gelegentlich Leute auf meinen SSH-Heimserver stoßen lassen (offen für Time Warner Cable). Hatte nie einen wirklichen Einfluss.

Einige zusätzliche Dinge, die Sie tun können, um SSH sicherer zu machen, sind das Verhindern wiederholter Versuche von derselben IP-Adresse für einen Heimcomputer wie

MaxStartups 2:30:10

In / etc / ssh / sshd_config können Sie festlegen, wie viele Verbindungen hintereinander hergestellt werden können, bevor Sie sich erfolgreich anmelden.

TheFiddlerWins
quelle
Mein Internetdienstanbieter stellt eine Firewall bereit, deren Parameter ich beim Öffnen eines Ports für ssh gesehen habe. Ist es das, worauf Sie sich beziehen?
Alfred M.
2
Möglicherweise stellen Ihnen einige ISPs ein dummes Gerät zur Verfügung, andere einen Router mit einer eingebauten Firewall. Ich sage nur, dass es NIE eine gute Idee ist, ein Allzweck-Betriebssystem direkt ins Internet zu stellen, egal welche Vorsichtsmaßnahmen Sie treffen. Sie möchten eine Art Hardware-Gerät (oder so etwas wie DD-WRT) zwischen Ihnen und dem Bösen.
TheFiddlerWins
1
Richten Sie die Authentifizierung mit öffentlichem Schlüssel wie in einer anderen Antwort erwähnt ein und deaktivieren Sie ChallengeResponseAuthentication und PasswordAuthentication in / etc / ssh / sshd_config.
Randy Orrison
Ich weiß, dass dies eine blöde Frage ist, aber muss ich eine Domain kaufen, um über das Internet auf meinen Server (über SSH oder Browser) zuzugreifen?
TheRookierLearner
@TheRookierLearner - Nein, Sie können die IP-Adresse verwenden, die Ihnen Ihr ISP zur Verfügung stellt. Abhängig von der Konfiguration Ihres Heimnetzwerks kann es jedoch von PNAT (die meisten Leute nennen es einfach NAT) auf allen Ihren Geräten gemeinsam genutzt werden. Wenn Sie wie die Mehrheit der Leute sind, müssen Sie die "NATed" -IP des spezifischen Geräts herausfinden, auf das Sie über das Internet zugreifen möchten (nur ifconfig / ipconfig auf dem System, es wird eine 10.xxx, 172.16 sein. xx oder 192.168.xx Adresse finden Sie in RFC 1918 für mehr, als Sie sich für diese Nummern interessieren) und teilen Sie Ihrem Router dann "Port Forward" oder "DMZ" Port 22 mit.
TheFiddlerWins
10

Das Einrichten eines öffentlichen Schlüsselauthentifizierungssystems mit SSH ist sehr einfach und dauert etwa 5 Minuten .

Wenn Sie alle SSH-Verbindungen zwingen, diese zu verwenden, wird Ihr System so widerstandsfähig, wie Sie nur hoffen können, ohne viel in die Sicherheitsinfrastruktur zu investieren. Ehrlich gesagt ist es so einfach und effektiv (solange Sie nicht über 200 Konten verfügen - dann wird es chaotisch), dass die Nichtbenutzung eine Straftat sein sollte.

Stephane
quelle
3
Stellen Sie sicher, dass Sie ChallengeResponseAuthentication und PasswordAuthentication in / etc / ssh / sshd_config deaktivieren, damit SSH-Verbindungen nach dem Einrichten die Authentifizierung mit öffentlichem Schlüssel verwenden. Ich habe dies einmal vergessen, sehr zu meinem Bedauern (nur einmal und nie wieder).
Randy Orrison
8

Ich betreibe auch einen persönlichen Git-Server für SSH, der für die ganze Welt offen ist, und ich habe dieselben Brute-Force-Probleme wie Sie, sodass ich mit Ihrer Situation sympathisieren kann.

TheFiddlerWins hat bereits die wichtigsten Sicherheitsrisiken behoben, die sich aus dem Öffnen von SSH auf einer öffentlich zugänglichen IP-Adresse ergeben. Das beste Tool IMO als Reaktion auf Brute-Force-Versuche ist jedoch Fail2Ban - eine Software, die Ihre Authentifizierungsprotokolldateien überwacht, Einbruchsversuche erkennt und Firewall-Regeln hinzufügt lokale iptablesFirewall des Computers . Sie können sowohl die Anzahl der Versuche vor einer Sperre als auch die Dauer der Sperre konfigurieren (meine Standardeinstellung ist 10 Tage).

Craig Watson
quelle
Wie in meinem Kommentar zum vorherigen Beitrag erwähnt, wird dies von meinem NAS zu Hause verwendet, und nach ein paar Monaten ist die Anzahl der Versuche erheblich gesunken.
Mveroone
2

Eine andere Möglichkeit, dies zu handhaben, besteht darin, ein VPN einzurichten. Anstatt eine direkte Verbindung zu SSH-Ports auf Ihrem Heimserver herzustellen, stellen Sie zuerst eine Verbindung zum VPN her und führen dann den gesamten Datenverkehr über die verschlüsselte, sichere Verbindung aus.

Dies lässt sich am besten mit einer Firewall umgehen, die einen VPN-Endpunkt enthält. Sie können jedoch auch einen Windows-Computer als VPN-Server einrichten.

Hier ist ein Beispiel:

http://www.howtogeek.com/135996/

Denken Sie jetzt daran, dass eine ordnungsgemäße Sicherheitskonfiguration einen öffentlichen (oder halböffentlichen) Computer umfasst, der von Ihrem internen Netzwerk isoliert ist. Ein Webserver oder ein Computer, auf dem öffentlich zugängliche Dienste gehostet werden, sollte sich außerhalb des sicheren Netzwerks Ihres Hauses oder Büros befinden. Sie würden 2 Router verwenden, um eine sichere Zone oder eine DMZ zwischen Ihnen und dem Internet zu erstellen.

Auf diese Weise kann Ihr Server, wenn er gehackt wird, nicht als Vektor verwendet werden, um Ihre anderen Computer anzugreifen.

Das Setup würde also so aussehen:

DMZ-Konfiguration

TomXP411
quelle
Entschuldigung für das kleine Bild ... Ich kann nicht herausfinden, wie ich meinen Beitrag bearbeite.
TomXP411
2

Die Antworten sind sehr gut, ich würde nur zwei Dinge empfehlen:

  • Erwägen Sie den Zugriff nur über das Schlüsselauthentifizierungssystem
  • Verwendung Denyhosts : Es wird ein Verbot Hosts Ihren Server mit ungültiger Auth zuzugreifen versuchen ,
Carlos C Soto
quelle