Security

Einführung

opsi ist ein leistungsfähiges Werkzeug zur Verwaltung vieler Clients. Daher ist die Sicherheit des 'opsi-Servers' von entscheidender Bedeutung. Wer den 'opsi-Server' kontrolliert, kontrolliert alle angeschlossenen Clients.

Das erforderliche Maß an Sicherheitsmaßnahmen hängt von Ihrer Umgebung und Ihren Anforderungen ab. Ein 'opsi-Server' in der Cloud ist beispielsweise größeren Risiken ausgesetzt als einer in einem abgesicherten internen Netzwerk.

Dieses Kapitel fasst wichtige Sicherheitsaspekte und Empfehlungen zusammen.

Wir danken allen Kunden und Nutzern, die Sicherheitsprobleme gemeldet und so die opsi-Sicherheit verbessert haben. Sollten Sie ein Sicherheitsproblem entdecken, kontaktieren Sie uns bitte unter info@uib.de, bevor Sie es öffentlich machen.

Auf dem Laufenden bleiben

Sicherheitsrelevante Updates und Informationen finden Sie im News-Bereich des opsi-Forums sowie auf der opsi-Website.

Für die automatisierte Auswertung steht das JSON-Format unter https://changelog.opsi.org/Releases/releases.json zur Verfügung.

Abonnieren Sie den opsi-Announce Newsletter, um aktuelle Hinweise zu Sicherheitsupdates direkt zu erhalten.

Allgemeine Serversicherheit

Die Sicherheit von opsi basiert maßgeblich auf der Absicherung des zugrundeliegenden Betriebssystems. Stellen Sie sicher, dass Ihr Server regelmäßig alle sicherheitsrelevanten Updates Ihrer Linux-Distribution erhält – dies betrifft sowohl den opsi-Configserver als auch alle Depotserver.

Sie können diese Systeme auch automatisiert, beispielsweise mit opsi, aktuell halten.

Weitere Maßnahmen zur Härtung Ihres Linux-Servers liegen außerhalb des Umfangs dieses Handbuchs. Bei Bedarf unterstützen wir Sie gerne im Rahmen eines Supportvertrags.

Client-Authentifizierung am Server

Clients authentifizieren sich am Server mit ihrem opsi-host-key. Dieser Schlüssel ist ein 32-stelliges geheimes Hexadezimal-Token, das jedem Client eindeutig zugewiesen wird. Er wird auf dem Client in der Datei opsiclientd.conf gespeichert und ist nur mit administrativen Rechten lesbar.

Überprüfung der Serveridentität

Um eine sichere Kommunikation zu gewährleisten, sollten alle opsi-Komponenten die Identität des Servers mittels SSL/TLS-Zertifikaten überprüfen. Sie können die Sicherheit zusätzlich erhöhen, indem Sie die opsi-CA so konfigurieren, dass sie Zertifikate nur für bestimmte Domains mittels X.509 Name Constraints ausstellt. Konfigurationshinweise finden Sie unter SSL/TLS & Zertifikate.

Authentifizierung am Client-Control-Server

Der opsiclientd stellt eine Webservice-Schnittstelle zur Fernsteuerung des Clients bereit (siehe opsi-client-agent Fernsteuerung).

Für den Zugriff ist eine Authentifizierung erforderlich. Sie können sich als lokaler Administrator mit nicht-leerem Passwort anmelden oder mit leerem Benutzernamen und dem 'opsi-host-key' als Passwort.

Sie können den Control-Server auf lokale Verbindungen beschränken, indem Sie opsiclientd.control_server.interface auf [::1, 127.0.0.1] setzen. Dies geht mit opsi-cli:

opsi-cli jsonrpc execute config_createUnicode opsiclientd.control_server.interface "opsiclientd control server interface" "[]" "[\"::1\", \"127.0.0.1\"]"

Befehle können dann nur noch über den opsi-Messagebus an den Client gesendet werden.

Die opsi-client-agent Kiosk-API

Die opsiclientd Kiosk-API erlaubt nicht authentifizierten Zugriff vom lokalen Rechner. Wenn Sie die Software-on-Demand-Funktion (opsi-client-kiosk) nicht nutzen, können Sie diese API deaktivieren, indem Sie opsiclientd.control_server.kiosk_api_active auf false setzen:

opsi-cli jsonrpc execute config_createBool opsiclientd.control_server.kiosk_api_active "opsiclientd control server kiosk API active" false

Multi-Faktor-Authentifizierung

Aktivieren Sie die Multi-Faktor-Authentifizierung, um die Sicherheit zu erhöhen.

SAML - Single Sign On (SSO)

Nutzen Sie Single Sign-On (SSO) für mehr Sicherheit und Komfort.

Authentifizierungsmethoden deaktivieren

Mit dem Parameter disabled-auth-methods in /etc/opsi/opsiconfd.conf können Sie bestimmte Authentifizierungsmethoden deaktivieren. Wenn Sie z.B. SSO und nur WebDAV als Depotprotokoll nutzen, können Sie andere Methoden abschalten:

disabled-auth-methods = [pam, ldap, opsi_passwd]

Konfiguration erlaubter Netzwerke

Standardmäßig akzeptiert opsi Verbindungen von jeder IP-Adresse. Um die Sicherheit zu erhöhen, beschränken Sie den Zugriff auf bestimmte Netzwerke mit der Option networks:

networks = [192.168.1.0/24, 10.1.0.0/16]

Damit ist der Zugriff auf die angegebenen Netzwerke beschränkt.

Konfiguration erlaubter Admin-Netzwerke

Um den administrativen Zugriff einzuschränken, konfigurieren Sie den Parameter admin-networks in /etc/opsi/opsiconfd.conf. Nur Verbindungen aus diesen Netzwerken können administrative Aktionen durchführen. Mehrere Adressen sind möglich.

Standard:

admin-networks = [0.0.0.0/0, ::/0]

Dies erlaubt Admin-Zugriff aus allen Netzwerken. Um den Zugriff einzuschränken, z.B.:

admin-networks = [127.0.0.1/32, 10.1.1.0/24]

Sperren von Clients nach fehlgeschlagener Authentifizierung

Clients werden nach zu vielen fehlgeschlagenen Anmeldeversuchen für eine Zeit gesperrt. Drei Optionen steuern dies:

  • max-auth-failures: Anzahl der Fehlversuche bis zur Sperre (Standard: 10)

  • auth-failures-interval: Zeitraum in Sekunden für die Zählung der Fehlversuche (Standard: 120)

  • client-block-time: Sperrdauer in Sekunden (Standard: 120)

Beispiel:

max-auth-failures = 10
auth-failures-interval = 120
client-block-time = 120

Fehlversuche und gesperrte Clients werden in Redis gespeichert:

  • opsiconfd:stats:client:failed_auth:<client ip>: Anzahl der Fehlversuche

  • opsiconfd:stats:client:blocked:<client ip>: Gibt an, ob der Client gesperrt ist

Sie können Clients manuell über die Admin-Seite entsperren: https://<opsi-server>:4447/admin (siehe Admininterface).

Der Benutzer pcpatch

Der Benutzer 'pcpatch' wird benötigt, damit opsi-Clients auf die CIFS-Depotfreigabe (opsi_depot) zugreifen können.

Ausnahmen:

  • opsi-wim-capture und opsi-local-image-capture mounten ebenfalls opsi_depot_rw als 'pcpatch' mit Schreibzugriff.

  • opsi-clonezilla mountet opsi_images mit Schreibrechten.

Das Passwort von 'pcpatch' wird verschlüsselt gespeichert und übertragen, kann aber unter bestimmten Umständen herausgefunden werden. Um das Risiko zu minimieren:

  • Verweigern Sie in /etc/samba/smb.conf 'pcpatch' den Zugriff auf alle Freigaben außer 'opsi_depot':

invalid users = root pcpatch
  • Alternativ können Sie 'pcpatch' im Abschnitt [global] auf Lesezugriff beschränken:

read list = pcpatch

WARNUNG: Für opsi-wim-capture, opsi-local-image-capture und opsi-clonezilla benötigt 'pcpatch' Schreibzugriff auf die jeweiligen Freigaben.

Ändern Sie das Passwort von 'pcpatch' regelmäßig. Da niemand das Klartext-Passwort kennen muss, setzen Sie es z.B. per Cronjob auf einen Zufallswert:

opsiconfd setup --set-depot-user-password $(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c16)

WARNUNG: Weisen Sie 'pcpatch' keine Shell zu, um direkte Logins zu verhindern.

HINWEIS: Wenn Clients ausschließlich WebDAV für den Depotzugriff nutzen (clientconfig.depot.protocol), können Sie sowohl 'pcpatch' als auch den Samba-Server deaktivieren.

Einschränkung des Webservice-Zugriffs

Beschränken Sie den Zugriff auf Webservice-Methoden und Attribute über /etc/opsi/backendManager/acl.conf. Einschränkungen können für Benutzer oder Gruppen und für erlaubte Attribute gesetzt werden.

Beschränken Sie den Zugriff auf die wirklich benötigten Methoden. Um verwendete Methoden zu identifizieren, prüfen Sie das opsiconfd-Log unter /var/log/opsi/opsiconfd/opsiconfd.log nach einem Stopp oder Neustart.

Weitere Informationen finden Sie unter JSON-RPC-API.

Deaktivieren nicht benötigter Funktionen

Sie können bestimmte Funktionen in opsi aus Sicherheitsgründen deaktivieren, entweder über disabled-features in /etc/opsi/opsiconfd.conf oder die Umgebungsvariable OPSICONFD_DISABLED_FEATURES. Details siehe opsiconfd-Konfiguration.

Folgende Funktionen können deaktiviert werden:

status-page

Deaktiviert die nicht authentifizierte Statusseite (/status).

public-folder

Deaktiviert den öffentlichen Ordner /var/lib/opsi/public (/public).

rpc-interface

Deaktiviert das JSONRPC-Interface auf der Admin-Seite (/admin/#rpc-interface).

messagebus_terminal

Deaktiviert die Terminal-Nutzung über opsi-messagebus.

messagebus_execute_process

Deaktiviert die Prozessausführung über opsi-messagebus.

Root-Passwort des Boot-Images ändern

Das Standard-Root-Passwort für das opsi-Linux-Bootimage ist 'linux123'. Ändern Sie dieses aus Sicherheitsgründen wie beschrieben unter Parameter für das opsi-Linux-Bootimage.