openssl + hardware aes + debian wheezy
Dank „Hearthbleed“ musste ich mich mal wieder mit openssl und zwangsläufig allen davon abhängigen Diensten beschäftigen. Dabei ist mir eingefallen, dass es doch CPU Erweiterungen gibt, die HardwareAES unterstützen *freu*. Direkt mal mittels
openssl engine
geprüft, was so geht und das Ergebnis war ernüchternd:
(rsax) RSAX engine support (dynamic) Dynamic engine loading support
Cryptodev installieren
Ein wenig suchen im Netz hat mich auf cryptodev-linux.org geführt. Also flink mittels
git clone https://github.com/cryptodev-linux/cryptodev-linux.git
eine kopie gezogen 🙂 Die Installation ist wirklich SEHR einfach:
cd cryptodev-linux make make install echo "cryptodev" >> /etc/modules modprobe cryptodev
Fertig. Das alleine reicht leider nicht ! Nun sollte zwar unter /dev/crypto ein Device vorhanden sein, jedoch wird openSSL (und openVPN, etc) damit nix anfangen können, was also tun? OpenSSL selbst kompilieren !
openSSL + cryptodev
Schritt für Schritt:
apt-get update apt-get upgrade #openssl sollte auf dem aktuellen Stand sein, damit die Lücke an sich zu ist ! apt-get source openssl cd openssl-<version> vi debian/rules
dort bei CONFARGS hinten -DHAVE_CRYPTODEV ranhängen 🙂
Nun das Paket bauen:
dpkg-buildpackage -us -uc
Warnungen bitte beachten und fehlende Pakete nachinstallieren !
Wenn alles glatt lief, liegen ein Verzeichnis drüber nun ein paar .deb files, diese ALLE installieren.
dpkg -i ../*.deb
Bitte beachten: Dienste die openSSL verwenden (apache, postfix, openvpn, ….) müssen NEUGESTARTET werden.
FERTIG!
Ein
openssl engine
sollte nun
(cryptodev) BSD cryptodev engine (rsax) RSAX engine support (dynamic) Dynamic engine loading support
anzeigen.
Diese Engine kann nun auch unter openvpn (in der serverconf engine cryptodev reinschreiben) genutzt werden, was die CPU Last deutlich verringert, bzw schnelleren Datendurchsatz ermöglicht (aes-256-cbc -> 2.2 Sekunden Original, nach HardwareAES Patch 0.14 Sekunden!!!)
Optional:
Euch wird bei einem apt-get upgrade auffallen, dass Debian unbedingt die selbst gebauten Pakete „aktualisieren“ will, das kann man verhindern in dem man für jedes Paket folgendes Kommando als root eingibt:
echo "<paketname> hold" | dpkg --set-selections
Filed under: Debian,Linux - @ 10. April 2014 17:02
Schlagwörter: debian, hearthbleed, linux, openssl, openvpn, ssl, vpn, wheezy
Danke für das nette Tutorial. Unter dem aktuellen Debian Wheezy (Stand: 01.07.15) lässt sich das Kernelmodul aus dem git-Repository nur mit Warnungen übersetzen und das Modul wirft beim starten die Meldung (dmesg | tail)
cryptodev: Unknown symbol alloc_fd (err 0). Mit der Modulversion funktioniert es noch.
Danke für den Hinweis. Da ich selbst das Modul nicht mehr verwende, kann das tatsächlich der Fall sein. Eine Kurze Recherche ergibt aber (steinigt mich wenn ich falsch liege), dass diese Warnung die Funktion nicht beeinträchtigt, sondern ein Hinweis der Kerneldevs ist, alloc_fd nicht mehr zu nutzen. Falls es wirklich nicht mehr funktioniert, muss ich mir mal Gedanken machen (Zumindest für jessie)