Apacheで3DES,RC4 の暗号を無効化

AmazonLinux_CentOS,apache,EC2,セキュリティ関連

概要

  • 今回は、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]$