What's the meaning of "SSL Medium/Weak Strength Cipher Suites Supported" reported by a security scanner?
Environment
- Red Hat Enterprise Linux 6
- Red Hat Enterprise Linux 5
- Red Hat Enterprise Linux 4
Issue
- The message "SSL Medium Strength Cipher Suites Supported" was received after executing a security scanner software in the server.
- Nessus 26928 SSL Weak Cipher Suites Supported
- SSL Server Allows Cleartext Communication (NULL Cipher Support)
- We have home-grown java applications running and scans against the server report "SSL Weak Cipher Suites Supported"
- Is SHA256 Hash Algorithm is supported in RHEL 6.5?
Resolution
- During an SSL handshake between a client and a server the cipher to use is negotiated between both of them.
-
To see the ciphers available in your system (with openssl), execute:
# openssl ciphers -v 'ALL:COMPLEMENTOFALL' ADH-AES256-SHA SSLv3 Kx=DH Au=None Enc=AES(256) Mac=SHA1 DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1 DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1 AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1...
-
To avoid the use of medium strength ciphers, it'll be necessary to reconfigure the applications that are using them. Most of the application have a parameter to do that.
-
To know the ciphers that are considered high strenth ciphers (128 bits or more) and with authentication, execute:
# openssl ciphers -v 'TLSv1+HIGH:!aNULL:!eNULL' DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1 DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1 AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1 DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1 DHE-DSS-AES128-SHA SSLv3 Kx=DH Au=DSS Enc=AES(128) Mac=SHA1 AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1 KRB5-DES-CBC3-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=3DES(168) Mac=MD5 KRB5-DES-CBC3-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=3DES(168) Mac=SHA1 EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1 EDH-DSS-DES-CBC3-SHA SSLv3 Kx=DH Au=DSS Enc=3DES(168) Mac=SHA1 DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1
-
These ciphers should be included in the applications that use SSL negotiation to have high strength ciphers.
-
To know the ciphers that are considered high strength ciphers (256 bits or more) and with authentication, execute:
# openssl ciphers -v 'TLSv1.2+HIGH:!aNULL:!eNULL'
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256
DHE-DSS-AES256-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(256) Mac=SHA256
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
- These ciphers should be included in the applications that use SSL negotiation to have high strength ciphers.
Root Cause
-
These consents apply to all servers / services that use OpenSSL as there cryptographic library. The same principal goes for NSS or GNUTLS however you will need to see how those cryptographic libraries label their ciphers as each library classifies cipher strength differently.
- It is because of these differences in classification that you can also end up with discrepancies with scanners. Keep this in mind when looking at what your scanner classifies as a Weak or Low Cipher.
-
In addition to this Apache and JBoss both have instructions for disabling Weak / Low Ciphers in the denoted articles. If your server is not Apache or JBoss look at the diagnostic steps to see how you can identify your server/service that is shown as vulnerable.
Diagnostic Steps
- Check your report for a port number that is exhibiting the vulnerability and match that up to a process:
# netstat -tunap | grep -ie :<PORT> -ie LISTEN
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1979/httpd
- Check that binary that is running for that PID
- You will want to do this to know what service it is you need to edit, to disable the weak ciphers.
# ps -ef | grep <PID> | grep -v grep
<user> 1979 1 0 06:57 ? 00:00:03 /usr/sbin/httpd
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments