CentOS 6.9サーバーの脆弱性スキャンに合格しようとしています。私が解決しようとしている最後の問題は、古いSSLプロトコルの使用に関連しています。 ssl.confで次の行を使用しようとすると
SSLProtocol -all +TLSv1.1
そしてconfigestを実行します
service httpd24-httpd configtest
エラーが表示されます
SSLProtocol: Illegal protocol 'TLSv1.1'
これをOpenSSLの古いバージョンに絞り込んだ。このプロセスを始めたとき、私はバージョンOpenSSL 1.0.1e-fips 11 Feb 2013
そして、次の手順に従って、それをより新しいバージョンに更新しました: http://www.ehowstuff.com/how-to-install-and-update-openssl-on-centos-6- centos-7 /
バージョンを確認すると、OpenSSL 1.0.2l 25 May 2017
ただし、configtestでも同じエラーが発生します。この時点で、Apacheのmod_ssl.soファイルをアップグレードする必要があると考えていますが、次のステップに途方に暮れています(この時点では少し深みがありません)。 httpd24をパッケージとしてダウンロードしたので、コンパイルする必要はなく、次にどこへ行くかわかりません。私が理解している限り、Apacheを再コンパイルせずに新しいmod_ssl.soを含めることは可能ですが、実際にはどうすればよいかわかりません。
あなたは単にSSLモジュールを有効にするのを忘れたかもしれません、あなたは最初に(ルートとしてまたはSudo
で)確認する必要があります:
a2enmod ssl
次に、Apache2 Webサーバーを再起動してみてください。
SSL 1.0、2.0、3.0( wikipedia )これらは、OpenSSLの最近のバージョンではサポートされなくなりました。
このバージョンのTLSは1999年のものです。無効にすることをお勧めします。
このバージョンのTLSは2006年のものであり、現在(2019)のOS /ソフトウェアが明示的にそれに依存しているものはありません。無効にすることをお勧めします。
DigiCert artile の1.2より前のバージョンの非推奨について読むことをお勧めします。抜粋は次のとおりです。
古いプロトコルはセキュリティリスクですインターネット上のTLS 1.0および1.1の存在は、主にセキュリティリスクとして機能します。これらのプロトコルは、ほぼすべてのサーバーでサポートされています。しかし、クライアントによるそれらの使用は逆に近いです。これらのバージョンを使用する必要があるクライアントは、欠点に悩まされています。インターネットの残りの部分はダウングレード攻撃に対して脆弱であり(これにより、ユーザーはTLSのより弱いバージョンに強制され、既知の脆弱性が悪用されます)、実用的なメリットはほとんどありません。これらのサーバーのほとんどでは、古いバージョンのTLSが「念のため」に残されているか、新しいバージョンをオンにするときに誰かがオフにするのを忘れていました。
それが2008年に定義されたとしても、2019年には互換性の理由から必要になります。
これは何年にもわたってプロトコルが大幅にアップグレードされた後です。有効にできる場合は、すでに有効にしてください。
<IfModule mod_ssl.c>
## Pseudo Random Number Generator (PRNG):
## Configure one or more sources to seed the PRNG of the SSL library.
## The seed data should be of good random quality.
## WARNING! On some platforms /dev/random blocks if not enough entropy
## is available. This means you then cannot use the /dev/random device
## because it would lead to very long connection times (as long as
## it requires to make more entropy available). But usually those
## platforms additionally provide a /dev/urandom device which doesn't
## block. So, if available, use this one instead. Read the mod_ssl User
## Manual for more details.
# I changed the default values of 512 to 1024
SSLRandomSeed startup builtin
SSLRandomSeed startup file:/dev/urandom 1024
SSLRandomSeed connect builtin
SSLRandomSeed connect file:/dev/urandom 1024
## Some MIME-types for downloading Certificates and CRLs
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
## Pass Phrase Dialog:
## Configure the pass phrase gathering process.
## The filtering dialog program (`builtin' is a internal
## terminal dialog) has to provide the pass phrase on stdout.
SSLPassPhraseDialog exec:/usr/share/Apache2/ask-for-passphrase
## Inter-Process Session Cache:
## Configure the SSL Session Cache: First the mechanism
## to use and second the expiring timeout (in seconds).
## (The mechanism dbm has known memory leaks and should not be used).
# I changed the default timeout of 300 to 600
SSLSessionCache shmcb:${Apache_RUN_DIR}/ssl_scache(512000)
SSLSessionCacheTimeout 600
## Disabling SSLSessionTickets ensures Perfect Forward Secrecy
## is not compromised if the server is not restarted regularly
# I changed the default value as I won't restart the webserver
SSLSessionTickets Off
## Semaphore:
## Configure the path to the mutual exclusion semaphore the
## SSL engine uses internally for inter-process synchronization.
## (Disabled by default, the global Mutex directive consolidates by default this)
#Mutex file:${Apache_LOCK_DIR}/ssl_mutex ssl-cache
## The protocols to enable:
## Available values: all, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3
## SSLv2 and SSLv3 are no longer supported
# I prefer the latest TLSv1.3 and TLSv1.2 for compatibility reasons
# TLSv1 / TLSv1.1 are 20 / 13 years old, so decided to disable them
SSLProtocol -all +TLSv1.3 +TLSv1.2
# Enabling compression causes security issues in most setups (the so called CRIME attack).
SSLCompression Off
## SSL server cipher order preference:
## Use server priorities for cipher algorithm choice.
## Clients may prefer lower grade encryption. You should enable this
## option if you want to enforce stronger encryption, and can afford
## the CPU cost, and did not override SSLCipherSuite
## in a way that puts insecure ciphers first.
# I changed the default value because:
# - I can afford the extra CPU costs
# - I want to force the clients to honor my cipher preferences
SSLHonorCipherOrder On
## SSL Cipher Suites:
## List the ciphers that the client is permitted to negotiate. See the
## ciphers(1) man page from the openssl package for list of all available options.
# I can always run `openssl ciphers` to find all currently available ciphers
# As for TLSv1.3 the TLS_AES_128_GCM_SHA256 is mandatory as per RFC 8446:
# https://tools.ietf.org/html/rfc8446#section-9
SSLCipherSuite TLSv1.3 TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256
SSLCipherSuite SSL ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256
## Don't allow insecure renegotiation with clients which
## do not yet support the secure renegotiation protocol.
SSLInsecureRenegotiation Off
## Forbid non-SNI clients to access name based virtual hosts
# I changed the default value as I want to
# reject all of the old / archaic clients
SSLStrictSNIVHostCheck On
# Allow these elliptic curves and prefer the safe X25519 for TLSv1.3
SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
# Enable OSCP Stapling cache
SSLStaplingCache shmcb:${Apache_RUN_DIR}/ssl_stapling_cache(128000)
</IfModule>
以下のように、最新のCPU AES命令セット によって大幅に高速化されるためです。
ちょうど今同じ問題がありました。いくつかのサーバーの違いを比較すると、問題のあるサーバーにはmod_sslがインストールされていないことがわかりました。
yum install mod_ssl
この問題を修正しました。