AWS EC2: Benutzer und Netzwerk in Amazon Linux konfigurieren


    Tags: , ,

    Amazon LinuxNach dem Starten eines neuen virtuellen Servers ("Instanz") unter AWS EC2 muss man diesen konfi­gurieren. Dazu kann man sich, sofern es die Routing-Konfiguration im VPC zulässt, via SSH mit der Kon­sole verbinden und Updates oder neue Pakete instal­lieren, Benutzer ein­richten oder die Netzwerk­konfiguration an­passen.

    In Devops-Szenarien, wie sie im Cloud-Computing üblich sind, wird man alle im Folgenden beschrie­benen Schritte entweder direkt beim Start der Instanz mittels cloudinit oder über ein Konfigurations-Management wie Puppet oder Chef veran­lassen.

    Zudem wird man in der Praxis EC2-Ressourcen meist automatisiert (Script-basiert) oder API-gesteuert über das SDK einer bestimmten Programmier­sprache erzeugen und dabei konfigurieren. Für das Verständnis der wichtigsten Konfigurations­maß­nahmen ist das manu­elle Vor­gehen aber hilfreich, wie ich es im hier am Beispiel von Amazon Linux erläutere.

    Software-Installation

    Die Basisversion von Amazon Linux (oder Amazon Linux 2) bringt bereits zahlreiche Software-Pakete und Dienst­programme mit. Darüber hinaus stehen viele weitere Anwen­dungen in ver­schiedenen Repositories zur Verfügung.

    Das bei Linux-Distributionen der Red-Hat-Familie, zu der auch Amazon Linux zählt, sehr populäre Epl-Repo ist bereits konfiguriert und muss nur aktiviert werden. Man kann aber auch völlig neue Repositorien einbinden oder Pakete aus Quellcode selbst erstellen.

    Benutzerkonten einrichten

    Bei Instanzen auf Basis von Amazon Linux existiert per Default nur ein Benutzer­konto mit dem Namen ec2-user. Es erlaubt eine Anmeldung ausschließlich via RSA-Key-Pair und verfügt über Superuser-Privilegien. Selbst­verständlich kann man bei Bedarf weitere Nutzer­konten anlegen, zum Beispiel mit

    sudo adduser <NeuerNutzer>

    Der Befehl erstellt außerdem eine Gruppe und ein Stamm­verzeichnis für das neue Benutzerkonto. Bei dieser Variante wird nicht nach einem Passwort für den neuen User gefragt:

    sudo adduser <NeuerNutzer> --disabled-password

    Mit

    sudo su - <NeuerNutzer>

    wechselt man zum neuen Nutzer, wodurch sich der Prompt zu <neunutzer@Private-IPv4-Adresse> ändert.

    Neuen Benutzer in Amazon Linux anlegen

    Dann legt man im Stamm­verzeichnis des neuen Nutzers ein verstecktes Verzeichnis .ssh an und setzt die Datei­berech­tigungen mit chmod auf 700, damit nur der Eigentümer das Verzeichnis öffnen, lesen oder darin schreiben kann.

    mkdir .ssh
    chmod 700 .ssh

    Ist das erledigt, dann erstellt man in dem Verzeichnis eine neue Datei authorized_keys mit der Dateiberechtigung 600 (nur der Eigentümer kann lesen und schreiben), denn ohne sie kann sich der neue Benutzer nicht anmelden.

    Öffentlichen Schlüssel in die Datei authorized_keys eintragen

    Dann öffnet man authorized_keys mit einem Texteditor und trägt dort den öffentlichen Schlüssel des Schlüsselpaars, das verwendet werden soll, ein und speichert die Änderungen.

    Netzwerk und Domäne

    AWS weist jeder Instanz beim Start einen System-Hostname zu, der die private IPv4-Adresse in etwas anderer Schreibweise (Bindestriche) darstellt. Im Gegensatz dazu setzt sich der private DNS-Hostname aus der privaten IPv4-Adresse in Binde­strich­schreib­weise plus einem Domain-Teil zusammen.

    Letzterer besteht aus dem Namen der Region plus einer Angabe für den Service wie compute bei EC2 und dem Kürzel internal, zum Beispiel ip-10-50-3-189.eu-central-1.compute.internal. Der System-Hostname wird auch in Kombination mit dem Nutzer­namen als Prompt für die Shell verwendet.

    Vorgegebene Hostnames für EC-Instanzen

    Wie schon im Artikel zur Virtual Private Cloud (VPC) erläutert, ändern sich nach jedem Stopp oder Neustart einer Instanz die öffentliche IPv4-Adresse (außer bei Verwendung einer EIP Elastic), der öffentliche DNS-Name, der Hostname und die Shell-Anzeige.

    Bei einer VPC-gestarteten Instanz (im Gegensatz zu EC2-Classic) bleiben allerdings die private IPv4-Adresse, der private DNS-Hostname und System-Hostname auch nach dem Neustart erhalten. Gelegent­lich kann es sinnvoll sein, den System-Hostname zu ändern, etwa wenn der Nutzer für die IP-Adresse seiner Instanz einen öffentlichen DNS-Namen registriert hat.

    Hier würde man den System-Hostname so einstellen, dass sich die Instance als Teil der angegebenen Domäne identifiziert, wodurch sich dann auch die Shell-Anzeige so ändert, dass der erste Teil dieses Namens anstelle des von AWS zur Verfügung gestellten Hostnamens angezeigt wird.

    Wenn man also einen öffentlichen DNS-Namen registriert hat, kann man bei Amazon Linux 2 (das für den Systemstart sytemd verwendet) das Kommando hostnamectl zum Festlegen des Hostnamens verwenden, und zwar durch Eingabe eines vollqualifizierten Domänen­namens:

    sudo hostnamectl set-hostname <meinserver.meinedomaine.com>

    Hostname in der Datei /etc/sysconfig/network anpassen

    Bei Amazon Linux AMI muss man wie bei allen älteren Red-Hat-Distributionen (RHEL 6, CentOS 6 usw.) in der Konfigurations­datei /etc/sysconfig/network den Eintrag HOSTNAME entsprechend anpassen und die Instanz dann neu starten.

    Keine Kommentare