18 Public Key Infrastructure (PKI) und SSH

18.1 Grundlagen der Public Key Infrastructure (PKI)

Die Public Key Infrastructure (PKI) ist ein Framework, das zur Verwaltung von digitalen Zertifikaten und öffentlichen/privaten Schlüsseln verwendet wird. Sie spielt eine zentrale Rolle bei der Sicherstellung von Vertraulichkeit, Integrität und Authentizität in Netzwerken.

18.1.1 Wichtige Konzepte:

18.1.2 Anwendungsfälle in Ansible:

In Ansible kann PKI genutzt werden, um SSH-Zugänge abzusichern, verschlüsselte Kommunikation zu gewährleisten und Anmeldungen ohne Passwort zu ermöglichen.

18.2 Einrichtung und Verwaltung von SSH-Schlüsseln

SSH (Secure Shell) ist ein Protokoll zur sicheren Verwaltung von Netzwerkdiensten über eine ungesicherte Verbindung. Es verwendet kryptografische Techniken, um die Kommunikation zu verschlüsseln und die Identität der beteiligten Parteien zu authentifizieren.

18.2.1 Erstellung eines SSH-Schlüsselpaars:

Ein SSH-Schlüsselpaar besteht aus einem öffentlichen und einem privaten Schlüssel. Der private Schlüssel bleibt auf dem lokalen System, während der öffentliche Schlüssel auf dem entfernten System gespeichert wird.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Dieser Befehl erstellt ein Schlüsselpaar mit einer Schlüssellänge von 4096 Bit und speichert es in der Standard-SSH-Konfiguration.

18.2.2 Verteilen des öffentlichen Schlüssels:

Der öffentliche Schlüssel kann mit dem folgenden Befehl an ein Zielsystem gesendet werden:

ssh-copy-id user@remote_host

Dadurch wird der öffentliche Schlüssel zur Datei ~/.ssh/authorized_keys des Zielbenutzers auf dem entfernten System hinzugefügt.

18.3 Verwendung von PKI und SSH in Ansible

Ansible nutzt standardmäßig SSH zur Kommunikation mit den Zielknoten. Durch die Verwendung von SSH-Schlüsseln können Administratoren automatisierte Prozesse sicher durchführen, ohne bei jeder Ausführung Passwörter eingeben zu müssen.

18.3.1 Beispiel für SSH-Zugriff mit Ansible:

- hosts: all
  tasks:
    - name: Überprüfen der Verbindung
      ping:

Dieses einfache Playbook überprüft die Erreichbarkeit aller Zielknoten, die im Inventar definiert sind, über SSH.

18.3.2 SSH-Agent und Weiterleitung:

Ansible kann den SSH-Agent nutzen, um private Schlüssel im Speicher zu halten, wodurch mehrfache Passwortabfragen vermieden werden. Dies ist besonders nützlich, wenn Playbooks ausgeführt werden, die sich mit vielen Zielknoten verbinden müssen.

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

18.3.3 Beispiel für die Verwendung von SSH-Parametern in Ansible:

Ansible ermöglicht es, SSH-spezifische Optionen direkt im Playbook oder über die Kommandozeile zu setzen.

- hosts: all
  tasks:
    - name: Einfache Kommandos über SSH ausführen
      command: echo "Hello, world!"
      vars:
        ansible_ssh_private_key_file: /path/to/private_key
        ansible_ssh_common_args: '-o StrictHostKeyChecking=no'

Dieses Playbook führt ein einfaches Kommando auf allen Zielknoten aus und verwendet dabei den angegebenen privaten Schlüssel.

18.4 Sicherheitsempfehlungen