Wie richte ich einen Ubuntu-Server so ein, dass er (sicher) im Internet verfügbar ist?

7

(Entschuldigen Sie im Voraus, ich bin ein Pro-Windows, das neu auf Ubuntu umgestellt wurde. Wenn meine Fragen offensichtlich sind, sagen Sie es mir bitte.)

Ich möchte einen Ubuntu-Server bauen, der ständig mit dem Internet verbunden ist. Ich besitze nur IP-Adresse. Der Hauptzweck des Servers besteht darin, als Quellcode-Controller zu dienen (wahrscheinlich Git oder SVN ... haben noch keine Auswahl getroffen), aber auch gelegentlich andere Verwendungszwecke (Dateifreigabe mit Familie oder Kunden, persönliches Backup, Host von Webanwendungen) Ich kann schreiben usw. Ich möchte auch jederzeit auf den Computer zugreifen können, um ihn zu verwalten, selbst hinter dem Proxy eines Kunden, der nur http oder https zulässt

Was sind die Standardschritte, um dies zu erreichen?

  • Mein erstes ist jedoch, den openssh-Server einzurichten. Ist es möglich (und "ziemlich" sicher), es über den Standardport (dh mit der Firewall / dem Proxy des Kunden kompatibel) für das Internet zu öffnen?
  • Ist es möglich, einen VPN-Server einzurichten, der über ein Webseiten-Plugin (ebenfalls vom Server gehostet) ausgeführt wird?
  • Kann ich Apache und andere Serversoftware so einrichten, dass sie auf denselben Standardports koexistieren, da ich nur eine IP-Adresse habe (IP V4 und IPV 6 tatsächlich, aber ich glaube nicht, dass die IP V6-Adresse jetzt über das Kundennetzwerk zugänglich ist)?

Danke im Voraus ;)

Steve B.
quelle

Antworten:

10

Bei ordnungsgemäßer Einrichtung ist OpenSSH auch am Standardport sicher. Wenn Sie es vom Standardport entfernen, werden Ihre Protokolldateien nicht durch nicht autorisierte Anmeldeversuche gefüllt. Weitere Details am Ende.

Es ist sehr gefährlich, auf Ihren Server zuzugreifen, wenn Sie nicht die Kontrolle über den Computer haben, der eine Verbindung zu Ihrem Server herstellen soll (was meiner Meinung nach der Grund ist, warum Sie ein Browser-Plugin verwenden müssen).

OpenVPN kann mit einem HTTP / HTTPS - Server zu teilen TCP - Ports eingerichtet werden, von seiner Hand-Seite :

--port-share host port
Wenn Sie im TCP- Servermodus ausgeführt werden, geben Sie den OpenVPN-Port für eine andere Anwendung frei, z. B. einen HTTPS-Server. Wenn OpenVPN eine Verbindung zu seinem Port erkennt, der ein Nicht-OpenVPN-Protokoll verwendet, wird die Verbindung zum Server am Host: Port als Proxy ausgeführt. Derzeit nur für die Verwendung mit HTTP / HTTPS konzipiert, obwohl theoretisch eine Erweiterung auf andere Protokolle wie ssh möglich wäre.

Es wird aufgrund des Overheads (TCP 3-Wege-Handshake) nicht empfohlen, OpenVPN mit einer TCP-Verbindung zu verwenden. Wenn Sie keine Wahl haben, können Sie es versuchen.

Mit OpenVPN können Sie Portbeschränkungen vermeiden und die Verbindung sichern. Weitere Informationen finden Sie unter Wie richte ich OpenVPN ein, damit ich das Internet von einem ungesicherten Hotspot aus sicher nutzen kann? Eine Anleitung zum Einrichten von OpenVPN.

Sie können keine Ports freigeben, es sei denn, eine Anwendung unterstützt dies (wie OpenVPN), daher muss ich Sie darüber enttäuschen.

SSH-Server

Die kennwortbasierte Authentifizierung ohne Einschränkung der Verbindungsversuche ist problematisch. Aus diesem Grund wird bevorzugt die schlüsselbasierte Authentifizierung verwendet und die kennwortbasierte Authentifizierung insgesamt deaktiviert.

  1. Installieren Sie openssh-serverInstallieren Sie openssh-server durch Ausführensudo apt-get install openssh-server
  2. Deaktivieren Sie die kennwortbasierte Authentifizierung, indem Sie die Konfigurationsdatei bearbeiten /etc/ssh/sshd_config. Führen Sie den Vorgang aus, um die Bearbeitung zu starten sudo nano /etc/ssh/sshd_config. Suchen Sie die Zeile #PasswordAuthentication yesund ändern Sie sie in PasswordAuthentication no. Standardmäßig überwacht SSH Port 22. Wenn Sie ihn ändern möchten, verwenden Sie aus Sicherheitsgründen einen Port unter 1024. (Ändern Sie die Zeile mit Port 22)
  3. Für zusätzliche Sicherheit können Sie eine Liste der Benutzer konfigurieren, die sich anmelden dürfen. Fügen Sie eine Zeile hinzu mit:

    AllowUsers someuser
    

    Ersetzen Sie someuserdurch den Benutzernamen des Kontos, das sich anmelden darf. Mehrere Benutzernamen sollten durch ein Leerzeichen getrennt werden.

  4. Generieren Sie mit dem Befehl einen Schlüssel auf Ihrem Computerssh-keygen -t rsa . Geben Sie die gewünschten Werte ein und wählen Sie eine sichere Passphrase.
  5. Kopieren Sie den Inhalt der ~/.ssh/id_rsa.pubDatei in eine /home/someuser/.ssh/authorized_keysDatei auf Ihrem Server. someuserist der Benutzer, der sich anmelden darf. (Es ist eine einzelne Zeile, die kopiert werden sollte. Kopieren Sie niemals den Inhalt einer Datei, die mit beginnt-----BEGIN RSA PRIVATE KEY
  6. Laden Sie die Konfiguration Ihres SSH-Servers neu:

    sudo reload ssh
    
  7. Wenn Sie über SSH remote auf Ihren Server zugreifen, stellen Sie sicher, dass Sie eine neue SSH-Verbindung herstellen können, um eine Sperrung zu vermeiden.
Lekensteyn
quelle
Danke für diese ausführliche Antwort. 1. Bemerkung: Ich möchte eine Verbindung zum Server herstellen können, entweder von meinen eigenen Computern (persönlich oder im Büro) oder von einem Kundennetzwerk, dem ich vertraue (mit Vertrauen meine ich sicherer als ein offener WLAN-Hotspot). 2. Bemerkung: Der OpenVPN-Netzwerk-Overhead spielt keine Rolle, da es sich eher um ein Rettungstor als um ein tägliches Tor handelt. 3. Frage: Der Prozess der Erstellung des Schlüssels muss zunächst den Client-Computer kennen? Was ist, wenn ich eine Verbindung von einem Computer herstellen muss, der vorher nicht bekannt war? 4. letzte Frage: Die meisten meiner Client-Computer basieren auf Windows. Der SSH-Keygen hat eine Alternative gewonnen, nicht wahr?
Steve B
1: Sobald OpenVPN eingerichtet ist, können Sie sogar nicht vertrauenswürdige Netzwerke verwenden. 3. Nein, Sie können es auf jedem gewünschten Computer erstellen. Wenn Sie es jedoch auf einem gefährdeten Server ausführen, kann ein Eindringling diesen Schlüssel für die Verbindung 4 verwenden: Ihre Clients können PuTTY verwenden . Der Schlüssel von OpenSSH muss mit PuTTYgen konvertiert werden, bevor er mit PuTTY verwendet werden kann.
Lekensteyn
ok danke :) Ich muss darauf eingehen. Gibt es schließlich Tools, mit denen ein Computer auf bewährte Methoden für Sicherheit und Konfiguration überprüft werden kann? In der MS-Welt gibt es das Microsoft Baseline Analyzer-Tool. Gibt es ein ähnliches Tool für die Unbuntu-Welt (Linux im Allgemeinen)?
Steve B
Sein Name ist "UBUNTU"! Suchen / fragen Sie für eine Sicherheitsüberprüfung auf security.stackexchange.com . Beste "Konfiguration" ist relativ und Sie sollten jemanden dafür einstellen oder auf serverfault.com
Lekensteyn
Ich empfehle Ihnen, fail2ban zu installieren . Es ist ein kleiner Daemon, der IP abfängt und blockiert und versucht, mit gefälschten Anmeldeinformationen eine Verbindung zu einigen auf Ihrem Computer gehosteten Diensten herzustellen. Ich benutze es für ssh.
Neuromancer