
Ich glaube, viele Leute sind in meiner Situation. Ich bin geschäftlich mit einem Laptop unterwegs. Und ich brauche sicheren Zugriff auf Dateien vom Büro aus (in meinem Fall ist das mein Zuhause).
Die Kurzfassung meiner Frage:
Wie kann ich SSH/SFTP einrichtenWirklichsicher, wenn nur eine Person von einem Laptop aus eine Verbindung zum Server herstellen muss? Welche besonderen Schritte würden es in dieser Situation für andere nahezu unmöglich machen, online auf den Server zuzugreifen?
Viele weitere Details:
Ich verwende Ubuntu Linux sowohl auf meinem Laptop (KDE) als auch auf meinem Heim-/Büroserver. Die Konnektivität ist kein Problem. Bei Bedarf kann ich die Verbindung meines Telefons nutzen. Ich brauche Zugriff auf eine große Anzahl von Dateien (ca. 300 GB). Ich brauche sie nicht alle auf einmal, aber ich weiß nicht im Voraus, welche Dateien ich möglicherweise brauche. Diese Dateien enthalten vertrauliche Kundeninformationen und persönliche Daten wie Kreditkartennummern und müssen daher sicher sein.
Vor diesem Hintergrund möchte ich all diese Dateien nicht auf Dropbox oder Amazon AWS oder Ähnlichem speichern. Diese Kosten könnte ich ohnehin nicht rechtfertigen (Dropbox veröffentlicht nicht einmal Preise für Pläne über 100 GB und Sicherheit ist ein Problem). Ich bin jedoch bereit, etwas Geld für eine richtige Lösung auszugeben. Ein VPN-Dienst könnte beispielsweise Teil der Lösung sein? Oder andere kommerzielle Dienste? Ich habe von PogoPlug gehört, weiß aber nicht, ob es einen ähnlichen Dienst gibt, der meine Sicherheitsbedenken ausräumen könnte?
Ich könnte alle meine Dateien auf meinen Laptop kopieren, da dieser über den nötigen Speicherplatz verfügt. Aber dann muss ich zwischen meinem Heimcomputer und meinem Laptop synchronisieren, und ich habe in der Vergangenheit festgestellt, dass ich das nicht sehr gut mache. Und wenn mein Laptop verloren geht oder gestohlen wird, wären meine Daten darauf. Das Laptop-Laufwerk ist eine SSD und Verschlüsselungslösungen für SSD-Laufwerke sind nicht gut.
Daher scheint es mir am besten, alle meine Daten auf meinem Linux-Dateiserver zu speichern (der zu Hause sicher ist).
Ist das eine vernünftige Schlussfolgerung, oder stellt alles, was mit dem Internet verbunden ist, ein so großes Risiko dar, dass ich die Daten einfach auf den Laptop kopieren sollte (und vielleicht die SSD durch eine Festplatte ersetzen sollte, was die Akkulaufzeit und die Leistung verringert)?
Ich halte das Risiko, einen Laptop zu verlieren, für höher. Ich bin kein offensichtliches Ziel für Hacker im Internet. Mein Breitbandanschluss zu Hause ist Kabel-Internet und scheint sehr zuverlässig zu sein. Daher möchte ich wissen, wie ich unterwegs am besten (vernünftigsten) sicher auf meine Daten (von meinem Laptop) zugreifen kann.
Ich muss nur von diesem einen Computer aus darauf zugreifen, obwohl ich die Verbindung entweder über 3G/4G meines Telefons oder über WLAN oder die Breitbandverbindung eines Clients usw. herstellen kann. Ich weiß also nicht im Voraus, welche IP-Adresse ich haben werde.
Ich tendiere zu einer Lösung, die auf SSH und SFTP (oder ähnlichem) basiert. SSH/SFTP würde ungefähr alle Funktionen bieten, die ich voraussichtlich brauche. Ich würde gerne SFTP und Dolphin zum Durchsuchen und Herunterladen von Dateien verwenden. Für alles andere werde ich SSH und das Terminal verwenden.
Mein Linux-Dateiserver ist mit OpenSSH eingerichtet. Ich denke, ich habe SSH relativ sicher. Ich verwende auch Denyhosts. Aber ich möchte noch einige Schritte weiter gehen. Ich möchte die Wahrscheinlichkeit, dass jemand auf meinen Server zugreifen kann, so gering wie möglich halten, während ich trotzdem von unterwegs darauf zugreifen kann.
Ich bin kein Systemadministrator, Programmierer oder echter „Superuser“. Ich muss die meiste Zeit mit anderen Dingen verbringen. Ich habe von „Port Knocking“ gehört, habe es aber noch nie verwendet und weiß nicht, wie man es implementiert (bin aber bereit, es zu lernen).
Ich habe bereits zahlreiche Artikel mit Titeln wie diesen gelesen:
- Die 20 besten Sicherheitspraktiken für OpenSSH-Server
- 20 Tipps zur Verbesserung der Sicherheit von Linux-Servern
- Debian Linux – Stoppen Sie Hacking-/Cracking-Angriffe auf SSH-Benutzer mit der DenyHosts-Software
- mehr...
In diesen Artikeln werden Dinge erwähnt wie
- DenyHosts verwenden
- Legen Sie die Option „AllowUsers“ in „/etc/ssh/sshd_config“ fest, um nur bestimmten Benutzern die Verbindung zu erlauben.
- Deaktivieren Sie Root-Anmeldungen über SSH.
- Verwenden Sie die Authentifizierung mit öffentlichem Schlüssel und verbieten Sie die Anmeldung mit Kennwort
- und vieles mehr.
Ich mache all die oben genannten Dinge (und noch mehr). Aber ich habe nicht alles umgesetzt, worüber ich gelesen habe. Das kann ich wahrscheinlich nicht.
Aber vielleicht gibt es in meiner Situation etwas noch Besseres, was ich tun kann, da ich nur von einem einzigen Laptop aus Zugriff benötige. Ich bin nur ein Benutzer. Mein Server muss nicht für die Allgemeinheit zugänglich sein. Angesichts all dieser Fakten hoffe ich, dass ich hier einige Vorschläge bekomme, die ich umsetzen kann und die diese Fakten nutzen, um eine weitaus bessere Sicherheit zu schaffen als die allgemeinen Vorschläge in den obigen Artikeln.
Ein Beispiel ist Portknocking. Das scheint für meine Situation perfekt zu passen. Was gibt es sonst noch in dieser Richtung?
Antwort1
Es gibt keine perfekte Sicherheit. Jede Sicherheitsoption ist ein Kompromiss. Persönlich empfehle ich:
- Verwenden Sie DenyHosts, um Brute-Force-Angriffe zu verhindern, legen Sie jedoch einen sinnvollen Timeout-Wert fest, damit Sie sich nicht für die gesamte Zeit, die Sie unterwegs sind, aussperren. Das kann durchaus passieren, wenn Sie nicht aufpassen.
- Aktivieren Sie die Option „AllowUsers“,
/etc/ssh/sshd_config
um nur bestimmten Benutzern die Verbindung zu gestatten. - Deaktivieren Sie Root-Anmeldungen über SSH.
- Verwenden Sie die Public-Key-Authentifizierung von Ihrem Laptop.
- Verwenden Sie Einmalkennwörter wie OPIE oder OTPW von jedem öffentlichen Terminal aus.
- Verwenden Sie Ihr Root-Passwort niemals von einem öffentlichen Terminal aus, auch nicht in Verbindung mit sudo oder su.
Alternativ halte ich tragbare verschlüsselte Laufwerke mit einem PIN-Pad, wie die Apricorn Aegis Padlock-Laufwerke, sehr für sinnvoll. Sie sind sehr tragbar, relativ sicher gegen die meisten Bedrohungsmodelle und die größten Risiken sind, dass Sie Ihre PIN vergessen oder die Laufwerke unterwegs verlieren – aber in beiden Fällen haben Sie die Originaldateien immer noch sicher zu Hause.
Wenn Sie eine kostenlose Alternative bevorzugen, können Sie encfs, ecryptfs oder ähnliche Programme verwenden, um verschlüsselte Mounts für Ihre vertraulichen Daten zu erstellen. Sie könnten die Daten zusammen mit dem Laptop verlieren, oder jemand könnte Ihren Kernel, Bootloader oder Ihre Hardware manipulieren, um einen Keylogger zu installieren, während Sie ihn nicht sehen, aber das klingt nicht nach Ihrem aktuellen Bedrohungsmodell, und verschlüsselte Mounts sollten Ihren Zwecken gut genügen. Ich halte diese Option nicht für ganz so sicher wie das PIN-Pad, aber sie ist immer noch eine ziemlich solide Wahl.
Im Grunde, es sei denn, Sie haben wirklich das Gefühl, dass Sie dieDienstleistungenvon einem Remote-System bereitgestellt wird, würde ich empfehlen, Ihre Dateien einfach in einem so sicheren Container zu speichern, wie Sie es für erforderlich halten. Sie können dann zu Hause rsync, conduit oder unison verwenden, um Ihre Dateien zu synchronisieren, oder Ihre aktualisierten Dateien einfach wieder auf Ihr Hauptsystem kopieren.
Es gibt keine allgemeingültige Antwort auf Ihre Frage. Ich hoffe, das hilft Ihnen weiter.
Antwort2
Ich schlage Portknocking als Antwort darauf vor, wie man zusätzlich zur standardmäßigen SSH-Härtung, die in diesem Fall bereits durchgeführt wird, die nächste Sicherheitsstufe erreichen kann. Die anderen Antworten, die eine standardmäßige SSH-Härtung vorschlagen, ignorieren die Tatsache, dass diese Schritte bereits unternommen wurden. Bei dieser Frage geht es darum, über die SSH-Härtung hinauszugehen.
Laut Wikipedia
Bedenken Sie, dass selbst die einfachste Sequenz einen enormen Brute-Force-Einsatz erfordern würde, um entdeckt zu werden, wenn ein externer Angreifer die Port-Knock-Sequenz nicht kennt. Eine einfache TCP-Sequenz mit drei Knock-Sequenzen (z. B. Port 1000, 2000, 3000) würde erfordern, dass ein Angreifer ohne vorherige Kenntnis der Sequenz jede Kombination von drei Ports im Bereich 1-65535 testet und dann jeden Port dazwischen scannt, um zu sehen, ob etwas geöffnet wurde. Als zustandsbehaftetes System würde der Port erst geöffnet, nachdem die richtige dreistellige Sequenz in der richtigen Reihenfolge empfangen wurde, ohne dass andere Pakete dazwischen liegen.
Das entspricht im schlimmsten Fall maximal 655363 Paketen, um eine einzige erfolgreiche Öffnung zu erhalten und zu erkennen. Das sind 281.474.976.710.656 oder über 281 Billionen Pakete. Im Durchschnitt wären etwa 9,2 Trillionen Pakete nötig, um einen einzigen, einfachen TCP-Only-Knock mit drei Ports erfolgreich per Brute-Force-Angriff zu öffnen. Dies wird noch unpraktischer, wenn zur Abwehr von Brute-Force-Angriffen eine Begrenzung der Knock-Versuche verwendet wird, längere und komplexere Sequenzen verwendet werden und kryptografische Hashes als Teil des Knocks verwendet werden.
Port Knocking hat einige Einschränkungen (z. B. ist es ein gemeinsames Geheimnis). Aber wie in der Frage angegeben, ist dies eine Lösung füreinsPerson. Daher ist Port-Knocking zusätzlich zur vorhandenen SSH-Absicherung (und Denyhosts und anderen Dingen) ein effektiver und einfacher Schritt, um die Sicherheit auf die nächste Ebene zu bringen.
Der weitverbreitete Einsatz von Port-Knocker-Dienstprogrammen ist unter Sicherheitsexperten umstritten, doch diese Frage ist ein Musterbeispiel dafür, wann Port Knocking äußerst effektiv eingesetzt werden kann.
Natürlich erfordert die Verwendung von Port-Knocking auch die Verwendung von iptables. Um zum nächsten Schritt zu gelangen, der hier die Frage ist, sind diese beiden Schritte erforderlich:
Verwenden Sie iptables
Port-Klopfen verwenden
Dies ist die spezielle Port-Knocking-Implementierung, die mir gefällt:
http://www.portknocking.org/view/implementations
Es gibt Clients für viele gängige Systeme, einschließlich Android.
Verweise:
- Hintergrund zu Port Knocking: http://www.portknocking.org/
- http://en.wikipedia.org/wiki/Port_knocking
Antwort3
Sichern Sie Ihre Dateien.
Verschlüsseln Sie sie, bevor Sie gehen. Richten Sie dann Ihren SSH-Server ein und greifen Sie remote auf Ihren Server zu. Verwenden Sie Schlüssel statt Passwörter für Ihren SSH-Server. Laden Sie Ihre verschlüsselte Datei herunter, trennen Sie die Verbindung und entschlüsseln Sie Ihre Datei. Egal, was Sie verwenden, Sie müssen verstehen, dass alles, was Sie verwenden, irgendwann gehackt werden kann und wird. Sie müssen also das für Sie akzeptable Risiko abschätzen.
Wenn Sie beispielsweise ein Apple-Produkt besitzen, ist höchstwahrscheinlich ein werkseitig installiertes Rootkit vorhanden. Dasselbe gilt für Dell, HP, ASUS, alle. Sie funktionieren nur unter OS X und Windows XP und neuer.verwendenLinux.
Antwort4
Ich verwende Ubuntu Linux sowohl auf meinem Laptop (KDE) als auch auf meinem Heim-/Büroserver. Die Konnektivität ist kein Problem. Bei Bedarf kann ich die Verbindung meines Telefons nutzen. Ich brauche Zugriff auf eine große Anzahl von Dateien (ca. 300 GB). Ich brauche sie nicht alle auf einmal, aber ich weiß nicht im Voraus, welche Dateien ich möglicherweise brauche. Diese Dateien enthalten vertrauliche Kundeninformationen und persönliche Daten wie Kreditkartennummern und müssen daher sicher sein.
Ihnen ist schon klar, dass die Nutzung der 3G/4G-Verbindung Ihres Telefons nicht sicher ist, oder? Die Telefongesellschaft hat (ohne Zweifel) die Möglichkeit, Ihren gesamten Internetverkehr einzusehen. Der Internetverkehr ist zwar sicher, aber theoretisch könnte er einen Man-in-the-Middle-Angriff auf Sie durchführen. Wenn Sie eine 3G/4G-Verbindung verwenden, sollten Sie ein VPN verwenden, bevor Sie Inhalte über eine weitere sichere Verbindung hochladen.
Vor diesem Hintergrund möchte ich all diese Dateien nicht auf Dropbox oder Amazon AWS oder Ähnlichem speichern. Diese Kosten könnte ich ohnehin nicht rechtfertigen (Dropbox veröffentlicht nicht einmal Preise für Pläne über 100 GB und Sicherheit ist ein Problem). Ich bin jedoch bereit, etwas Geld für eine richtige Lösung auszugeben. Ein VPN-Dienst könnte beispielsweise Teil der Lösung sein? Oder andere kommerzielle Dienste? Ich habe von PogoPlug gehört, weiß aber nicht, ob es einen ähnlichen Dienst gibt, der meine Sicherheitsbedenken ausräumen könnte?
Darüber hinaus sollten alle Dateien, die PII und/oder vertrauliche Kundeninformationen enthalten, verschlüsselt werden. Sie tun Ihren Kunden keinen Gefallen, wenn Sie diese Dateien und KEINE Speichermedien, die diese Dateien enthalten, nicht verschlüsseln. ALLE Kopien sollten verschlüsselt sein.
Die Nutzung eines Cloud-Dienstes ist also wirklich eine Lösung, vorausgesetzt, alle Ihre Informationen werden vor dem Hochladen verschlüsselt. Ihre einzige Sorge ist die langfristige Aufbewahrung. Sie sollten Cloud-Speicher verwenden und Ihre eigenen lokalen und Remote-Kopien selbst erstellen, je nachdem, mit wie viel Speicherplatz Sie tatsächlich arbeiten.
Und außerdem: Wenn Sie wirklich 300 GB Daten verarbeiten müssen, reicht eine 3G/4G-Verbindung wirklich nicht aus.
Ich könnte alle meine Dateien auf meinen Laptop kopieren, da dieser über den nötigen Speicherplatz verfügt. Aber dann muss ich zwischen meinem Heimcomputer und meinem Laptop synchronisieren, und ich habe in der Vergangenheit festgestellt, dass ich das nicht sehr gut mache. Und wenn mein Laptop verloren geht oder gestohlen wird, wären meine Daten darauf. Das Laptop-Laufwerk ist eine SSD und Verschlüsselungslösungen für SSD-Laufwerke sind nicht gut.
Jeder, der sagt, dass ein verschlüsseltes SSD-Gerät nicht 100 % sicher ist, sofern dies VOR der Speicherung von Daten geschieht, ist ein kompletter Idiot, und Sie sollten von ihm nie wieder technische Ratschläge annehmen.
Ist das eine vernünftige Schlussfolgerung, oder stellt alles, was mit dem Internet verbunden ist, ein so großes Risiko dar, dass ich die Daten einfach auf den Laptop kopieren sollte (und vielleicht die SSD durch eine Festplatte ersetzen sollte, was die Akkulaufzeit und die Leistung verringert)?
Es klingt, als ob Sie eine Routine entwickeln sollten, mit der Sie alle Ihre Speichergeräte miteinander synchronisieren können. Es gibt Lösungen...
I view the risks of losing a laptop to be higher. I am not an obvious hacking target online. My home broadband is cable Internet, and it seems very reliable. So I want to know the best (reasonable) way to securely access my data (from my laptop) while on the road.
Wenn das Speichergerät Ihres Laptops verschlüsselt ist und Sie die Dateien verschlüsseln, hätte jeder nur einen Laptop mit zufälligen Bytes darauf.
Ich muss nur von diesem einen Computer aus darauf zugreifen, obwohl ich die Verbindung entweder über 3G/4G meines Telefons oder über WLAN oder die Breitbandverbindung eines Clients usw. herstellen kann. Ich weiß also nicht im Voraus, welche IP-Adresse ich haben werde.
Ich würde einen VPN-Dienst eines Drittanbieters verwenden, der es Ihnen ermöglicht, eine bestimmte IP-Adresse auf eine Whitelist zu setzen. Auf diese Weise hätten Sie immer genau dieselbe IP-Adresse. Die Verwendung eines langen, sicheren, zufälligen Passworts, verschlüsselter Daten und verschlüsselter Speichermedien macht Ihre Daten 100 % sicher. Verschlüsselte Daten sind nur zufällige Bytes.
Sofern Sie die Dateien nicht verschlüsselt auf dem Server speichern, ist alles, was Sie tun, weniger sicher als eine Remote-Cloud-Lösung. Amazon und Dropbox geben Millionen aus, um ihre Server zu sichern. Als einzelner Benutzer werden Sie wahrscheinlich nicht jedes veröffentlichte Kernel-Update installieren.
Außerdem klingt es so, als sollten Sie sich auf Ihre Kunden und Ihre eigentliche Arbeit konzentrieren und sich dann um die Sicherheit eines Linux-Heimservers kümmern, der nicht so sicher ist wie Amazon und Dropbox.