Crypto-Policies

RHEL 8+ unterstützt systemweite Crypto-Policies: einmal festgelegt, werden die gewählten Verschlüsselungsalgorithmen, Ciphers, MACs etc. von einer steigenden Zahl an Bibliotheken und damit Programmen verwendet. Die Einrichtung ist zudem denkbar einfach und ohne Spezial-KnowHow mit nur einem Kommando machbar. Damit entfällt in vielen Teilen die unterschiedliche Crypto-Konfiguration einzelner Server-Prozesse. Steigen die Anforderungen an die Sicherheit, bringt ein Kommando das gesamte System auf einen neuen Stand.

Der Befehl dafür lautet update-crypto-policies. Der Befehl generiert Crypto-Policies in /etc/crypto-policies/back-ends, die bereits von folgenden Bibliotheken verwendet werden:

  • BIND

  • GnuTLS library

  • Libkrb5

  • Libreswan

  • NSS library

  • OpenJDK

  • OpenSSH

  • OpenSSL library

Anwendungen und Sprachen, die diese Bibliotheken verwenden, folgen damit automatisch den System-Policies. Beispiele dafür sind Apache httpd, Nginx, PHP und andere.

Tipp

Crypto-Policies für SSH werden durch ein Include-File bereitgestellt - bei der Konfiguration des SSH-Daemons sollte man dies zwecks Anwendungsreihenfolge der Parameter im Hinterkopf behalten.

Unter CentOS 8 sind vier Crypto-Policies definiert:

  • LEGACY: Maximale Kompatibilität zu Altsystemen

  • DEFAULT: Kompromiss zwischen Sicherheit und Kompatibilität

  • FIPS: Compliant zu FIPS140-2

  • FUTURE: Aktuell höchste Sicherheitsstufe, ältere Clients werden sich nicht mehr verbinden können

Diese Policies sind „one-size-fits-all“. Eine feinere Anpassung ist möglich, es lassen sich aber auch eigene Crypto-Policies auf der grünen Wiese erstellen.

Folgende Ciphersuites und Protokolle sind nicht mehr verfügbar:

  • All binary field ECC curves (seit RHEL 6)

  • All ECC curves < 224 bits (seit RHEL 6)

  • All export grade cipher suites (seit RHEL 7)

  • DES (seit RHEL 7)

  • MD5 in signatures (seit RHEL 7)

  • SSLv2 (seit RHEL 7)

  • SSLv3 (seit RHEL 8)

Noch möglich, aber in allen Policies abgeschaltet:

  • DH with parameters < 1024 bits

  • RSA with key size < 1024 bits

  • Camellia

  • ARIA

  • SEED

  • IDEA

  • Integrity-only cipher suites

  • TLS CBC mode cipher suites using SHA-384 HMAC

  • AES-CCM8

  • All ECC curves incompatible with TLS 1.3, including secp256k1

  • IKEv1 (seit RHEL 8)

Siehe auch

Crypto-Policies im Vergleich

LEGACY

DEFAULT

FIPS

FUTURE

3DES

yes

no

no

no

CBC mode ciphers

yes

yes

yes

no

DH

min. 1024-bit

min. 2048-bit

min. 2048-bit

min. 3072-bit

DSA

yes

no

no

no

IKEv1

no

no

no

no

RC4

yes

no

no

no

RSA

min. 1024-bit

min. 2048-bit

min. 2048-bit

min. 3072-bit

SHA-1 and SHA-224 signatures in certificates

yes

yes

yes

no

SHA-1 in digital signatures

yes

yes

no

no

Symmetric ciphers with keys < 256 bits

yes

yes

yes

no

TLS v1.0

yes

no

no

no

TLS v1.1

yes

no

no

no

Crypto-Policy setzen

Welche Crypto-Policy wird gerade verwendet?

update-crypto-policies --show

Crypto-Policy auf FUTURE setzen:

update-crypto-policies --set FUTURE
reboot
update-crypto-policies --show

Crypto-Policy auf FIPS setzen:

fips-mode-setup --enable
# Kernel initramdisks are being regenerated. This might take some time.
reboot
fips-mode-setup --check

Achtung

Das EPEL-Repository funktioniert Stand 2020-12 unter der FUTURE Crypto-Policy nicht. Fehlermeldung: SSL certificate problem: CA certificate key too weak. Das Problem ist, dass RSA-Keys > 3072 Bit verlangt werden. Das Zertifikat auf https://download.fedoraproject.org erfüllt dies, dessen Intermediate-Zertifikate von digicert jedoch nicht (diese sind bei 2048 Bit).

Die einzelnen Crypto-Settings lassen sich in den Policy-Dateien einsehen:

cat /usr/share/crypto-policies/policies/FUTURE.pol

Crypto-Policy anpassen

Erst ab CentOS 8.2 möglich: Um eine bestehende Crypto-Policy anzupassen, müssen sogenannte Modifier-Dateien mit der Endung pmod und grossgeschriebenem Dateinamen (!!) in /etc/crypto-policies/policies/modules abgelegt werden.

Im Beispiel sollen in der DEFAULT-Policy die Key-Exchange-Mechanismen RSA und PSK abgeschaltet werden, da sie keine Perfect-Forward-Secrecy unterstützen. Zusätzlich werden noch weitere Veränderungen an der Crypto-Policy vorgenommen:

/etc/crypto-policies/policies/modules/PFS-KEX.pmod
key_exchange = -RSA -PSK
/etc/crypto-policies/policies/modules/MYCRYPTO1.pmod
sha1_in_certs = 0
min_rsa_size = 3072
/etc/crypto-policies/policies/modules/NO-CAMELLIA.pmod
cipher = -CAMELLIA-256-GCM -CAMELLIA-256-CBC -CAMELLIA-128-GCM -CAMELLIA-128-CBC
update-crypto-policies --show
# DEFAULT
update-crypto-policies --set DEFAULT:PFS-KEX:MYCRYPTO1:NO-CAMELLIA
reboot
update-crypto-policies --show

Tipp

Am nachvollziehbarsten ist es, beispielsweise /usr/share/crypto-policies/policies/FUTURE.pol nach /etc/crypto-policies/policies/modules/LINUXFABRIK-FUTURE.pmod zu kopieren, anzupassen und diese per update-crypto-policies --set FUTURE:LINUXFABRIK-FUTURE zu verwenden.

Built on 2022-06-03