6.8. Déployer un VPN IPsec conforme aux normes FIPS
Utilisez cette procédure pour déployer une solution VPN IPsec conforme aux normes FIPS basée sur Libreswan. Les étapes suivantes vous permettent également d'identifier les algorithmes cryptographiques disponibles et ceux qui sont désactivés pour Libreswan en mode FIPS.
Conditions préalables
-
Le référentiel
AppStream
est activé.
Procédure
Installez les paquets
libreswan
:# dnf install libreswan
Si vous réinstallez Libreswan, supprimez son ancienne base de données NSS :
# systemctl stop ipsec # rm /var/lib/ipsec/nss/*db
Démarrez le service
ipsec
et activez le service pour qu'il soit démarré automatiquement au démarrage :# systemctl enable ipsec --now
Configurez le pare-feu pour qu'il autorise les ports 500 et 4500/UDP pour les protocoles IKE, ESP et AH en ajoutant le service
ipsec
:# firewall-cmd --add-service="ipsec" # firewall-cmd --runtime-to-permanent
Passer le système en mode FIPS :
# fips-mode-setup --enable
Redémarrez votre système pour permettre au noyau de passer en mode FIPS :
# reboot
Vérification
Pour confirmer que Libreswan fonctionne en mode FIPS :
# ipsec whack --fipsstatus 000 FIPS mode enabled
Il est également possible de vérifier les entrées de l'unité
ipsec
dans le journalsystemd
:$ journalctl -u ipsec ... Jan 22 11:26:50 localhost.localdomain pluto[3076]: FIPS Mode: YES
Pour connaître les algorithmes disponibles en mode FIPS :
# ipsec pluto --selftest 2>&1 | head -6 Initializing NSS using read-write database "sql:/var/lib/ipsec/nss" FIPS Mode: YES NSS crypto library initialized FIPS mode enabled for pluto daemon NSS library is running in FIPS mode FIPS HMAC integrity support [disabled]
Pour interroger les algorithmes désactivés en mode FIPS :
# ipsec pluto --selftest 2>&1 | grep disabled Encryption algorithm CAMELLIA_CTR disabled; not FIPS compliant Encryption algorithm CAMELLIA_CBC disabled; not FIPS compliant Encryption algorithm NULL disabled; not FIPS compliant Encryption algorithm CHACHA20_POLY1305 disabled; not FIPS compliant Hash algorithm MD5 disabled; not FIPS compliant PRF algorithm HMAC_MD5 disabled; not FIPS compliant PRF algorithm AES_XCBC disabled; not FIPS compliant Integrity algorithm HMAC_MD5_96 disabled; not FIPS compliant Integrity algorithm HMAC_SHA2_256_TRUNCBUG disabled; not FIPS compliant Integrity algorithm AES_XCBC_96 disabled; not FIPS compliant DH algorithm MODP1536 disabled; not FIPS compliant DH algorithm DH31 disabled; not FIPS compliant
Pour dresser la liste de tous les algorithmes et chiffrements autorisés en mode FIPS :
# ipsec pluto --selftest 2>&1 | grep ESP | grep FIPS | sed "s/^.*FIPS//" aes_ccm, aes_ccm_c aes_ccm_b aes_ccm_a NSS(CBC) 3des NSS(GCM) aes_gcm, aes_gcm_c NSS(GCM) aes_gcm_b NSS(GCM) aes_gcm_a NSS(CTR) aesctr NSS(CBC) aes aes_gmac NSS sha, sha1, sha1_96, hmac_sha1 NSS sha512, sha2_512, sha2_512_256, hmac_sha2_512 NSS sha384, sha2_384, sha2_384_192, hmac_sha2_384 NSS sha2, sha256, sha2_256, sha2_256_128, hmac_sha2_256 aes_cmac null NSS(MODP) null, dh0 NSS(MODP) dh14 NSS(MODP) dh15 NSS(MODP) dh16 NSS(MODP) dh17 NSS(MODP) dh18 NSS(ECP) ecp_256, ecp256 NSS(ECP) ecp_384, ecp384 NSS(ECP) ecp_521, ecp521
Ressources supplémentaires