Apache HTTP Server
TMA-APACHE-7.12
Ensure Only Cipher Suites That Provide Forward Secrecy Are Enabled
Description
In cryptography, forward secrecy (FS), which is also known as perfect forward secrecy (PFS), is a feature of specific key exchange protocols that give assurance that your session keys will not be compromised even if the private key of the server is compromised. The effective SSLCipherSuite (last one at server level and in each virtual host) is expanded with the local openssl ciphers -v; every TLS 1.2-and-older suite must use ephemeral key exchange (Kx=ECDH or DH). Fails when no SSLCipherSuite is configured. Reads the main configuration (APACHE_CONF overrides; default /etc/apache2/apache2.conf, /etc/httpd/conf/httpd.conf or /usr/local/apache2/conf/httpd.conf) and every Include/IncludeOptional file. CIS marks this recommendation Manual; the automated check implements its audit procedure.
Méthode de vérification
Méthode d'audit: Commande shell
c=${APACHE_CONF:-}; if [ -z "$c" ]; then for f in /etc/apache2/apache2.conf /etc/httpd/conf/httpd.conf /usr/local/apache2/conf/httpd.conf /etc/apache2/httpd.conf; do [ -f "$f" ] && { c=$f; break; }; done; fi; [ -r "$c" ] || exit 1; R=$(awk 'tolower($1)=="serverroot"{v=$2; gsub(/"/,"",v); print v; exit}' "$c"); [ -n "$R" ] || R=$(dirname "$c"); shopt -s nocasematch; inc(){ local p g l; [ ${#FUNCNAME[@]} -lt 16 ] || return 0; p=$1; case $p in /*) ;; *) p=$R/$p;; esac; [ -d "$p" ] && p="$p/*"; for g in $p; do [ -f "$g" ] || continue; while IFS= read -r l || [ -n "$l" ]; do if [[ $l =~ ^[[:space:]]*include(optional)?[[:space:]]+\"?([^\"[:space:]]+) ]]; then inc "${BASH_REMATCH[2]}"; else printf '%s\n' "$l"; fi; done < "$g"; done; }; cfg=$(inc "$c" | sed -e 's/^[[:space:]]*//' -e '/^#/d' -e '/^$/d'); shopt -u nocasematch; eff(){ printf '%s\n' "$cfg" | awk -v k="$1" '{l=tolower($0)} l~/^<virtualhost/{vh=1; next} l~/^<\/virtualhost>/{if(v!="") print v; v=""; vh=0; next} tolower($1)==tolower(k){if(vh) v=$0; else g=$0} END{if(g!="") print g}'; }; s=$(eff SSLCipherSuite | awk 'tolower($1)=="sslciphersuite"{v=(NF>=3 && ($2=="SSL"||$2=="TLSv1.3"))?$3:$2; if(NF>=3 && $2=="TLSv1.3") next; gsub(/"/,"",v); print v}'); [ -n "$s" ] || { echo noncompliant; exit 0; }; command -v openssl >/dev/null || exit 1; bad=0; while IFS= read -r v; do o=$(openssl ciphers -v "$v" 2>/dev/null) || { bad=1; continue; }; printf '%s\n' "$o" | awk '$2!="TLSv1.3" && $3!~/^Kx=(ECDH|DH)$/' | grep -q . && bad=1; done <<< "$s"; [ "$bad" = 0 ] && echo compliant || echo noncompliant- Sortie attendue
compliant
Méthode de correction
Méthode de correction: Recommandation ou correctif d'infrastructure
SSLCipherSuite EECDH:EDH:!NULL:!SSLv2:!RC4:!aNULL:!3DES:!IDEA (at server level and in each TLS virtual host). Then run apachectl configtest and reload Apache.
Propriétés
- Systèmes d'exploitation
- Tous
- Étiquettes
- apachetls
- Référence
- CIS Apache HTTP Server 2.4 Benchmark v2.4.0 - 7.12 Ensure Only Cipher Suites That Provide Forward Secrecy Are Enabled
Vérifier cet hôte
Exécutez cette commande sur une machine que vous êtes autorisé à auditer. L'analyse est en lecture seule.
tmaegis scan --target apache --level 2