- 1. 概要
— 1.1. 3DES, RC4 の暗号アルゴリズムを無効化
— 1.2. 今回のポイント - 2. Apache の暗号アルゴリズムを無効化する手順
- 3. SSL Server Test による外部からのアクセステスト
— 3.1. SSL Server Test 使用方法
— 3.2. 3DES, RC4 の暗号アルゴリズムが有効な場合の結果
— 3.3. 3DES, RC4 の暗号アルゴリズムが無効な場合の結果 - 4. openssl s_clientコマンドによるアクセステスト
— 4.1. 3DES, RC4 の暗号アルゴリズムが有効な場合の結果
— 4.2. 3DES, RC4 の暗号アルゴリズムが無効な場合の結果
概要
- 今回は、Apacheの脆弱性対策です。Apacheを使用したWebサーバーにおいて、特定の暗号アルゴリズムを無効化する方法を説明します。
3DES, RC4 の暗号アルゴリズムを無効化
- 3DES, RC4 の2つを例に暗号アルゴリズムの無効化を説明します。なお、3DES, RC4 の暗号アルゴリズムは、下記理由で無効化すべきかと判断しました。
- RC4: 暗号化に利用する疑似乱数が偏向することがあり、解読が容易と言われています。
- 3DES: 脆弱性が見つかり、米国立標準技術研究所(NIST)が2023年以降の使用禁止を提案しています。
今回のポイント
- 3DES, RC4 の暗号アルゴリズムを無効化する前と、無効化した後に、Webサーバーに対するSSLアクセスのテストを行います。
- SSLアクセスのテストは、2種類実施しています。テスト対象のWebサーバーに外部からアクセス可の場合は、SSL Server Test のサービスを使用します。
- もし、テスト対象のWebサーバーに外部からアクセス不可 or 自己署名証明書を使用している等の場合は、openssl s_clientコマンドを使用します。
Apache の暗号アルゴリズムを無効化する手順
- viでhttpdの ssl.confを編集して、特定の暗号アルゴリズムを無効化します。conf の”SSL Cipher Suite” に暗号アルゴリズムを指定します。
- 具体的には「!」で無効化する暗号アルゴリズムを列挙します。下記指定の場合、HIGH,MEDIUM に該当する暗号アルゴリズムを有効化し、aNULL,MD5 に該当する暗号アルゴリズムを無効化しています。
- HIGH: サイズが128ビットを超える暗号鍵を使用したすべての暗号(AESやCamelliaなど)
- MEDIUM: 128ビット暗号化を使用したすべての暗号(3DES、RC4やSEEDなど)
- aNULL: 通信開始時にサーバの認証をしない暗号
- MD5: メッセージ認証符号にMD5を使用する暗号
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
- 今回は、3DES, RC4 の暗号アルゴリズムを無効化するため、httpdの ssl.conf に下記設定を行います。
# SSL Cipher Suite: # List the ciphers that the client is permitted to negotiate. # See the mod_ssl documentation for a complete list. SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!3DES:!RC4
- httpdサービスを再起動します。
[ec2-user@ip-XX-XX-XX-XX conf.d]$ sudo httpd -t Syntax OK [ec2-user@ip-XX-XX-XX-XX conf.d]$ sudo systemctl restart httpd.service [ec2-user@ip-XX-XX-XX-XX conf.d]$ sudo systemctl status httpd.service
SSL Server Test による外部からのアクセステスト
SSL Server Test 使用方法
- SSL Server Test はセキュリティの脆弱性診断に使用できる便利なテストツールですが、外部からのhttpsアクセスができない環境や自己署名証明書を利用する構成では使用できません。その場合は、次に紹介するopenssl s_clientコマンドによるアクセステストをご使用ください。
- 下記にアクセスして、Hostname にテスト対象のFQDN を入力します。”Do not show the results on the boards” をチェックし、[Submit]を押下します。
3DES, RC4 の暗号アルゴリズムが有効な場合の結果
- 下記は、3DES, RC4 の暗号アルゴリズムを無効化する前にSSL Server Test によるテストを実行した結果です。
- 3DES の暗号アルゴリズムを使った暗号スイートが“WEAK", RC4 の暗号アルゴリズムを使った暗号スイートが“INSECURE" として報告されていますね。
- 下記は、Protocol Details の結果です。
3DES, RC4 の暗号アルゴリズムが無効な場合の結果
- 下記は、3DES, RC4 の暗号アルゴリズムを無効化した後にSSL Server Test によるテストを実行した結果です。
- 3DES およびRC4 の暗号アルゴリズムを使った暗号スイートは、どちらも報告に表示されていません。
下記は、Protocol Details の結果です。
openssl s_clientコマンドによるアクセステスト
3DES, RC4 の暗号アルゴリズムが有効な場合の結果
- 下記のopenssl s_clientコマンドを使用します。
openssl s_client -connect <FQDN>:443 -cipher DES-CBC3-SHA < /dev/null
openssl s_client -connect <FQDN>:443 -cipher RC4-SHA < /dev/null
- 下記は、3DES, RC4 の暗号アルゴリズムを無効化する前にopenssl s_clientコマンドを実行した結果です。
[ec2-user@ip-XX-XX-XX-XX conf.d]$ openssl s_client -connect niikawa-test-http.oji-cloud.net:443 -cipher DES-CBC3-SHA < /dev/null CONNECTED(00000003) depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 verify return:1 depth=0 CN = niikawa-test-http.oji-cloud.net verify return:1 --- Certificate chain 0 s:/CN=niikawa-test-http.oji-cloud.net i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 i:/O=Digital Signature Trust Co./CN=DST Root CA X3 --- Server certificate -----BEGIN CERTIFICATE----- MIIFeDCCBGCgAwIBAgISBPllbksRd4yvq9eGSI0/LMuIMA0GCSqGSIb3DQEBCwUA MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0yMDA5MjUwNjUwNDVaFw0y MDEyMjQwNjUwNDVaMCsxKTAnBgNVBAMTIG5paWthd2EtdGVzdC1odHRwLmNscC10 Yy1kZXYubmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuKTlYCuC PIr5rzGNS14IyprNyP7sOCKSMKLvbb9sNdhqyNdE3H8gxwXxE8R6TSM9EV75JHXf +f1VS801dGyL0CcCbGHNfgznHVba5OeI6FVZXJPrfPrBPZEuogyeQjc3tBvZ3onn LKEuovGrs306zsM/Ga1WdPTykfFQO4ajAPErrOYJdoL/PI7HKOU69DF1psWrvKFH qF+fOGJSvR8KRmB5esdP1yg1Ri86p2HQeDrYvi3UpFRu3tTVZSMpEPcpMWcaYR/O C1Uyiy3mvO7wMhet2vHdzw7Y4SREo7aUNbsq+Oy6Xv+U8djTTz+SHo7YfM6IQqrr 2yYpImHdrMfnowIDAQABo4ICdTCCAnEwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQW MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQ7 JyWyMGRCBIkT7/BsqlDiKGJ87zAfBgNVHSMEGDAWgBSoSmpjBH3duubRObemRWXv 86jsoTBvBggrBgEFBQcBAQRjMGEwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3NwLmlu dC14My5sZXRzZW5jcnlwdC5vcmcwLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0Lmlu dC14My5sZXRzZW5jcnlwdC5vcmcvMCsGA1UdEQQkMCKCIG5paWthd2EtdGVzdC1o dHRwLmNscC10Yy1kZXYubmV0MEwGA1UdIARFMEMwCAYGZ4EMAQIBMDcGCysGAQQB gt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQub3Jn MIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHcA5xLysDd+GmL7jskMYYTx6ns3y1Yd ESZb8+DzS/JBVG4AAAF0xD41bAAABAMASDBGAiEAkOHtbq4iih8RfiEddfOOkMYK cYS07D68VtpPrH7c0UMCIQDDzU0nV4NncoCI841qLFY/KWxHM91JOov0T7nUON3F xQB1ALIeBcyLos2KIE6HZvkruYolIGdr2vpw57JJUy3vi5BeAAABdMQ+N1sAAAQD AEYwRAIgJOTfiBo8dsIlvaQG4mOXd3JFtq5rM/qPx6aQy05F9DwCIC/HOfWb5cBW Q/H3LkgBDjViHhZ22okvReAazkeLCCIxMA0GCSqGSIb3DQEBCwUAA4IBAQBYXJo8 HTD0pAd8Rw4LtCHhlm/Gnl5nRZK5c7xXLvqY4Se0sJFmJmzQNhy/LOMRGAKNGHE+ Dxs6nLiBEDw9VdEwnCU56Ol5Kq+FNYoUs7R7alnwt3kMjUIp6I9F1eekzr8e6nq4 VU1tZcsaHC6I0ofdQ2AFBwF/Xp/OSPfbriFcAAG03yaIZ/5hEnHUwrXuq6sZ7OLU mIUB0RBaQ9uJEkMIJ3fOE39YeqLlzJ3pmP5vXSjyHb3HY9ezxRYXjn+uKO+aJI3+ Q3C9yzOnGEyBqyrLWR2qT3WpsscACzRqhXd2C/SlMtHWg9g9zFp7P720WChsLZvM gNDcUC7E8WHzDOTN -----END CERTIFICATE----- subject=/CN=niikawa-test-http.oji-cloud.net issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 --- No client certificate CA names sent --- SSL handshake has read 2934 bytes and written 425 bytes --- New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : DES-CBC3-SHA Session-ID: 3B95D8B042599D5224107163304CBB5701CCD58FE6DA6E4EECE1A8A73BA85107 Session-ID-ctx: Master-Key: BBF178BA312E81E6459614493A9EAFEABC60FC8EB35B74D1EDC4033AE620CC66E08D34AC7F874DA1D5CE9577E27D2169 Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None TLS session ticket lifetime hint: 300 (seconds) TLS session ticket: 0000 - 10 92 9e 4b 18 84 63 37-6a af 14 00 c6 ba 92 c7 ...K..c7j....... 0010 - a3 2d 9d 76 50 53 6b fe-7d f8 29 51 22 bb 9a 8e .-.vPSk.}.)Q"... 0020 - 45 75 dc cf b2 fd 1e 5f-7c 47 c7 ee c7 49 c6 8a Eu....._|G...I.. 0030 - f9 66 28 53 44 86 83 b4-f6 0f b9 d7 f6 93 db c2 .f(SD........... 0040 - 87 5a 06 e8 8e 31 b0 9a-fc 1e f0 3f d8 ce f9 3a .Z...1.....?...: 0050 - e7 f8 83 93 e3 38 e0 f8-9f c8 0b 69 1b 36 85 68 .....8.....i.6.h 0060 - 36 a1 91 c4 60 bf 35 b0-67 bc 70 6a 59 21 69 7b 6...`.5.g.pjY!i{ 0070 - 60 b5 b5 ec 15 28 76 91-ff b3 36 df a4 cf 9f cd `....(v...6..... 0080 - 67 7c 93 87 63 93 4a 04-8a 8e ab 4b 22 ee 11 d6 g|..c.J....K"... 0090 - d6 7e 48 f1 46 f7 8f 5c-a6 f8 f2 97 d9 4d aa 0c .~H.F..\.....M.. 00a0 - c4 75 75 88 b9 1e 24 d3-d9 2a c2 ae c1 a6 f5 48 .uu...$..*.....H 00b0 - 66 5f 49 64 77 4e 4b 23-1a 68 b7 27 c4 3b 49 c2 f_IdwNK#.h.'.;I. Start Time: 1601021592 Timeout : 300 (sec) Verify return code: 0 (ok) --- DONE
[ec2-user@ip-XX-XX-XX-XX conf.d]$ openssl s_client -connect niikawa-test-http.oji-cloud.net:443 -cipher RC4-SHA < /dev/null CONNECTED(00000003) depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 verify return:1 depth=0 CN = niikawa-test-http.oji-cloud.net verify return:1 --- Certificate chain 0 s:/CN=niikawa-test-http.oji-cloud.net i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 i:/O=Digital Signature Trust Co./CN=DST Root CA X3 --- Server certificate -----BEGIN CERTIFICATE----- MIIFeDCCBGCgAwIBAgISBPllbksRd4yvq9eGSI0/LMuIMA0GCSqGSIb3DQEBCwUA MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0yMDA5MjUwNjUwNDVaFw0y MDEyMjQwNjUwNDVaMCsxKTAnBgNVBAMTIG5paWthd2EtdGVzdC1odHRwLmNscC10 Yy1kZXYubmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuKTlYCuC PIr5rzGNS14IyprNyP7sOCKSMKLvbb9sNdhqyNdE3H8gxwXxE8R6TSM9EV75JHXf +f1VS801dGyL0CcCbGHNfgznHVba5OeI6FVZXJPrfPrBPZEuogyeQjc3tBvZ3onn LKEuovGrs306zsM/Ga1WdPTykfFQO4ajAPErrOYJdoL/PI7HKOU69DF1psWrvKFH qF+fOGJSvR8KRmB5esdP1yg1Ri86p2HQeDrYvi3UpFRu3tTVZSMpEPcpMWcaYR/O C1Uyiy3mvO7wMhet2vHdzw7Y4SREo7aUNbsq+Oy6Xv+U8djTTz+SHo7YfM6IQqrr 2yYpImHdrMfnowIDAQABo4ICdTCCAnEwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQW MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQ7 JyWyMGRCBIkT7/BsqlDiKGJ87zAfBgNVHSMEGDAWgBSoSmpjBH3duubRObemRWXv 86jsoTBvBggrBgEFBQcBAQRjMGEwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3NwLmlu dC14My5sZXRzZW5jcnlwdC5vcmcwLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0Lmlu dC14My5sZXRzZW5jcnlwdC5vcmcvMCsGA1UdEQQkMCKCIG5paWthd2EtdGVzdC1o dHRwLmNscC10Yy1kZXYubmV0MEwGA1UdIARFMEMwCAYGZ4EMAQIBMDcGCysGAQQB gt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQub3Jn MIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHcA5xLysDd+GmL7jskMYYTx6ns3y1Yd ESZb8+DzS/JBVG4AAAF0xD41bAAABAMASDBGAiEAkOHtbq4iih8RfiEddfOOkMYK cYS07D68VtpPrH7c0UMCIQDDzU0nV4NncoCI841qLFY/KWxHM91JOov0T7nUON3F xQB1ALIeBcyLos2KIE6HZvkruYolIGdr2vpw57JJUy3vi5BeAAABdMQ+N1sAAAQD AEYwRAIgJOTfiBo8dsIlvaQG4mOXd3JFtq5rM/qPx6aQy05F9DwCIC/HOfWb5cBW Q/H3LkgBDjViHhZ22okvReAazkeLCCIxMA0GCSqGSIb3DQEBCwUAA4IBAQBYXJo8 HTD0pAd8Rw4LtCHhlm/Gnl5nRZK5c7xXLvqY4Se0sJFmJmzQNhy/LOMRGAKNGHE+ Dxs6nLiBEDw9VdEwnCU56Ol5Kq+FNYoUs7R7alnwt3kMjUIp6I9F1eekzr8e6nq4 VU1tZcsaHC6I0ofdQ2AFBwF/Xp/OSPfbriFcAAG03yaIZ/5hEnHUwrXuq6sZ7OLU mIUB0RBaQ9uJEkMIJ3fOE39YeqLlzJ3pmP5vXSjyHb3HY9ezxRYXjn+uKO+aJI3+ Q3C9yzOnGEyBqyrLWR2qT3WpsscACzRqhXd2C/SlMtHWg9g9zFp7P720WChsLZvM gNDcUC7E8WHzDOTN -----END CERTIFICATE----- subject=/CN=niikawa-test-http.oji-cloud.net issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 --- No client certificate CA names sent --- SSL handshake has read 2922 bytes and written 413 bytes --- New, TLSv1/SSLv3, Cipher is RC4-SHA Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : RC4-SHA Session-ID: 89FFE62C14128A7550F33023E3EAAC62BB74D888EBED0E4711E71A7CDDEB9535 Session-ID-ctx: Master-Key: 7A6BBFEF78147C53AEDA46F92A4AB4561EC78DBC1FDBFFB82EC84DE00153D2BDA6A72A499461C1253F81EB3DF32232BD Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None TLS session ticket lifetime hint: 300 (seconds) TLS session ticket: 0000 - 10 92 9e 4b 18 84 63 37-6a af 14 00 c6 ba 92 c7 ...K..c7j....... 0010 - 65 81 a4 26 72 80 b8 e6-e9 53 85 4d b9 3d 41 6e e..&r....S.M.=An 0020 - b9 9a 5e 0c 97 6f 82 97-dd 68 c5 da 98 68 c5 69 ..^..o...h...h.i 0030 - 19 55 74 87 dc c8 3d 0d-be 6c 22 31 bf aa 20 23 .Ut...=..l"1.. # 0040 - eb 85 90 9b 9f 49 fa 00-99 e5 61 17 d2 33 56 47 .....I....a..3VG 0050 - dd 6a 2b ca a7 7b c5 73-33 38 c1 6b 91 17 02 a3 .j+..{.s38.k.... 0060 - d4 c2 25 86 01 ee 14 dd-7b 5e 91 59 51 bd f0 f9 ..%.....{^.YQ... 0070 - 74 4e 20 48 1e 25 c0 11-ac 26 d0 fc 0b 50 05 0d tN H.%...&...P.. 0080 - c9 f7 b5 90 d9 58 89 2d-76 d5 49 c8 5c 78 73 d4 .....X.-v.I.\xs. 0090 - 55 d2 c2 53 9a f8 85 96-2a 7b e2 20 2e 76 db af U..S....*{. .v.. 00a0 - 03 11 11 a8 84 48 65 b2-06 0c 20 43 b1 78 f3 0e .....He... C.x.. 00b0 - 74 d8 c8 43 94 73 58 fb-30 a1 43 df 8d 41 fe 3e t..C.sX.0.C..A.> Start Time: 1601021875 Timeout : 300 (sec) Verify return code: 0 (ok) --- DONE
3DES, RC4 の暗号アルゴリズムが無効な場合の結果
- 下記は、3DES, RC4 の暗号アルゴリズムを無効化した後にopenssl s_clientコマンドを実行した結果です。
[ec2-user@ip-XX-XX-XX-XX conf.d]$ openssl s_client -connect niikawa-test-http.oji-cloud.net:443 -cipher DES-CBC3-SHA < /dev/null CONNECTED(00000003) 139988448884640:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:769: --- no peer certificate available --- No client certificate CA names sent --- SSL handshake has read 7 bytes and written 99 bytes --- New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : 0000 Session-ID: Session-ID-ctx: Master-Key: Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None Start Time: 1601022122 Timeout : 300 (sec) Verify return code: 0 (ok) ---
[ec2-user@ip-XX-XX-XX-XX conf.d]$ openssl s_client -connect niikawa-test-http.oji-cloud.net:443 -cipher RC4-SHA < /dev/null CONNECTED(00000003) 140347542558624:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:769: --- no peer certificate available --- No client certificate CA names sent --- SSL handshake has read 7 bytes and written 99 bytes --- New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : 0000 Session-ID: Session-ID-ctx: Master-Key: Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None Start Time: 1601022144 Timeout : 300 (sec) Verify return code: 0 (ok) --- [ec2-user@ip-XX-XX-XX-XX conf.d]$