Im zweiten Teil des Tutorials erklären wir die Einrichtung des SSH-Jumphosts und führen Sie durch die benötigten Schritte.

Einrichtung des SSH-Jumphosts

Der öffentliche Zugriff des Jumphosts soll auf SSH beschränkt werden. OpenStack bietet mit Sicherheitsgruppen die Möglichkeit eigene Regeln anzulegen und diese in Gruppen zusammen zu fassen.

Sicherheitsgruppe anlegen

Als erstes legen wir eine neue Sicherheitsgruppe an und begrenzen den eingehenden Zugriff auf Port 22 für SSH. Klicken Sie im Dashboard auf den Menüpunkt Access & Security um die Übersicht der Sicherheitsgruppen anzuzeigen.

Übersicht der eingerichteten Sicherheitsgruppen OpenStack

Übersicht der eingerichteten Sicherheitsgruppen OpenStack

Durch Klick auf den Button Create Security Group um die Maske zur Eingabe einer neuen Sicherheitsgruppe zu öffnen. Vergeben Sie einen Namen z.B. “remote_mgmt” für die Sicherheitsgruppe, geben Sie eine kurze Beschreibung z.B. “Fernwartungszugriff” an und klicken Sie anschließend auf den Button Create Security Group um die neue Sicherheitsgruppe anzulegen. Die Übersicht der Sicherheitsgruppen zeigt nun die neue Sicherheitsgruppe an. Über den Button Edit Rules in der Zeile der neu angelegten Sicherheitsgruppe können Sie nun eine neue Regel für die Sicherheitsgruppe vergeben.

Zugriffsregeln festlegen

Klicken Sie auf Edit Rules um die Übersicht der vorhandenen Regeln für diese Gruppe anzuzeigen. Es sind bereits zwei Regeln eingetragen welche ausgehende Verbindungen über IPV4 sowie IPV6 erlauben. Legen Sie nun eine neue Regel für eingehende Verbindungen an in dem Sie durch Klick auf add Rule den Dialog zum Anlegen von Regeln öffnen. Im nun geöffneten Dialog finden Sie verschiedene Eingabefelder.

Dialog zum Anlegen von Sicherheitsregeln in OpenStack

Dialog zum Anlegen von Sicherheitsregeln in OpenStack

Unter Rule kann die Art der Regel festgelegt werden. Für bestimmte Dienste gibt es bereits vorgefertigte Regeln. In diesem Fall möchten wir den SSH-Zugriff ermöglichen und wählen daher Custom TCP RuleDirection legt die Richtung der Pakete fest, wir wählen Ingress für eingehende Pakete. Da für SSH nur ein Port benötigt wird wählen wir unter Open Port die Option Port. Geben Sie bei Port den Port 22 für SSH an. Bei Remote wählen wir CIDR aus, um eine IP Netzbereich angeben zu können.  Falls Sie über eine Feste IP-Adresse verfügen können Sie diese unter CIDR angeben. Ansonsten belassen Sie das Feld auf der Voreinstellung, für eine globale Freigabe. Klicken Sie anschließend auf Add um die neue Regel zu speichern.

Instanz in OpenStack anlegen

Die benötigte Sicherheitsgruppe ist nun vollständig eingerichtet. Um diese nun zu verwenden richten wir im nächsten Schritt eine Instanz für den Jumphost ein. Klicken Sie dazu auf den Menüpunkt Instances um die Übersicht der Instanzen anzuzeigen. Klicken Sie nun auf Launch Instance um eine neue Instanz über den Instanzdialog anzulegen.

Anlegen einer Instanz in OpenStack

Anlegen einer Instanz in OpenStack

Der Dialog ist in mehrere Reiter aufgeteilt. Im ersten Reiter Details werden die wichtigsten Parameter festgelegt. Die Availability Zone ist bereits vorausgewählt. Im Feld Instance Name kann ein Name z.B. “Gateway” für die Instanz festgelegt werden. Über Flavor kann festgelegt werden, welche Ressourcen der Instanz zur Verfügung stehen. Für den Jumphost kann ein Flavor mit wenig Ressourcen verwendet werden da dieser nur selten genutzt wird und lediglich SSH und API bereitstellt. Unter Instance Count kann festgelegt werden, wie viele gleichartige Instanzen gestartet werden. Da wir nur einen Jumphost benötigen bleibt der Wert bei 1. Wählen Sie bei Instance Boot Source die Option Boot from Image aus. Wir bieten bereits ein vorgefertigtes Image für einen Jumphost an, welches Sie unter dem Namen “teutostack-gateway” auswählen können.

Im Reiter Access & Security kann ein SSH-Schlüsselpaar (keypair) hinterlegt werden, sowie ein root-Passwort (Admin Pass) gesetzt werden. Wenn noch kein SSH-Schlüsselpaar hinterlegt ist, kann über das Plus-Zeichen ein Schlüssel hinzugefügt werden.

OpenStack SSH-Schlüssel importieren

OpenStack SSH-Schlüssel importieren

Im Feld Keypair Name kann ein beliebiger Name für das SSH-Schlüsselpaar festgelegt werden. Im Feld Public Key kann der öffentliche SSH Schlüssel hinzugefügt werden.

Außerdem muss hier die eben angelegte Sicherheitsgruppe unter Security Groups zusätzlich aktiviert werden. Mit einem Klick auf Import Keypair wird das SSH-Schlüsselpaar gespeichert und zum vorherigen Dialog zurück gewechselt.

Im Reiter Networking können Sie festlegen, welches Netzwerk der Instanz zugeordnet wird. Ziehen Sie dazu das entsprechende Netzwerk unter Available networks in das Feld Selected Networks. Dem Jumphost können ggf. auch mehrere Netzwerke zugeordnet werden.

Netzwerk einer Instanz in OpenStack zuweisen

Netzwerk einer Instanz in OpenStack zuweisen

Nachdem Sie die Netzwerkkonfiguration vorgenommen haben, können Sie über Launch die Instanz starten. Im Tab Post-Creation müssen keine weiteren Einstellungen vorgenommen werden.

Offizielle IP Adresse zuweisen

Sie sehen nun die neu angelegte Instanz in der Übersicht. Klicken Sie in der Zeile der Instanz auf More > Associate Floating IP um eine offizielle IP Adresse hinzuzufügen. Wählen Sie dazu im Feld IP Address eine Adresse aus und notieren Sie sich die IP-Adresse für die spätere Verwendung. Klicken Sie auf Associate um die IP zuzuweisen.

Sie können die soeben zugewiesene IP-Adresse sofort nutzen um sich per SSH auf den Jumphost zu verbinden. In der Übersicht wird die neue IP-Adresse jedoch erst nach einiger Zeit angezeigt.

Um vom Jumphost auf die OpenStack API zugreifen zu können müssen noch die Zugangsdaten im Environment hinterlegt sein. Eine entsprechende Konfiguration können Sie im Dashboard herunterladen. Gehen Sie im Menü unter Access & Security und wählen Sie auf der Seite den Reiter API Access. Dort können Sie über den Button Download OpenStack RC File die API Konfiguration herunterladen.

Kopieren Sie nun per scp in Ihrer lokaler Kommandozeile die Datei auf den SSH-Jumphost:

user@desktop:$ scp IHRNAME-openrc.sh ubuntu@JUMPHOST-IP:/home/ubuntu/

Anschließend loggen Sie sich auf dem Jumphost ein und binden die Datei mit Hilfe von source ein, dabei werden Sie nach Ihrem Passwort gefragt.

user@desktop:$ ssh -A ubuntu@JUMPHOST-IP
ubuntu@jumphost:$ cd /home/ubuntu/
ubuntu@jumphost:$ source IHRNAME-openrc.sh

Optionale DNS Konfiguration

Auf dem vorbereiteten Image ist bereits dnsmasq vorinstalliert. Für die DNS Konfiguration, müssen auf dem Jumphost in der Datei /etc/hosts lediglich die Hosts eingetragen werden. Auf den anderen Instanzen wird der Jumphost dann als DNS Server angegeben.

192.168.0.6      web1
192.168.0.7      web2
192.168.0.8      mysql

Durch einen Neustart des dsnmasq-Service werden die Änderungen vom DNS Server übernommen.

$ service dnsmasq restart

Damit der Jumphost von den Instanzen als DNS-Server verwendet wird, sind auf den anderen Instanzen zwei Änderungen notwendig.

In der dhclient.conf muss die Konfiguration entfernt werden, dass der DNS Server per DHCP bezogen wird. Dazu dient der folgende Befehl.

$ sed -i 's/domain-name-servers, //' /etc/dhcp/dhclient.conf

In der Datei “/etc/network/interfaces” wird die Adresse vom Jumphost als DNS Server angegeben.

auto eth0
iface eth0 inet dhcp
        dns-nameservers 192.168.0.2

Damit die Änderung aktiv wird, starten wir einmal das Netzwerk-Interface neu

$ ifdown eth0; ifup eth0

Der Jumphost ist nun vollständig eingerichtet und kann zur Steuerung Ihrer Cloud verwendet werden.

zurück zur Übersichtweiter mit QuickStart Tutorial Teil 3