Einrichten von Cockpit Project unter Ubuntu

Der ein oder andere kenn das Cockpit Project. Es handelt sich dabei um ein Tool um einen Linux Server über einen Browser verwalten (=administrieren). Unter anderen kann die Auslastung von Prozessor, Arbeitsspeicher, Festplatten und des Netzwerks angeschaut, Benutzer angelegt – geändert und gelöscht werden. Zudem können Dienste gestoppt und gestartet werden. Es können natürlich weitere Tools wie z.B. tuned installiert werden, um den Funktionsumfang zu erweitern. Des Weiteren kann über die Weboberfläche auch ein SSH Konsole zugegriffen werden. Damit ist jeder Zeit ein SSH Zugriff gewährleistet.

Da die Weboberfläche auch Responsive Design unterstützt, kann Cockpit auch problemlos von unterwegs auf einem Smartphone oder Tablet aufgerufen werden. Neben dem eigentlichen Server können natürlich auch weitere Server über eine Installation problemlos verwaltet werden.

Nachstehend eine Installations- und Konfigurationsanleitung für Cockpit unter Ubuntu 18.04 LTS.

Installation von Cockpit inkl. Plug-Ins

apt-get install -y cockpit cockpit-packagekit cockpit-pcp cockpit-storaged tuned

cockpit-packagekit: Cockpit verwendet das Package Kit D-Bus-API, um Informationen zu verfügbaren Paketaktualisierungen abzurufen und diese unabhängig vom Betriebssystem anzuwenden.

cockpit-pcp: Verwendet Cockpit das Performance Co-Pilot-Framework, um Metrik Daten über das System zu erfassen.

cockpit-storaged: Verwendet Cockpit Storaged zum Konfigurieren und Überwachen von Speicher, Festplatten, Mounts usw. auf dem System.

tuned: Tuned bietet eine Möglichkeit zum Anwenden von Systemen und anderen Optionen, um die Leistung, Akkulaufzeit, Datenträgerdurchsatz oder andere Leistungsprofile zu optimieren.

Konfiguration für Cockpit anlegen

cat > /etc/cockpit/cockpit.conf << EOF
[WebService]
#Origins = https://somedomain2.com:9090
#ProtocolHeader = X-Forwarded-Proto
#LoginTitle
LoginTo = false
#RequireHost = false
AllowUnencrypted = false
EOF

Dienst neu starten

systemctl restart cockpit.socket

SSL-Zertifikat
Nach der Installation bzw. Start von Cockpit wird ein selbstsigniertes Zertifikat erzeugt und eingebunden. Das erkennt man sehr gut daran, dass beim Aufruf der Weboberfläche von Cockpit eine Sicherheitswarnung im Browser angezeigt wird. Abhilfe kann ein Zertifikat von Let’s Encrypt schaffen.

Installation von acme.sh

sudo su
apt-get install -y git socat
cd ~
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --home /opt/acme.sh --config-home /etc/acme.sh --accountemail "name@domain.de"
mkdir /etc/acme.sh/certs

Die Anwendung wird unter /opt/acme.sh abgelegt. Die Konfiguration(en) befinden sich unter /etc/acme.sh. An die Account E-Mailadresse werden Benachrichtigungen verschickt, wenn das Ablaufdatum des Zertifikats erreicht wird.

Installationsdateien löschen

cd ..
rm -rf acme.sh

Abrufen eines Zertifikats

acme.sh --issue --force --keylength 4096 --domain fqdn --standalone --cert-file /etc/acme.sh/certs/fqdn.crt --key-file /etc/acme.sh/certs/fqdn.key --ca-file /etc/acme.sh/certs/fqdn.ca.crt --fullchain-file /etc/acme.sh/certs/fqdn.chain.pem --reloadcmd "cat /etc/acme.sh/certs/fqdn.chain.pem > /etc/cockpit/ws-certs.d/1-fqdn.cert ; cat /etc/acme.sh/certs/fqdn.key >> /etc/cockpit/ws-certs.d/1-fqdn.cert ; systemctl restart cockpit.socket"

Für einen Testlauf einfach nach dem Parameter --issue den Parameter --test hinzufügen. Die Variable fqdn entspricht dem vollqualifizieren Hostname (z.B. cockpit-test.wydler.eu).
Über den Parameter --reloadcmd wird das
Zertifikat für Cockpit aufbereitet und an der richtige Stelle abgelegt. Abschließend der Service Cockpit neu gestartet, damit das Zertifikat auch geladen ist.

SSL Version und Cihper Suites anpassen
Standardmäßig werden aktuell die Protokoll TLS 1.1 und 1.2 genutzt. Ein kurzer SSL Server Test bei Qualys zeigt allerdings ein mittelmäßiges Ergebnis.

Da ist meiner Meinung nach Luft nach oben. Zumal es in der Dokumentation von Cockpit genannt wird. Allerdings für meinen Geschmack ist das Thema leider nur ganz leicht angerissen. Um TLS 1.1 und diverse unsichere Cipher Suites zu deaktivieren, folgende Befehle ausführen:

echo "Environment=G_TLS_GNUTLS_PRIORITY=SECURE256:+SECURE128:-VERS-TLS-ALL:+VERS-TLS1.2:-RSA:-DHE-DSS:-CAMELLIA-128-CBC:-CAMELLIA-256-CBC:-SHA1" >> "/lib/systemd/system/cockpit.service"
systemctl daemon-reload
service cockpit restart

Ein erneuter Test liefert fast ein perfektes Ergebnis:

Um ein A+ zu erreichen ist inzwischen HTTP Strict Transport Security (HSTS) notwendig. Ich habe bis zum Schreiben des Artikels keine Dokumentation gefunden, um diese Technik unter Cockpit zu aktivieren. 🙁 Abhilfe könnte der Einsatz eines Reverse Proxy schaffen. Da die meisten Webserver HSTS unterstützen.

Ein Aufruf der Weboberfläche steht nun nichts mehr im Weg. Die Adresse lautet: https://qfdn:9090.

Falls ihr eine Firewall auf dem Linux Server aktiviert habt, ist natürlich für den Port 9090 noch die entsprechend Access Regel zu konfigurieren.

Viel Spaß beim Ausprobieren. 🙂