Inhaltsverzeichnis
Virtualisierung Entropien
Ein Computer erzeugt Zufallszahlen entweder mit einer entsprechenden Hardwarelösung oder über „zufällige“ Ereignisse wie Interrupts z.B. weil der Mauszeiger sich bewegt hat.
Zufallszahlen werden verbraucht, wenn z.B. Kryptographie-Schlüssel erzeugt werden. Inzwischen verbraucht aber auch jeder Prozeßstart Eintropien, weil aus /dev/random gelesen wird und so Entropien verbraucht werden.
Speziell auf virtuellen Maschinen steht oft nicht genügend Entropie bereit, um beim Thema Kryptographie z.B. effizient Schlüssel in kurzer Zeit zu generieren.
Nachfolgender Befehl gibt die aktuell verfügbaren Entropien aus:
# cat /proc/sys/kernel/random/entropy_avail 183
HINWEIS - Ein Wert zwischen 0 und 200 ist bedenklich!
Abhilfe kann hier der Dienst/Daemon haveged (HArdware Volatile Entropy Gathering and Expansion Daemon) schaffen, de er dieses Problem löst, indem er Zufallszahlen tatsächlich unvorhersehbar, zufällig produziert und nicht vorhersehbar zufällig wie unter /dev/urandom
.
haveged läuft als Dienst/Daemon und überwacht die verfügbare Anzahl von Zufalls-Bits. Wird ein eingestellter Schwellwert unterschritten, erzeugt haveged neue Zufalls-Bits. Der Zugewinn durch die höhere Entropie überwiegt bei weitem die Last, die haveged zusätzlich auf das System bringt.
Ab hier werden zur Ausführung nachfolgender Befehle root
-Rechte benötigt. Um der Benutzer root
zu werden, melden Sie sich bitte als root
-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root
:
$ su - Password:
Herunterladen
Nachfolgend soll das Drittanbieter-Repository EPEL, wie unter nachfolgendem internen Link dargestellt, eingebunden werden:
Installation
Nachfolgendes rpm
-Paket ist zur Installation erforderlich:
Die Installation von haveged
, kann durch ausführen des nachfolgenden Befehls durchgeführt werden:
# yum install haveged Loaded plugins: changelog, priorities base | 3.6 kB 00:00 epel | 4.3 kB 00:00 extras | 3.4 kB 00:00 icinga-stable-release | 2.5 kB 00:00 updates | 3.4 kB 00:00 125 packages excluded due to repository priority protections Resolving Dependencies --> Running transaction check ---> Package haveged.x86_64 0:1.9.1-1.el7 will be installed --> Finished Dependency Resolution Changes in packages about to be updated: Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: haveged x86_64 1.9.1-1.el7 epel 61 k Transaction Summary ================================================================================ Install 1 Package Total download size: 61 k Installed size: 181 k Is this ok [y/d/N]: y Downloading packages: haveged-1.9.1-1.el7.x86_64.rpm | 61 kB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : haveged-1.9.1-1.el7.x86_64 1/1 Verifying : haveged-1.9.1-1.el7.x86_64 1/1 Installed: haveged.x86_64 0:1.9.1-1.el7 Complete!
Die Installation von haveged
, kann durch ausführen des nachfolgenden Befehls durchgeführt werden:
# rpm -qil haveged Name : haveged Version : 1.9.1 Release : 1.el7 Architecture: x86_64 Install Date: Thu 10 Nov 2016 04:25:21 PM CET Group : System Environment/Daemons Size : 185694 License : GPLv3+ Signature : RSA/SHA256, Thu 20 Feb 2014 04:41:19 AM CET, Key ID 6a2faea2352c64e5 Source RPM : haveged-1.9.1-1.el7.src.rpm Build Date : Thu 20 Feb 2014 01:12:49 AM CET Build Host : buildvm-25.phx2.fedoraproject.org Relocations : (not relocatable) Packager : Fedora Project Vendor : Fedora Project URL : http://www.irisa.fr/caps/projects/hipsor/ Summary : A Linux entropy source using the HAVEGE algorithm Description : A Linux entropy source using the HAVEGE algorithm Haveged is a user space entropy daemon which is not dependent upon the standard mechanisms for harvesting randomness for the system entropy pool. This is important in systems with high entropy needs or limited user interaction (e.g. headless servers). Haveged uses HAVEGE (HArdware Volatile Entropy Gathering and Expansion) to maintain a 1M pool of random bytes used to fill /dev/random whenever the supply of random bits in /dev/random falls below the low water mark of the device. The principle inputs to haveged are the sizes of the processor instruction and data caches used to setup the HAVEGE collector. The haveged default is a 4kb data cache and a 16kb instruction cache. On machines with a cpuid instruction, haveged will attempt to select appropriate values from internal tables. /usr/lib/systemd/system/haveged.service /usr/lib64/libhavege.so.1 /usr/lib64/libhavege.so.1.1.0 /usr/sbin/haveged /usr/share/doc/haveged /usr/share/doc/haveged/AUTHORS /usr/share/doc/haveged/COPYING /usr/share/doc/haveged/ChangeLog /usr/share/doc/haveged/README /usr/share/doc/haveged/havege_sample.c /usr/share/man/man8/haveged.8.gz
haveged Dienst/Daemon-Start einrichten
Um den haveged der als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:
# systemctl enable haveged Created symlink from /etc/systemd/system/multi-user.target.wants/haveged.service to /usr/lib/systemd/system /haveged.service.
Eine Überprüfung, ob beim Neustart des Server der haveged
-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:
# systemctl list-unit-files --type=service | grep -e haveged haveged.service enabled
bzw.
# systemctl is-enabled haveged enabled
Erster Start haveged
Um den haveged zu starten kann nachfolgender Befehl angewandt werden:
# systemctl start haveged
Eine Überprüfung ob der Start des haveged erfolgreich war kann mit nachfolgendem Befehl durchgeführt werden, welcher eine Ausgabe in etwa wie nachfolgende erzeugen sollte:
# systemctl status haveged ● haveged.service - Entropy Daemon based on the HAVEGE algorithm Loaded: loaded (/usr/lib/systemd/system/haveged.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2016-11-10 16:27:25 CET; 5s ago Docs: man:haveged(8) http://www.issihosts.com/haveged/ Main PID: 4400 (haveged) CGroup: /system.slice/haveged.service └─4400 /usr/sbin/haveged -w 1024 -v 1 --Foreground Nov 10 16:27:25 server20.idmz.tachtler.net systemd[1]: Started Entropy Daemon... Nov 10 16:27:25 server20.idmz.tachtler.net systemd[1]: Starting Entropy Daemo... Nov 10 16:27:26 server20.idmz.tachtler.net haveged[4400]: haveged: ver: 1.9.1... Nov 10 16:27:26 server20.idmz.tachtler.net haveged[4400]: haveged: cpu: (VC);... Nov 10 16:27:26 server20.idmz.tachtler.net haveged[4400]: haveged: tot tests(... Nov 10 16:27:26 server20.idmz.tachtler.net haveged[4400]: haveged: fills: 0, ... Hint: Some lines were ellipsized, use -l to show in full.
bzw. mit nachfolgendem Befehl, ob der Dienst/Daemon in der Prozessliste erscheint:
# ps aux | grep haveged root 4400 0.8 0.3 12288 3860 ? Ss 16:27 0:00 /usr/sbin/haveged -w 1024 -v 1 --Foreground root 4492 0.0 0.0 112648 932 pts/0 R+ 16:28 0:00 grep --color=auto haveged
Überprüfung Entropien
Vor der Installation von haveged konnte folgendes Ergebnis bei der Ermittlung der Entropien erzielt werden.
Nachfolgender Befehl gibt die aktuell verfügbaren Entropien VOR der Instalaltion von haveged aus:
# cat /proc/sys/kernel/random/entropy_avail 183
HINWEIS - Ein Wert zwischen 0 und 200 ist bedenklich!
Nachfolgender Befehl gibt die aktuell verfügbaren Entropien NACH der Instalaltion von haveged aus:
# cat /proc/sys/kernel/random/entropy_avail 2263