One place for hosting & domains

      Installieren eines Linux-, Apache-, MariaDB-, PHP- (LAMP-) Stacks unter CentOS 8


      Einführung

      Ein „LAMP“-Stack ist eine aus Open-Source-Software bestehende Gruppe, die normalerweise zusammenhängend installiert wird, damit ein Server dynamische Websites und in PHP geschriebene Web-Apps hosten kann. Dieser Begriff ist ein Akronym, das für das Linux-Betriebssystem mit dem Webserver Apache steht. Die Backend-Daten werden in einer MariaDB-Datenbank gespeichert und die dynamische Verarbeitung wird mit PHP ausgeführt.

      Die Datenbankschicht in einem LAMP-Stack ist in der Regel ein MySQL-Datenbankserver, aber vor der Veröffentlichung von CentOS 8 war MySQL nicht über die standardmäßigen CentOS-Repositorys verfügbar. Aus diesem Grund wurde MariaDB, eine Abspaltung von MySQL, zu einer weithin akzeptierten Alternative zu MySQL als Standard-Datenbanksystem für LAMP-Stacks auf CentOS-Rechnern. MariaDB dient als vollwertiger Ersatz für den originalen MySQL-Server, was in der Praxis bedeutet, dass Sie zu MariaDB wechseln können, ohne Änderungen an der Konfiguration oder den Codes Ihrer Anwendung vorzunehmen.

      In diesem Leitfaden installieren Sie einen LAMP-Stack auf einem CentOS 8-Server unter Verwendung von MariaDB als Datenbankverwaltungssystem.

      Voraussetzungen

      Um diesem Leitfaden zu folgen, benötigen Sie Zugriff auf einen CentOS 8 Server als non-root user mit Sudo-Berechtigungen, und eine auf Ihrem Server installierte aktive Firewall. Um dies einzurichten, können Sie unserem Leitfaden zur Ersteinrichtung des Servers für CentOS 8 folgen.

      Schritt 1 – Installieren des Apache-Webservers

      Um Websites für unsere Websitebesucher anzuzeigen, setzen wir Apache ein, einen populären Open-Source-Webserver, der für die Bedienung von PHP-Seiten konfiguriert werden kann. Sie verwenden den dnf Paketmamager, den neuen Standard-Paketmanager auf CentOS 8, um diese Software zu installieren.

      Installieren Sie das Paket httpd mit:

      Geben Sie bei der entsprechenden Aufforderung y ein, um zu bestätigen, dass Sie Apache installieren möchten.

      Wenn die Installation abgeschlossen ist, führen Sie den folgenden Befehl aus, um den Server zu aktivieren und zu starten:

      • sudo systemctl start httpd

      Wenn Sie die Firewall firewalld gemäß unserem Leitfaden zur Ersteinrichtung des Servers aktiviert haben, müssen Sie Verbindungen zu Apache zulassen. Der folgende Befehl ermöglicht dauerhaft HTTP-Verbindungen, die auf Port 80 standardmäßig ausgeführt werden:

      • sudo firewall-cmd --permanent --add-service=http

      Um zu verifizieren, dass die Änderung angewendet wurde, können Sie Folgendes ausführen:

      • sudo firewall-cmd --permanent --list-all

      Die Ausgabe sieht dann so aus:

      Output

      public target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client http ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

      Laden Sie die Firewall-Konfiguration neu, damit die Änderungen wirksam werden:

      • sudo firewall-cmd --reload

      Nachdem die neue Firewall hinzugefügt wurde, können Sie testen, ob der Server läuft, indem Sie auf die öffentliche IP-Adresse des Servers oder den Domänennamen von Ihrem Webbrowser aus zugreifen.

      Anmerkung: Falls Sie DigitalOcean als DNS-Hosting-Anbieter verwenden, konsultieren Sie unsere Produktdokumente für detaillierte Anweisungen, wie Sie einen neuen Domänennamen einrichten und ihn auf Ihren Server verweisen.

      Wenn kein Domänenname auf den Server verweist und Sie die öffentliche IP-Adresse Ihres Servers nicht kennen, können Sie diese mit dem folgenden Befehl finden:

      • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's//.*$//'

      Hierdurch erhalten Sie einige IP-Adressen. Sie können diese abwechselnd in Ihrem Webbrowser ausprobieren.

      Als Alternative können Sie prüfen, welche IP-Adresse von anderen Stellen im Internet aus erreichbar ist:

      Geben Sie die Adresse ein, die Sie in Ihrem Webbrowser erhalten, und Sie werden zur Standard-Startseite von Apache weitergeleitet:

      Standard Apache-Seite CentOS 8

      Wenn Sie diese Seite sehen, ist Ihr Webserver korrekt installiert.

      Schritt 2 — Installieren von MariaDB

      Nachdem Sie nun einen funktionierenden Webserver eingerichtet haben, müssen Sie ein Datenbanksystem installieren, um Daten für Ihre Website speichern und verwalten zu können. Sie installieren nun MariaDB, eine weiterentwickelte Kopie des originalen MySQL Servers von Oracle.

      Um diese Software zu installieren, führen Sie Folgendes aus:

      • sudo dnf install mariadb-server

      Wenn die Installation abgeschlossen ist, aktivieren und starten Sie den MariaDB-Server mit:

      • sudo systemctl start mariadb

      Um die Sicherheit Ihres Datenbankservers zu verbessern, wird empfohlen, ein Sicherheitsskript auszuführen, das in MariaDB vorinstalliert ist. Dieses Skript entfernt einige unsichere Standardeinstellungen und sperrt den Zugriff auf Ihr Datenbanksystem. Starten Sie das interaktive Skript, indem Sie Folgendes ausführen:

      • sudo mysql_secure_installation

      Dieses Skript führt Sie durch eine Reihe von Aufforderungen, mit denen Sie verschiedene Änderungen an Ihrem MariaDB-Setup vornehmen können. Bei der ersten Eingabeaufforderung werden Sie gebeten, das aktuelle Datenbank-root-Passwort einzugeben. Verwechseln Sie dies nicht mit dem System-root user. Der Datenbank-root user ist ein administrativer Benutzer mit vollen Berechtigungen über das Datenbank-System. Weil Sie MariaDB gerade erst installiert und noch keine Konfigurationsänderungen vorgenommen haben, wird dieses Passwort leer sein, also drücken Sie bei der Eingabeaufforderung einfach ENTER.

      Bei der nächsten Eingabeaufforderung werden Sie gefragt, ob Sie ein Datenbank-root-Passwort einrichten möchten. Und weil MariaDB eine spezielle Authentifizierungsmethode für den root user verwendet, die typischerweise sicherer ist als ein Passwort, müssen Sie das jetzt nicht einrichten. Geben Sie N ein und drücken Sie dann ENTER.

      Dannach können Sie Y und dann ENTER drücken, um die Standardeinstellungen für alle nachfolgenden Fragen zu akzeptieren. Damit werden anonyme Benutzer und die Testdatenbank entfernt, ferngesteuerte root Logins deaktiviert und die neuen Regeln geladen, sodass der Server die Änderungen, die Sie vorgenommen haben, unverzüglich anwendet.

      Wenn Sie fertig sind, melden Sie sich bei MariaDB an, indem Sie Folgendes eingeben:

      Damit wird eine Verbindung zum MariaDB-Server als administrativer Datenbankbenutzer root hergestellt, was durch die Verwendung von sudo bei Ausführung dieses Befehls abgeleitet wird. Die Ausgabe sollte wie folgt aussehen:

      Output

      Welcome to the MariaDB monitor. Commands end with ; or g. Your MariaDB connection id is 9 Server version: 10.3.17-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. MariaDB [(none)]>

      Beachten Sie, dass Sie kein Passwort bereitstellen mussten, um sich als root Benutzer zu verbinden. Das funktioniert, weil die standardmäßige Authentifizierungsmethode für den administrativen MariaDB-Benutzer unix_socket ist und nicht password. Auch wenn dies zunächst wie ein Sicherheitsproblem aussieht, macht es den Datenbankserver sicherer, da sich nur die Systembenutzer mit sudo-Privilegien über die Konsole oder über eine Anwendung, die mit den gleichen Privilegien läuft, als root MariaDB user anmelden dürfen. Praktisch bedeutet dies, dass Sie den administrativer Datenbank root Benutzer nicht verwenden können, um sich von Ihrer PHP-Anwendung aus zu verbinden.

      Um die Sicherheit zu erhöhen, richten Sie am besten für jede Datenbank zugeordnete Benutzerkonten mit weniger expansiven Berechtigungen ein, insbesondere dann, wenn Sie mehrere Datenbanken auf Ihrem Server hosten möchten. Um eine solche Einrichtung zu zeigen, erstellen Sie eine Datenbank namens example_database und einen Benutzer namens example_user. Sie können diese Namen jedoch durch andere Werte ersetzen.

      Um eine neue Datenbank zu erstellen, führen Sie den folgenden Befehl von Ihrer MariaDB-Konsole aus:

      • CREATE DATABASE example_database;

      Jetzt können Sie einen neuen Benutzer erstellen und ihm volle Berechtigungen zu der benutzerdefinierten Datenbank gewähren, die Sie gerade erstellt haben: Der folgende Befehl definiert das Passwort dieses Benutzers als password, aber Sie sollten diesen Wert durch ein sicheres Passwort Ihrer Wahl ersetzen:

      • GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

      Damit werden dem example_user volle Berechtigungen über die example_database gegeben, während dieser Benutzer gleichzeitig daran gehindert wird, andere Datenbanken auf Ihrem Server zu erstellen oder zu ändern.

      Bestätigen Sie die Berechtigungen, um sicherzustellen, dass sie in der aktuellen Sitzung gespeichert und verfügbar sind:

      Beenden Sie anschließend die MariaDB Shell:

      Sie können testen, ob der neue Benutzer die richtigen Berechtigungen hat, indem Sie sich erneut in die MariaDB-Konsole einloggen, diesmal mit den benutzerdefinierten Anmeldedaten:

      Beachten Sie das Flag -p in diesem Befehl, das Sie nach dem Passwort fragt, welches Sie bei der Erstellung des Benutzers example_user gewählt haben. Nachdem Sie sich in die MariaDB-Konsole eingeloggt haben, bestätigen Sie, dass Sie Zugriff auf die Datenbank example_database haben:

      Damit erhalten Sie die folgende Ausgabe:

      Output

      +--------------------+ | Database | +--------------------+ | example_database | | information_schema | +--------------------+ 2 rows in set (0.000 sec)

      Um die MariaDB Shell zu beenden, geben Sie Folgendes ein:

      Zu diesem Zeitpunkt ist Ihr Datenbanksystem eingerichtet und Sie können zur Installation von PHP, der letzten Komponente des LAMP-Stacks, übergehen.

      Schritt 3 — Installieren von PHP

      Sie haben Apache zur Bereitstellung Ihrer Inhalte und MariaDB zur Speicherung und Verwaltung Ihrer Daten installiert. PHP ist die Komponente unserer Einrichtung, die Code verarbeitet, um dynamische Inhalte für den Endbenutzer anzuzeigen. Zusätzlich zum php-Paket benötigen Sie php-mysqlnd, ein PHP-Modul, das PHP die Kommunikation mit MySQL-basierten Datenbanken ermöglicht. Core-PHP-Pakete werden automatisch als Abhängigkeiten installiert.

      Um die Pakete php und php-mysqlnd mit dem dnf-Paketmanager zu installieren, führen Sie Folgendes aus:

      sudo dnf install php php-mysqlnd
      

      Nach Abschluss der Installation müssen Sie den Apache-Webserver neu starten, um das PHP-Modul zu aktivieren:

      sudo systemctl restart httpd
      

      Ihr Webserver ist nun voll eingerichtet. Im nächsten Schritt erstellen Sie ein PHP-Testskript, um sicherzustellen, dass alles wie erwartet funktioniert.

      Schritt 4 – Testen von PHP mit Apache

      Die standardmäßige Apache-Installation unter CentOS 8 erzeugt ein Dokument-Stammverzeichnis, das sich unter /var/www/html befindet. Damit PHP auf Ihrem Webserver korrekt funktioniert, müssen Sie keine Änderungen an den Standardeinstellungen von Apache vornehmen.

      Die einzige Anpassung, die wir vornehmen werden, ist die Änderung der standardmäßigen Berechtigungseinstellungen in Ihrem Dokument-Stammverzeichnis von Apache. Auf diese Weise können Sie Dateien in diesem Verzeichnis mit Ihrem regulären Systembenutzer erstellen und ändern, ohne dass Sie jedem Befehl sudo voranstellen müssen.

      Der folgende Befehl ändert die Eigentümerschaft des standardmäßigen Stammverzeichnisses des Apache-Dokuments auf einen Benutzer und eine Gruppe namens sammy. Achten Sie also darauf, den hervorgehobenen Benutzernamen und die Gruppe in diesem Befehl zu ersetzen, um den Benutzernamen und die Gruppe Ihres Systems widerzuspiegeln.

      • sudo chown -R sammy.sammy /var/www/html/

      Sie erstellen nun eine PHP-Testseite, um sicherzustellen, dass der Webserver wie erwartet funktioniert.

      Der mit CentOS 8 bereitgestellte Standard-Texteditor ist vi. vi ist ein extrem leistungsfähiger Texteditor. Für Benutzer mit wenig Erfahrung kann er etwas stumpfsinnig sein. Eventuell möchten Sie einen benutzerfreundlicheren Editor wie nano installieren, um die Bearbeitung von Dateien auf Ihrem CentOS 8-Server zu erleichtern:

      Geben Sie bei der Aufforderung zur Bestätigung der Installation y ein.

      Erstellen Sie nun eine neue PHP-Datei namens info.php im Verzeichnis /var/www/html:

      • nano /var/www/html/info.php

      Der folgende PHP-Code zeigt Informationen über die aktuelle PHP-Umgebung, die auf dem Server läuft:

      /var/www/html/info.php

      <?php
      
      phpinfo();
      

      Wenn Sie dies abgeschlossen haben, speichern und schließen Sie die Datei. Wenn Sie nano verwenden, können Sie STRG+X drücken, dann Y eingeben und zur Bestätigung ENTER drücken.

      Jetzt können Sie testen, ob Ihr Webserver den Inhalt korrekt anzeigt, der durch ein PHP-Skript erstellt wird. Gehen Sie zu Ihrem Browser und greifen Sie auf Ihren Server-Hostnamen oder die IP-Adresse zu, gefolgt von /info.php:

      http://server_host_or_IP/info.php
      

      Sie sehen eine Seite, die so ähnlich wie die Folgende aussieht:

      CentOS 8 Standard-PHP-Info Apache

      Nachdem Sie die relevanten Informationen über Ihren PHP-Server über diese Seite überprüft haben, ist es am besten, die von Ihnen erstellte Datei zu entfernen, da sie sensible Informationen über Ihre PHP-Umgebung und Ihren CentOS-Server enthält. Sie können rm verwenden, um diese Datei zu entfernen:

      • rm /var/www/html/info.php

      Sie können diese Datei jederzeit regenerieren, falls Sie sie später benötigen. Als Nächstes testen Sie die Datenbankverbindung von der PHP-Seite.

      Schritt 5 — Testen der Datenbankverbindung von PHP (optional)

      Wenn Sie testen möchten, ob PHP eine Verbindung mit MariaDB herstellen kann und Datenbankabfragen ausführt, können Sie eine Testtabelle mit Pseudodaten erstellen und die Inhalte mit einem PHP-Skript abfragen.

      Verbinden Sie sich zuerst mit der MariaDB-Konsole mit dem Datenbankbenutzer, den Sie in Schritt 2 dieses Leitfadens erstellt haben:

      Erstellen Sie eine Tabelle namens todo_list. Führen Sie die folgende Anweisung aus der MariaDB-Konsole aus:

      CREATE TABLE example_database.todo_list (
          item_id INT AUTO_INCREMENT,
          content VARCHAR(255),
          PRIMARY KEY(item_id)
      );
      

      Geben Sie nun einige Zeilen an Inhalt in die Testtabelle ein. Sie können den nächsten Befehl ein paar Mal wiederholen, indem Sie verschiedene Werte verwenden:

      • INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

      Um zu bestätigen, dass die Daten erfolgreich in Ihrer Tabelle gespeichert wurden, führen Sie Folgendes aus:

      • SELECT * FROM example_database.todo_list;

      Sie sehen die folgende Ausgabe:

      Output

      +---------+--------------------------+ | item_id | content | +---------+--------------------------+ | 1 | My first important item | | 2 | My second important item | | 3 | My third important item | | 4 | and this one more thing | +---------+--------------------------+ 4 rows in set (0.000 sec)

      Nachdem Sie bestätigt haben, dass Sie gültige Daten in Ihrer Testtabelle haben, können Sie die MariaDB-Konsole verlassen:

      Sie können nun das PHP-Skript erstellen, das sich mit MariaDB verbindet und Ihre Inhalte abfragen. Erstellen Sie mit Ihrem bevorzugten Editor eine neue PHP-Datei in Ihrem benutzerdefinierten Stammverzeichnis. Verwenden Sie hierzu nano:

      • nano /var/www/html/todo_list.php

      Fügen Sie Ihrem PHP-Skript den folgenden Inhalt hinzu:

      /usr/share/nginx/html/todo_list.php

      <?php
      $user = "example_user";
      $password = "password";
      $database = "example_database";
      $table = "todo_list";
      
      try {
        $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
        echo "<h2>TODO</h2><ol>";
        foreach($db->query("SELECT content FROM $table") as $row) {
          echo "<li>" . $row['content'] . "</li>";
        }
        echo "</ol>";
      } catch (PDOException $e) {
          print "Error!: " . $e->getMessage() . "<br/>";
          die();
      }
      

      Speichern und schließen Sie die Datei, wenn die Bearbeitung abgeschlossen ist.

      Sie können diese Seite jetzt in Ihrem Webbrowser aufrufen, indem Sie den Hostnamen oder die öffentliche IP-Adresse Ihres Servers aufrufen, gefolgt von /todo_list.php:

      http://server_host_or_IP/todo_list.php
      

      Sie sollten nun eine Seite ähnlich wie diese sehen, die den Inhalt anzeigt, den Sie in Ihre Testtabelle eingefügt haben:

      Beispiel PHP To-Do-List

      Das bedeutet, dass Ihre PHP-Umgebung zur Verfügung steht, um mit Ihrem MariaDB-Server zu interagieren.

      Zusammenfassung

      In diesem Leitfaden haben Sie eine flexible Grundlage für die Bereitstellung von PHP-Websites und -Anwendungen für Ihre Besucher unter Verwendung von Apache als Webserver erstellt. Sie haben Apache zur Bearbeitung von PHP-Anfragen eingerichtet und haben auch eine MariaDB-Datenbank zur Speicherung der Daten Ihrer Website eingerichtet.



      Source link

      Erstellen eines Hashicorp-Vault-Servers mit Packer und Terraform in DigitalOcean [Schnellstart]


      Einführung

      Vault von Hashicorp ist ein Open-Source-Tool, um Geheimnisse und sensible Daten in dynamischen Cloud-Umgebungen sicher zu speichern. Packer und Terraform, ebenfalls von Hashicorp entwickelt, können zusammen verwendet werden, um Images von Vault zu kreieren und bereitzustellen.

      In diesem Tutorial erstellen Sie mit Packer einen unveränderlichen Snapshot des Systems mit installiertem Vault und dirigieren dessen Bereitstellung mit Terraform.

      Eine ausführlichere Version dieses Tutorials finden Sie in Erstellen eines Hashicorp Vault-Servers mit Packer und Terraform in DigitalOcean.

      Voraussetzungen

      • Auf Ihrem lokalen Rechner installierter Packer. Lesen Sie für Anweisungen die offizielle Dokumentation.
      • Auf Ihrem lokalen Rechner installiertes Terraform. Lesen Sie die offizielle Dokumentation für eine Anleitung.
      • Ein persönliches Zugriffstoken (API-Schlüssel) mit Lese- und Schreibberechtigungen für Ihr DigitalOcean-Konto. Besuchen Sie Erstellen eines persönlichen Zugriffstokens, um ein Token zu erstellen.
      • Einen SSH-Schlüssel, den Sie zur Authentifizierung mit den bereitgestellten Vault Droplets verwenden, die auf Ihrem lokalen Rechner verfügbar sind und Ihrem DigitalOcean-Konto hinzugefügt werden. Sie benötigen auch dessen Fingerabdruck, den Sie von der Security-Seite Ihres Kontos nach dem Erstellen kopieren können. Besuchen Sie die DigitalOcean-Dokumentation für detaillierte Anweisungen oder das Tutorial Einrichten von SSH-Schlüsseln.

      Schritt 1 — Erstellen einer Packer-Vorlage

      Erstellen und wechseln Sie in das Verzeichnis ~/vault-orchestration, um Ihre Vault-Dateien zu speichern:

      • mkdir ~/vault-orchestration
      • cd ~/vault-orchestration

      Erstellen Sie separate Verzeichnisse für die Packer- und Terraform-Konfiguration, indem Sie Folgendes ausführen:

      Navigieren Sie zum Verzeichnis Packer:

      Verwenden von Vorlagenvariablen

      Erstellen Sie eine variables.json in Ihrem packer-Unterverzeichnis, um Ihre privaten variablen Daten zu speichern:

      Fügen Sie die folgenden Zeilen hinzu:

      ~/vault-orchestration/packer/variables.json

      {
        "do_token": "your_do_api_key",
        "base_system_image": "ubuntu-18-04-x64",
        "region": "nyc3",
        "size": "s-1vcpu-1gb"
      }
      

      Sie verwenden diese Variablen in der Vorlage, die Sie erstellen. Sie können die Werte Basisbild, Region und Droplet-Größe entsprechend den developer docs bearbeiten.

      Ersetzen Sie your_do_api_key durch Ihren API-Schlüssel. Speichern und schließen Sie dann die Datei.

      Erstellen von Builders und Provisioners

      Erstellen Sie Ihre Packer-Vorlage für Vault in einer Datei namens template.json:

      Fügen Sie die folgenden Zeilen hinzu:

      ~/vault-orchestration/packer/template.json

      {
         "builders": [{
             "type": "digitalocean",
             "api_token": "{{user `do_token`}}",
             "image": "{{user `base_system_image`}}",
             "region": "{{user `region`}}",
             "size": "{{user `size`}}",
             "ssh_username": "root"
         }],
         "provisioners": [{
             "type": "shell",
             "inline": [
                 "sleep 30",
                 "sudo apt-get update",
                 "sudo apt-get install unzip -y",
                 "curl -L https://releases.hashicorp.com/vault/1.3.2/vault_1.3.2_linux_amd64.zip -o vault.zip",
                 "unzip vault.zip",
                 "sudo chown root:root vault",
                 "mv vault /usr/local/bin/",
                 "rm -f vault.zip"
             ]
      }]
      }
      

      Sie definieren einen einfachen digitalocean-Builder. Packer erstellt ein temporäres Droplet der definierten Größe, des definierten Bilds und der definierten Region, wobei der bereitgestellte API-Schlüssel verwendet wird.

      Der Provisioner stellt über SSH eine Verbindung mit dem angegebenen Benutzernamen her und führt nacheinander alle definierten Provisioners aus, bevor ein DigitalOcean-Snapshot aus dem Droplet erstellt und gelöscht wird.

      Es ist eine Art Shell, die die angegebenen Befehle auf das Ziel ausführt. Die Befehle in der Vorlage warten 30 Sekunden, bis das System hochgefahren ist. Anschließend wird Vault 1.3.2 heruntergeladen und entpackt. Konsultieren Sie die offizielle Vault-Downloadseite, um die aktuellste Version für Linux zu erhalten.

      Speichern und schließen Sie die Datei.

      Überprüfen Sie die Gültigkeit Ihrer Vorlage:

      • packer validate -var-file=variables.json template.json

      Sie sehen die folgende Ausgabe:

      Output

      Template validated successfully.

      Schritt 2 — Erstellen des Snapshots

      Erstellen Sie Ihren Snapshot mit dem Packer-Befehl build:

      • packer build -var-file=variables.json template.json

      Sie sehen eine Menge Ausgabe, die so aussehen wird:

      Output

      digitalocean: output will be in this color. ==> digitalocean: Creating temporary ssh key for droplet... ==> digitalocean: Creating droplet... ==> digitalocean: Waiting for droplet to become active... ==> digitalocean: Using ssh communicator to connect: ... ==> digitalocean: Waiting for SSH to become available... ==> digitalocean: Connected to SSH! ==> digitalocean: Provisioning with shell script: /tmp/packer-shell035430322 ... ==> digitalocean: % Total % Received % Xferd Average Speed Time Time Time Current ==> digitalocean: Dload Upload Total Spent Left Speed digitalocean: Archive: vault.zip ==> digitalocean: 100 45.5M 100 45.5M 0 0 154M 0 --:--:-- --:--:-- --:--:-- 153M digitalocean: inflating: vault ==> digitalocean: Gracefully shutting down droplet... ==> digitalocean: Creating snapshot: packer-1581537927 ==> digitalocean: Waiting for snapshot to complete... ==> digitalocean: Destroying droplet... ==> digitalocean: Deleting temporary ssh key... Build 'digitalocean' finished. ==> Builds finished. The artifacts of successful builds are: --> digitalocean: A snapshot was created: 'packer-1581537927' (ID: 58230938) in regions '...'

      Die letzte Zeile enthält den Namen des Snapshots (wie packer-1581537927) und seine ID in Klammern, wie hier hervorgehoben. Notieren Sie sich die ID des Snapshots, da Sie diese im nächsten Schritt benötigen.

      Falls der Build-Prozess durch Fehler in der API fehlschlägt, warten Sie einige Minuten und versuchen Sie es dann erneut.

      Schritt 3 — Schreiben der Terraform-Konfiguration

      Navigieren Sie zum Unterverzeichnis terraform:

      • cd ~/vault-orchestration/terraform

      Erstellen Sie eine Datei namens do-provider.tf, um den Provider zu speichern:

      Fügen Sie die folgenden Zeilen hinzu:

      ~/vault-orchestration/terraform/do-provider.tf

      variable "do_token" {
      }
      
      variable "ssh_fingerprint" {
      }
      
      variable "instance_count" {
      default = "1"
      }
      
      variable "do_snapshot_id" {
      }
      
      variable "do_name" {
      default = "vault"
      }
      
      variable "do_region" {
      }
      
      variable "do_size" {
      }
      
      variable "do_private_networking" {
      default = true
      }
      
      provider "digitalocean" {
      token = var.do_token
      }
      

      Diese Datei stellt dem digitalocean-Provider einen API-Schlüssel zur Verfügung. Um die Werte dieser Variablen anzugeben, erstellen Sie eine Variablendefinitionsdatei, ähnlich wie bei Packer. Der Dateiname muss entweder auf .tfvars oder auf .tfvars.json enden.

      Speichern und schließen Sie die Datei.

      Erstellen Sie eine Variablendefinitionsdatei:

      Fügen Sie die folgenden Zeilen hinzu:

      ~/vault-orchestration/terraform/definitions.tf

      do_token         = "your_do_api_key"
      ssh_fingerprint  = "your_ssh_key_fingerprint"
      do_snapshot_id   = your_do_snapshot_id
      do_name          = "vault"
      do_region        = "nyc3"
      do_size          = "s-1vcpu-1gb"
      instance_count   = 1
      

      Ersetzen Sie your_do_api_key, your_ssh_key_fingerprint und your_do_snapshot_id (die Snapshot-ID, die Sie im vorherigen Schritt notiert haben). Die Parameter do_region und do_size müssen die gleichen Werte wie in der Packer-Variablendatei haben.

      Speichern und schließen Sie die Datei.

      Erstellen Sie die folgende Datei, um die Bereitstellungskonfiguration des Vault-Snapshots zu speichern:

      Fügen Sie die folgenden Zeilen hinzu:

      ~/vault-orchestration/terraform/deployment.tf

      resource "digitalocean_droplet" "vault" {
      count              = var.instance_count
      image              = var.do_snapshot_id
      name               = var.do_name
      region             = var.do_region
      size               = var.do_size
      private_networking = var.do_private_networking
      ssh_keys = [
        var.ssh_fingerprint
      ]
      }
      
      output "instance_ip_addr" {
      value = {
        for instance in digitalocean_droplet.vault:
        instance.id => instance.ipv4_address
      }
      description = "The IP addresses of the deployed instances, paired with their IDs."
      }
      

      Sie definieren eine einzelne resource vom Typ digitalocean_droplet namens vault. Sie legen ihre Parameter entsprechend den Variablenwerten fest und fügen (mit seinem Fingerabdruck) einen SSH-Schlüssel von Ihrem DigitalOcean-Konto zur Droplet-Ressource hinzu. Sie output die IP-Adressen aller neu erstellten Instanzen an die Konsole aus.

      Speichern und schließen Sie die Datei.

      Initialisieren Sie das Verzeichnis als Terraform-Projekt:

      Sie sehen die folgende Ausgabe:

      Output

      Initializing the backend... Initializing provider plugins... The following providers do not have any version constraints in configuration, so the latest version was installed. To prevent automatic upgrades to new major versions that may contain breaking changes, it is recommended to add version = "..." constraints to the corresponding provider blocks in configuration, with the constraint strings suggested below. * provider.digitalocean: version = "~> 1.14" Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.

      Schritt 4 — Bereitstellung von Vault mit Terraform

      Testen Sie die Gültigkeit Ihrer Konfiguration:

      Sie sehen die folgende Ausgabe:

      Output

      Success! The configuration is valid.

      Führen Sie den Befehl plan aus, um zu sehen, was Terraform bei der Bereitstellung der Infrastruktur versucht:

      • terraform plan -var-file="definitions.tfvars"

      Die Ausgabe wird ähnlich sein wie:

      Output

      Refreshing Terraform state in-memory prior to plan... The refreshed state will be used to calculate this plan, but will not be persisted to local or remote state storage. ------------------------------------------------------------------------ An execution plan has been generated and is shown below. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # digitalocean_droplet.vault[0] will be created + resource "digitalocean_droplet" "vault" { ... } Plan: 1 to add, 0 to change, 0 to destroy. ------------------------------------------------------------------------ Note: You didn't specify an "-out" parameter to save this plan, so Terraform can't guarantee that exactly these actions will be performed if "terraform apply" is subsequently run.

      Führen Sie den Plan aus:

      • terraform apply -var-file="definitions.tfvars"

      Das Droplet wird die Bereitstellung abschließen und Sie sehen eine Ausgabe, die etwa folgendermaßen aussieht:

      Output

      An execution plan has been generated and is shown below. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: + digitalocean_droplet.vault-droplet ... Plan: 1 to add, 0 to change, 0 to destroy. ... digitalocean_droplet.vault-droplet: Creating... ... Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: instance_ip_addr = { "181254240" = "your_new_server_ip" }

      Schritt 5 — Verifizieren Ihres bereitgestellten Droplet

      Führen Sie Folgendes aus, um sich mit Ihrem neuen Droplet zu verbinden:

      Nach der Anmeldung führen Sie Vault aus mit:

      Sie sehen die entsprechende “Hilfe”-Ausgabe:

      Output

      Usage: vault <command> [args] Common commands: read Read data and retrieves secrets write Write data, configuration, and secrets delete Delete secrets and configuration list List data or secrets login Authenticate locally agent Start a Vault agent server Start a Vault server status Print seal and HA status unwrap Unwrap a wrapped secret Other commands: audit Interact with audit devices auth Interact with auth methods debug Runs the debug command kv Interact with Vault's Key-Value storage lease Interact with leases namespace Interact with namespaces operator Perform operator-specific tasks path-help Retrieve API help for paths plugin Interact with Vault plugins and catalog policy Interact with policies print Prints runtime configurations secrets Interact with secrets engines ssh Initiate an SSH session token Interact with tokens

      Zusammenfassung

      Sie verfügen jetzt über ein automatisiertes System zur Bereitstellung von Hashicorp Vault auf DigitalOcean Droplets mit Unterstützung von Terraform und Packer. Um Vault zu verwenden, müssen Sie es initialisieren und weiter konfigurieren. Anweisungen hierzu finden Sie in den Offiziellen Dokumenten.

      Weitere Tutorials zur Verwendung von Terraform finden Sie auf der Terraform Content Page.



      Source link

      Installieren und Konfigurieren eines SNMP-Daemons und -Clients unter Ubuntu 18.04


      Der Autor hat das Internet Archive dazu ausgewählt, im Rahmen des Programms Write for DOnations eine Spende zu erhalten.

      Einführung

      Ein großer Teil der Tätigkeit eines Systemadministrators besteht darin, genaue Informationen über Ihre Server und Infrastruktur zu sammeln. Es gibt eine Reihe von Tools und Optionen, die zur Sammlung und Verarbeitung dieser Informationen dienen. Viele von ihnen basieren auf einer Technologie namens SNMP.

      SNMP steht für Simple Network Management Protokol, einfaches Netzwerkverwaltungs-Protokoll. Es ist eine Methode, mit der Server Informationen über ihren aktuellen Status austauschen können, sowie ein Kanal, über den ein Administrator vordefinierte Werte ändern kann. Während das Protokoll selbst schlank ist, kann die Struktur von Programmen, die SNMP implementieren, schnell an Komplexität zunehmen. Weitere Informationen zu den Grundlagen des SNMP-Protokolls finden Sie in unserem Artikel Eine Einführung in SNMP.

      In diesem Tutorial richten Sie die Tools zur Kommunikation mit SNMP ein. Zur Demonstration verwenden Sie zwei Ubuntu 18.04-Server. Einer enthält den SNMP-Manager, der mit dem Agenten zur Implementierung von Netzwerkgeräten spricht. Dieser wird als Manager-Server bezeichnet. Der andere Server enthält den SNMP-Agenten, der auf die Befehle des Manager-Servers reagiert. Dieser wird als Agenten-Server bezeichnet. Sie könnten sich dafür entscheiden, den Agenten auch auf dem Manager-Rechner zu installieren, aber wenn sie getrennt gehalten werden, lässt sich leichter zeigen, welche Funktionalität von jeder Komponente bereitgestellt wird.

      Voraussetzungen

      Um dieser Anleitung zu folgen, benötigen Sie:

      Schritt 1 – Installieren des SNMP-Daemons und der Dienstprogramme

      Um herauszufinden, wie SNMP auf einem System implementiert werden kann, beginnen Sie mit der Installation des Daemons und der Tools auf Ihren Ubuntu-Servern.

      Melden Sie sich von Ihrem lokalen Rechner aus als Ihr non-root user am Manager-Server an:

      • ssh your_username@manager_server_ip_address

      Aktualisieren Sie den Paketindex für den APT-Paketmanager:

      Installieren Sie anschließend die SNMP-Software:

      • sudo apt install snmp snmp-mibs-downloader

      Das Paket snmp bietet eine Sammlung von Befehlszeilen-Tools zur Ausgabe von SNMP-Anfragen an Agenten. Das Paket snmp-mibs-downloader hilft bei der Installation und Verwaltung von Management Information Base (MIB)-Dateien, die Netzwerkobjekte verfolgen.

      Öffnen Sie dann ein neues Terminal auf Ihrem lokalen Rechner und melden Sie sich bei dem Agenten-Server an:

      • ssh your_username@agent_server_ip_address

      Aktualisieren Sie auf dem Agenten-Server den Paketindex:

      Installieren Sie dann den SNMP-Daemon

      Beachten Sie, dass Sie das Paket snmp-mibs-downloader nicht benötigen, da der Agenten-Server keine MIB-Dateien verwaltet.

      Nachdem Sie nun diese Komponenten installiert haben, konfigurieren Sie Ihren Manager-Server.

      Schritt 2 — Konfigurieren des SNMP Manager-Servers

      Wie bereits erwähnt, wird der Großteil der Arbeit auf dem Agenten-Server stattfinden, sodass Ihre Konfiguration auf dem Manager-Server weniger aufwendig ist. Um sicherzustellen, dass SNMP-Tools die von Ihnen installierten zusätzlichen MIB-Daten verwenden können, müssen Sie nur eine Datei ändern.

      Öffnen Sie auf Ihrem Manager-Server die Datei /etc/snmp/snmp.conf in Ihrem Texteditor mit sudo-Berechtigungen. Dieses Tutorial verwendet nano:

      • sudo nano /etc/snmp/snmp.conf

      In dieser Datei gibt es einige Kommentare und eine einzige unkommentierte Zeile. Damit der Manager die MIB-Dateien importieren kann, kommentieren Sie die Zeile mibs : aus:

      /etc/snmp/snmp.conf

      # As the snmp packages come without MIB files due to license reasons, loading
      # of MIBs is disabled by default. If you added the MIBs you can reenable
      # loading them by commenting out the following line.
      #mibs :
      

      Speichern und schließen Sie snmp.conf, indem Sie STRG+X drücken, gefolgt von Y und dann der Eingabetaste, wenn Sie nano verwenden.

      Die Konfiguration des Manager-Servers ist nun abgeschlossen, aber Sie müssen diesen Server immer noch verwenden, um bei der Konfiguration Ihres Agenten-Servers zu helfen, was Sie im nächsten Schritt tun werden.

      Schritt 2 — Konfigurieren des SNMP Agenten-Servers

      Als echtes Client-Server-System verfügt der Agenten-Server über keine der externen Tools, die zur Konfiguration seiner eigenen SNMP-Einrichtung erforderlich sind. Sie können einige Konfigurationsdateien ändern, um einige Änderungen vorzunehmen, aber die meisten Änderungen, die Sie vornehmen müssen, werden durch eine Verbindung zu Ihrem Agenten-Server von Ihrem Management-Server aus vorgenommen.

      In diesem Tutorial verwenden Sie Version 3 des SNMP-Protokolls. Im Gegensatz zu SNMPv1 und v2 enthält bei SNMPv3 jede Nachricht Sicherheitsparameter, die verschlüsselt sind. In diesem Schritt konfigurieren Sie die SNMPv3-Authentifizierungs- und Zugriffskontrollregeln.

      Um zu beginnen, öffnen Sie auf Ihrem Agenten-Server die Konfigurationsdatei des Daemons mit sudo-Berechtigungen:

      • sudo nano /etc/snmp/snmpd.conf

      Sie müssen einige Änderungen darin vornehmen. Diese werden hauptsächlich für das Bootstrapping Ihrer Konfiguration verwendet, damit Sie diese von Ihrem anderen Server aus verwalten können.

      Zuerst müssen Sie die Anweisung agentAddress ändern. Momentan ist sie so eingestellt, dass sie nur vom lokalen Rechner ausgehende Verbindungen zulässt. Sie müssen die aktuelle Zeile auskommentieren und die Zeile darunter, die alle Verbindungen ermöglicht, entkommentieren.

      /etc/snmp/snmpd.conf

      #  Listen for connections from the local system only
      #agentAddress  udp:127.0.0.1:161
      #  Listen for connections on all interfaces (both IPv4 *and* IPv6)
      agentAddress udp:161,udp6:[::1]:161
      

      Anmerkung: Da das Zulassen aller Verbindungen auf diese Art keine optimale Sicherheitspraxis ist, empfiehlt es sich, diese bald wieder zu sperren, nachdem das Bootstrapping abgeschlossen ist.

      Als Nächstes fügen Sie vorübergehend eine Zeile createUser ein. Diese Anweisungen werden normalerweise nicht in dieser Datei aufbewahrt; Sie werden sie in Kürze wieder entfernen.

      Der Benutzer, den Sie erstellen, wird als bootstrap bezeichnet und wird als Vorlage verwendet, in der Sie Ihren ersten tatsächlichen Benutzer erstellen. Die SNMP-Pakete führen dies durch das Klonen der Eigenschaften des Benutzers aus.

      Wenn Sie einen neuen Benutzer definieren, müssen Sie den Authentifizierungstyp (MD5 oder SHA) angeben und eine Passphrase mit mindestens acht Zeichen bereitstellen. Wenn Sie vorhaben, die Übertragung zu verschlüsseln, wie Sie es in diesem Tutorial tun werden, müssen Sie auch das Datenschutzprotokoll (DES oder AES) und optional eine Datenschutzprotokoll-Passphrase angeben. Wenn keine Passphrase für das Datenschutzprotokoll angegeben wird, wird die Authentifizierungs-Passphrase auch für das Datenschutzprotokoll verwendet.

      Fügen Sie diese Zeile createUser am Ende der Datei hinzu:

      /etc/snmp/snmpd.conf

      ...
      createUser bootstrap MD5 temp_password DES
      

      Nachdem Sie nun einen neuen Benutzer angegeben haben, können Sie die Zugriffsebene einrichten, die dieser Benutzer haben wird. In diesem Tutorial richten Sie diesen für Ihren Benutzer bootstrap als auch für den neuen Benutzer demo ein, den Sie anlegen werden. Sie werden Ihnen Lese- und Schreibberechtigungen erteilen, indem Sie die Anweisung rwuser verwenden (die Alternative ist rouser für den Nur-Lese-Zugriff).

      Sie werden auch die Verwendung der Verschlüsselung erzwingen, indem Sie nach dem Benutzer priv angeben. Wenn Sie den Benutzer auf einen bestimmten Teil der MIB beschränken möchten, können Sie am Ende der Zeile den höchsten Objektidentifikator (OID) angeben, auf den der Benutzer Zugriff haben soll.

      Für die Zwecke dieses Tutorials werden Ihre beiden Zeilen wie folgt aussehen:

      /etc/snmp/snmpd.conf

      ...
      rwuser bootstrap priv
      rwuser demo priv
      

      Wenn Sie mit diesen Änderungen fertig sind, speichern und schließen Sie die Datei.

      Um diese Änderungen zu implementieren, starten Sie den Dienst snmpd auf Ihrem Agenten-Server neu:

      • sudo systemctl restart snmpd

      Der SNMP-Daemon horcht auf Port :161 auf Verbindungen. Konfigurieren Sie UFW, um Verbindungen vom Manager-Server zu diesem Port zu erlauben:

      • sudo ufw allow from manager_server_ip_address to any port 161

      Mehr über UFW erfahren Sie in Einrichten einer Firewall mit UFW unter Ubuntu 18.04.

      Nachdem nun der Agenten-Server konfiguriert ist, können Sie sich über den Manager-Server mit Ihrem Agenten-Server verbinden, um die Verbindung zu überprüfen.

      Schritt 4 — Verifizieren der Authentifizierung zum Agenten-Server

      In diesem Schritt führen Sie einen Test durch, um sicherzustellen, dass Sie mit Ihrem Konto bootstrap eine Verbindung zum Agenten-Server herstellen können. Zuvor wird in diesem Tutorial jedoch ein wenig über die allgemeine Struktur des Sendens eines SNMP-Befehls gesprochen.

      Wenn Sie die in dem Paket snmp (die net-snmp Software Suite) enthaltenen Tools verwenden, gibt es einige Muster, wie Sie die Befehle aufrufen müssen. Als Erstes müssen Sie sich bei dem SNMP-Daemon authentifizieren, mit dem Sie kommunizieren möchten. Dazu müssen in der Regel einige Informationen bereitgestellt werden. Die häufigsten sind die folgenden:

      • -v: Dieses Flag wird zur Angabe der Version des SNMP-Protokolls verwendet, die Sie verwenden möchten. Dieses Tutorial verwendet v3.
      • -c: Dieses Flag wird verwendet, wenn Sie SNMP v1 oder v2-ähnliche Community-Strings zur Authentifizierung verwenden. Da Sie eine benutzerbasierte Authentifizierung im Stil von v3 verwenden, brauchen Sie dies nicht zu tun.
      • -u: Dieser Parameter wird verwendet, um den Benutzernamen anzugeben, als den Sie sich authentifizieren möchten. Um mit SNMP etwas zu lesen oder zu ändern, müssen Sie sich mit einem bekannten Benutzernamen authentifizieren.
      • -l: Dieser Parameter wird verwendet, um die Sicherheitsebene anzugeben, mit der Sie sich verbinden. Die möglichen Werte sind noAuthNoPriv für keine Authentifizierung und keine Verschlüsselung, authNoPriv für die Authentifizierung aber keine Verschlüsselung sowie authPriv für die Authentifizierung und Verschlüsselung. Der Benutzername, den Sie verwenden, muss so konfiguriert sein, dass er auf der von Ihnen angegebenen Sicherheitsstufe funktioniert, sonst wird die Authentifizierung nicht erfolgreich sein.
      • -a: Dieser Parameter wird verwendet, um das verwendete Authentifizierungsprotokoll anzugeben. Die möglichen Werte sind MD5 oder SHA. Dies muss mit den Informationen übereinstimmen, die beim Anlegen des Benutzers angegeben wurden.
      • -x: Dieser Parameter wird verwendet, um das verwendete Verschlüsselungsprotokoll anzugeben. Die möglichen Werte sind DES oder AES. Dies muss mit den Informationen übereinstimmen, die beim Anlegen des Benutzers angegeben wurden. Dies ist immer dann erforderlich, wenn die Berechtigungsspezifikation des Benutzers priv dahinter enthält, wodurch die Verschlüsselung obligatorisch wird.
      • -A: Wird verwendet, um die Authentifizierungs-Passphrase anzugeben, die bei der Erstellung des Benutzers angegeben wurde.
      • -X: Dies ist die Verschlüsselungs-Passphrase, die bei der Erstellung des Benutzers angegeben wurde. Wenn keine Passphrase aber ein Verschlüsselungsalgorithmus angegeben wurde, wird die Authentifizierungs-Passphrase verwendet. Dies ist erforderlich, wenn der Parameter -x angegeben wird oder wenn die Berechtigungsspezifikation eines Benutzers ein priv dahinter hat, das eine Verschlüsselung erfordert.

      Anhand dieser Informationen können Sie Ihre Befehle erstellen. In Anbetracht der Art und Weise, wie Sie Ihren Benutzer bootstrap einrichten, werden die Befehle, die Sie mit diesem Konto verwenden, wie folgt aussehen:

      snmp_command -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password remote_host snmp_sub_command_or_options
      

      Testen Sie von Ihrem Manager-Server aus, um sicherzustellen, dass Ihr Konto bootstrap verfügbar ist. Geben Sie Folgendes ein, um die Systeminformationen für den Agenten-Server anzuzeigen:

      • snmpget -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address 1.3.6.1.2.1.1.1.0

      Die Zeichenfolge 1.3.6.1.2.1.1.1.0 ist die OID, die für die Anzeige von Systeminformationen verantwortlich ist. Sie gibt die Ausgabe von uname -a auf dem Remote-System zurück.

      Dadurch erhalten Sie folgenden Output:

      Output

      SNMPv2-MIB::sysDescr.0 = STRING: Linux agent 4.15.0-66-generic #75-Ubuntu SMP Tue Oct 1 05:24:09 UTC 2019 x86_64

      Nachdem Sie nun überprüft haben, dass Sie sich auf dem Server, auf dem der SNMP-Daemon ausgeführt wird, authentifizieren können, können Sie mit der Erstellung Ihres regulären Benutzerkontos fortfahren.

      Schritt 5 — Einrichten des regulären Benutzerkontos

      Obwohl Sie die Berechtigungen für das Benutzerkonto demo in der Datei snmpd.conf angegeben haben, haben Sie diesen Benutzer noch nicht wirklich erstellt. In diesem Schritt verwenden Sie den Benutzer bootstrap als Vorlage für Ihren neuen Benutzer. Sie werden dies mit dem Tool snmpusm tun, das für die Benutzerverwaltung verwendet wird.

      Auf dem Manager-Server können Sie den Benutzer aus der Vorlage mithilfe des Tools snmpusm und der folgenden allgemeinen Syntax anlegen.

      snmpusm authentication_info agent_server_ip_address create new_user existing_user
      

      Mit dem, was Sie über die zu übermittelnden Authentifizierungs-Flags wissen, und unter Nutzung des bereits vorhandenen Benutzerkontos (bootstrap) können Sie einen Benutzer erstellen, der zu den bereits definierten Benutzerrechten passt (demo).

      Der Befehl sieht wie folgt aus:

      • snmpusm -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address create demo bootstrap

      Sie erhalten die folgende Meldung:

      Output

      User successfully created.

      Sie haben nun einen voll funktionsfähigen Benutzer namens demo auf Ihrem Agenten-Server. Es verwendet jedoch nach wie vor die gleichen Authentifizierungsinformationen wie das Konto bootstrap. Um die Sicherheit zu erhöhen, können Sie das Passwort ändern. Dieses Mal verwenden Sie das Konto demo zur Authentifizierung. Denken Sie daran, dass Passwörter mindestens acht Zeichen lang sein müssen:

      • snmpusm -u demo -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address passwd temp_password new_password

      Sie erhalten die folgende Meldung zurück:

      Output

      SNMPv3 Key(s) successfully changed.

      Sie können Ihre neuen Berechtigungsnachweise und Ihr Passwort testen, indem Sie den Agenten-Server fragen, wie lange der SNMP-Dienst bereits ausgeführt wird. Sie verwenden den Befehl snmpget, um einen einzelnen Wert von dem Agenten-Server zu erhalten.

      Nutzen Sie diesmal die von Ihnen heruntergeladenen zusätzlichen MIB-Definitionen, um den Wert nach Namen anstelle der numerischen ID von OID zu erfragen.

      • snmpget -u demo -l authPriv -a MD5 -x DES -A new_password -X new_password agent_server_ip_address sysUpTime.0

      Sie erhalten einen Wert zurück, der das letzte Mal repräsentiert, als der entfernte SNMP-Daemon neu gestartet wurde:

      Output

      DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (53309) 0:08:53.09

      Sie haben nun ein funktionierendes Benutzerkonto namens demo. Im nächsten Schritt vereinfachen Sie das Arbeiten mit SNMP-Befehlen durch die Konfiguration des Client.

      Schritt 6 – Erstellen einer Client-Konfigurationsdatei

      Sie haben zu diesem Punkt wahrscheinlich bemerkt, dass die Authentifizierungsdetails für alle Ihre SNMP-Befehle bei jeder Anfrage ziemlich statisch sind. Anstatt diese jedes Mal einzugeben, können Sie eine clientseitige Konfigurationsdatei erstellen, die die Berechtigungsnachweise enthält, mit denen Sie sich verbinden.

      Die Client-Konfigurationsdatei kann an zwei verschiedenen Stellen abgelegt werden, je nachdem, wie weit Sie sie freigeben möchten.

      Wenn Sie Ihre Anmeldedaten für jeden gültigen Benutzer auf Ihrem Management-Rechner freigeben möchten, können Sie Ihre Konfigurationsdetails in der globalen Datei snmp.conf auf dem Manager-Server ablegen. Sie müssten diese Datei mit sudo-Berechtigungen öffnen:

      • sudo nano /etc/snmp/snmp.conf

      Wenn Sie jedoch die Berechtigungsnachweise für die Authentifizierung nur für Ihren Benutzer definieren möchten, können Sie ein verstecktes Verzeichnis .snmp im Stammverzeichnis Ihres Benutzers auf dem Manager-Server erstellen und die Datei dort anlegen:

      • mkdir ~/.snmp
      • nano ~/.snmp/snmp.conf

      Unabhängig von Ihrer Entscheidung, wo Sie Ihre Konfiguration ablegen, bleibt der Inhalt derselbe.

      Die Befehle, die Sie zur Authentifizierung verwenden, sind in der folgenden Tabelle aufgeführt. In der rechten Spalte sehen Sie die Namen der Anweisungen, die zur Erstellung dieser Konfigurationsdetails innerhalb der Datei snmp.conf verwendet werden:

      Befehls-Flag Beschreibung Übersetzte snmp.conf-Anweisung
      -u username Der SNMPv3-Benutzername, mit dem sich authentifiziert wird. defSecurityName username
      -l authPriv Die Sicherheitsstufe, mit der sich authentifiziert wird. defSecurityLevel authPriv
      -a MD5 Das zu verwendende Authentifizierungsprotokoll. defAuthType MD5
      -x DES Das zu verwendende Datenschutz (Verschlüsselungs)-Protokoll. defPrivType DES
      -A passphrase Die Authentifizierungs-Passphrase für den angegebenen Benutzernamen. defAuthPassphrase passphrase
      -X passphrase Die Datenschutz-Passphrase aus dem angegebenen Benutzernamen. defPrivPassphrase passphrase

      Anhand dieser Informationen können Sie eine entsprechende Datei snmp.conf erstellen. Für diesen Leitfaden sieht sie wie folgt aus:

      snmp.conf

      defSecurityName demo
      defSecurityLevel authPriv
      defAuthType MD5
      defPrivType DES
      defAuthPassphrase new_password
      defPrivPassphrase new_password
      

      Wenn Sie dies abgeschlossen haben, speichern und schließen Sie die Datei.

      Sie können nun Befehle ausgeben, ohne die Authentifizierungsdetails anzugeben. Sie benötigen nur den SNMP-Befehl, den Host und die Befehlsargumente.

      Anstatt einzugeben:

      • snmpget -u demo -l authPriv -a MD5 -x DES -A new_password -X new_password agent_server_ip_address sysUpTime.0

      Können Sie eingeben:

      • snmpget agent_server_ip_address sysUpTime.0

      Wie Sie sehen können, reduziert sich dadurch die Menge der Informationen, die Sie in jeder Anfrage bereitstellen müssen. Als Nächstes entfernen Sie das Konto bootstrap, um die Netzwerksicherheit zu erhöhen.

      Schritt 7 – Entfernen des Kontos Bootstrap

      Nachdem Ihr reguläres Konto nun korrekt konfiguriert ist, können Sie das unsichere Konto bootstrap entfernen.

      Öffnen Sie auf Ihrem Agenten-Server erneut die Datei /etc/snmp/snmpd.conf mit sudo-Berechtigungen.

      • sudo nano /etc/snmp/snmpd.conf

      Suchen und kommentieren (oder entfernen) Sie beide Zeilen aus, die Sie zuvor hinzugefügt haben und die auf den Benutzer bootstrap verweisen:

      /etc/snmp/snmpd.conf

      ...
      #createUser bootstrap MD5 temp_password DES
      #rwuser bootstrap priv
      ...
      

      Speichern und schließen Sie die Datei.

      Starten Sie nun den SNMP-Daemon neu:

      • sudo systemctl restart snmpd

      Damit wird die Empfehlung erfüllt, keine Anweisung createUser in der normalen Datei snmpd.conf zu haben. Hierdurch werden auch Berechtigungen von dem temporären Benutzer entfernt.

      Wenn Sie den Benutzer bootstrap vollständig aus der usmUserTable entfernen möchten, können Sie dies tun, indem Sie diesen Befehl vom Manager-Server aus erteilen:

      • snmpusm agent_server_ip_address delete bootstrap

      Sie erhalten die folgende Antwort:

      Output

      User successfully deleted.

      Zusammenfassung

      Zu diesem Zeitpunkt haben Sie eine vollständig konfigurierte Client-Server-Einrichtung, die über das SNMP-Protokoll sicher kommunizieren kann. Sie können nun zusätzliche Daemons auf anderen Hosts hinzufügen und den Kontozugriff über Ihre gesamte Infrastruktur konfigurieren.

      Für weitere Studien können Sie unser Tutorial Verwenden der Net-SNMP Tool-Suite zur Verwaltung und Überwachung von Servern verwenden, um mehr über SNMP-Tools und ihre Verwendung zum Abrufen von Werten nacheinander oder in großen Mengen sowie zum Ändern von Daten zu erfahren.



      Source link