POODLE: Der Pudel - und wie man ihn los wird
Seit einigen Tagen kursiert unter dem Namen POODLE eine weitere Sicherheitslücke im Internet, die vor allem Linux-Systeme betrifft. Wesentlich ungefährlicher als Heartbleed betrifft sie vor allem Web-Server, die die altertümlichen SSL-Generationen 2 und 3 zulassen. Aufgrund gravierender Sicherheitslücken dieser Protokolle ist es möglich den Datenverkehr zu entschlüsseln. Bei vielen Linux-Distributionen ist dies in der Standard-Konfiguration derzeit noch der Fall, weswegen Administratoren ihre Webserver absichern sollten. POODLE hat mittlerweile das CVE 2014-3566 erhalten, entdeckt wurde die Sicherheitslücke durch Google. Um einen Webserver abzusichern genügt es die älteren Protokoll-Generationen zu deaktivieren. Bei Apache ist dies in der entsprechenden Konfiurationsdatei recht einfach zu bewerkstelligen:
1#SSLProtocol All
2SSLProtocol All -SSLv2 -SSLv3
Diese Direktive aktiviert alle SSL-Protokollversionen unter Ausschluss der 2. und 3.Generation.
Poodle Protector
Wenn man jedoch eine große Anzahl an Systemen verwaltet, bedeutet die manuelle Konfiguration der einzelnen Systeme unnötigen Mehraufwand, den man auch geschickt automatisieren kann. Da ich ein fauler Mensch bin, habe ich mir ein Skript programmiert, was automatisiert Apache-Konfigurationsdateien analysiert und anpasst, sofern der Indianer anfällig für die POODLE-Attacke ist. Das Skript (poodle_protector
) ist auf GitHub zu finden: [klick mich!]
Das Skript kann auf Wunsch sogar den entsprechenden Dienst neustarten, was den Einsatz über ein zentrales Configuration Management (wie z. B. Red Hat Satellite, Spacewalk oder SUSE Manager) besonders komfortabel gestaltet.
Der folgende Aufruf analysiert das System und simuliert, welche Änderungen vorgenommen werden würden (dry-run):
1# ./poodle_protector.py -l
2I'd like to create a backup of '/etc/apache2/mods-available/ssl.conf as '/etc/apache2/mods-available/ssl.conf.20141016-1303' ...
3I'd like to insert 'SSLProtocol All -SSLv2 -SSLv3' into /etc/apache2/mods-available/ssl.conf using the following command: sed -i '/SSLProtocol/ cSSLProtocol All -SSLv2 -SSLv3' /etc/apache2/mods-available/ssl.conf ...
4I'd also like to restart the service using: ['service httpd restart', 'service apache2 restart']
Der nächste Aufruf nimmt Änderungen an der Konfiguration vor (es werden vorher Sicherungen angelegt) und startet den Apache-Dienst neu:
1# ./poodle_protector.py -r
2httpd: unrecognized service
3Restarting web server: apache2 ... waiting .
In diesem Beispiel wurde ein Debian-System verwendet, weswegen der httpd
-Dienst nicht gefunden werden kann.