Seite wählen

NETWAYS Blog

Canonical schließt Lücken in Ubuntu 18.04 LTS

Common Vulnerabilities and Exposures (CVE) ist ein Industriestandard, dessen Ziel die Einführung einer einheitlichen Namenskonvention für Sicherheitslücken und andere Schwachstellen in Computersystemen ist. Mehrfachbenennung gleicher Gefahren durch verschiedene Unternehmen und Institutionen werden um eine laufende Nummer ergänzt, um eine eindeutige Identifizierung der Schwachstelle zu gewährleisten. Dadurch ist ein reibungsloser Informationsaustausch zwischen den verschiedenen Datenbanken einzelner Hersteller möglich.

Canonical hat ein neues Kernel-Update für Ubuntu 18.04 LTS veröffentlicht, indem Lücken, die im VirtIO-Subsystem und dem ACPI Kernel stecken, gepatcht werden. Eine Lücke in der Speicherinitialisierung (CVE-2018-1118) im VirtIO-Subsystem des Kernels, die nicht immer funktionierte, wurde entfernt. Hier konnte ein Angreifer über einen lokalen Zugriff vertrauliche Informationen erhalten. Die zweite Lücke betrifft das ACPI (Advanced Configuration and Power Interface) des Kernels wodurch auch ein lokaler Angriff Erfolg hätte.
Außerdem gab es mehrere Schwachstellen in der PHP-Komponente FPM und EXIF bei denen Angreifer auch lokal mit speziell präpariertem PHP-Skripten die Vorbereitung von verschiedenen DoS-Angriffen ausführen konnten. Später dann auch aus der Ferne steuerbar. Die Schwachstellen CVE-2018-14851 und CVE-2018-14883 lassen den Angreifer beliebigen Programmcode ausführen. CVE-2015-9253 lassen sich aus der Ferne für DoS-Angriffe auf geteilte PHP-Server ausführen.
Die Updates stehen seit längerem für Ubuntu 18.04 LTS, 16.04 LTS und 14.04 LTS bereit.

Updian 0.4

Wir haben ja schon oft über Updian berichet (hier und da). Und seit Ende Juni gibt es wieder etwas neues von RobHost. Zu dem bisherigen Inhalt gibt es an sich nur kleinere Bugfixes, welche nun auch im Github mit verfolgt werden können.
Aber eine der wohl großen Änderungen ist der anfängliche Support von ‚yum‘ gestützten Systemen wie CentOS. Nun können also auch Administratoren solcher Systeme auf ein schlichtes und zentralen Update-Tool zugreifen.
Sind wir mal gespannt, was sich dann noch so in der Zukunft ergibt.

Debian Web-Updateverwaltung mit Updian

Wer kennt das nicht: Man betreibt viele Server oder virtuelle Maschinen und immer wieder purzeln Updates herein, welche man dann per Hand einspielen darf. Dafür gibt es viele Lösungen, die einem die händische Arbeit abnehmen. Heute möchte ich gern eine auf Debian-Systeme zugeschnittene Variante vorstellen.
Es handelt sich dabei um die Software Updian, ein kleines Tool, welches in PHP geschrieben wurde.
Das Grundprinzip ist schnell erklärt. Updian prüft via SSH die Server, welche es in seiner Liste vorfindet, ob Updates über apt-get verfügbar sind. Dabei wird im Vorfeld die Paketliste aktualisiert. Das Ergebnis wird im Webfrontend dargestellt und man kann selektiv Server zu einer Update-Queue hinzufügen, welche dann abgearbeitet wird. Alle Operationsschritte, also das Sammeln der Informationen, ob Updates verfügbar sind und das Abarbeiten der Queue werden über einen eigenen Cronjob ausgeführt.
Zusätzlich bietet Updian eine „Multi-SSH“ Funktion, welche es erlaubt einen Befehl auf allen Systemen auszuführen.
Wenn der Benutzer es möchte, dann kann Updian auch eine E-Mail versenden, wenn es bei einem Prüfungsdurchlauf feststellt, dass Updates verfügbar sind.
Aber kommen wir nun zur Einrichtung von Updian:
Updian ist recht genügsam und es benötigt lediglich die Pakete php5, php5-cli und einen Webserver, der PHP unterstützt.
root@localhost:~# apt-get install apache2 php5 php5-cli
Die Installation von Updian selbst ist relativ unspektakulär. Auf der Projektseite findet man ein Debian-Paket vor, von dem ich aber auf Grund des Alters abrate (seit 2009 wurden keine Änderungen mehr an der Software getätigt). Statt dessen empfehle ich das .tar.gz-File herunterzuladen und im DocumentRoot vom Apache zu entpacken.
root@localhost:/var/www# wget http://www.robhost.de/updian/updian_v0.2.tar.gz
root@localhost:/var/www# tar xvfz updian_v02.tar.gz

Nach dem Entpacken sollte ein Ordner „updian“ vorhanden sein, indem alle Files liegen. Diesen Ordner sollte man dem Benutzer www-data zuordnen, da Updian in dem Ordner selbst Schreibrechte benötigt.
root@localhost:/var/www# chown -R www-data updian/
Updian bietet eine eigene Konfigurationsdatei (config.php), welche man seinen Wünschen anpassen kann.
Im nächsten Schritt wird ein Benutzer angelegt, welcher die Überprüfung der Systeme durchführt, quasi mit dem der Cronjob ausgeführt wird.
root@localhost:/var/www# adduser updian
Lege Benutzer »updian« an ...
.
.
Geben Sie ein neues UNIX-Passwort ein:
.
.
root@localhost:/var/www#

Anschließend benötigen wir einen SSH-Key, den wir auf den Systemen verteilen können, damit sich Updian ohne Passwortabfrage verbinden kann. Bei der Frage nach einem Kennwort oder Passphrase bitte nur die Entertaste drücken, da wir diesen nicht gebrauchen können.

root@localhost:/var/www# su - updian
updian@localhost:~# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/updian/.ssh/id_dsa): [ENTER]
Created directory '/home/updian/.ssh'.
Enter passphrase (empty for no passphrase): [ENTER]
Enter same passphrase again: [ENTER]
Your identification has been saved in /home/updian/.ssh/id_dsa.
Your public key has been saved in /home/updian/.ssh/id_dsa.pub.
The key fingerprint is:
00:00:00:00:00:01:00:10:00:00:00:a0:00:00:00:00 updian@localhost
The key's randomart image is:
+--[ DSA 1024]----+
| ..oooEoo|

Damit unsere Systeme den Key auch kennen, muss er noch kopiert werden. Dies geht am Besten auf folgendem Wege:
updian@localhost:~# ssh-copy-id -i ~/.ssh/id_dsa.pub root@remoteserver

Damit regelämßig die Queue abgearbeitet wird und die Überprüfung auf Updates statt findet, müssen noch die entsprechenden Cronjobs angelegt werden. Hierbei empfiehlt es sich die datei /etc/crontab zu bearbeiten und folgende Zeilen hinzuzufügen:
0 8 * * * updian php /var/www/updian/cron_collect.php > /dev/null 2>&1
0 9 * * * updian php /var/www/updian/cron_updates.php > /dev/null 2>&1

In dem genutzten Beispiel wird täglich um 8 Uhr überprüft, ob Updates vorhanden sind und täglich 9 Uhr die Queue abgearbeitet.
Jetzt kann man Updian bekannt geben, welche Server es überprüfen soll. Das geht ganz einfach über das Web-GUI unter dem Punkt „Servers“, dazu ein Bild:

Nun überprüft Updian im festgelegten Intervall (Cronjob) ob Updates verfügbar sind und benachrichtigt einen, sofern man dies auch eingestellt hat.
Wenn Updian feststellt, dass es Updates hat, so zeigt es das in der Startseite „Home“ an, wo man auch die Möglichkeit hat, einzelne oder alle Server zur Update-Queue hinzuzufügen. Mit einem Klick auf den Servernamen kann man einsehen welche Pakete in einer neuen Version vorliegen.

Ein wichtiger Hinweis noch zum Schluss! Der Entwickler stuft Updian noch als Beta ein und weist auch darauf explizit hin. Bisher konnten wir im alltäglichen Betrieb keine Fehler erkennen und es hat sich in der Praxis bei vielen Systemen bewährt.