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
undopsi-local-image-capture
mounten ebenfallsopsi_depot_rw
als 'pcpatch' mit Schreibzugriff. -
opsi-clonezilla
mountetopsi_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.