[小ネタ]CloudFrontのSSLポリシー設定変更で状態を確認してみた
どーもsutoです。
CloudFrontのセキュリティポリシーを変更して「TLS 1.0/1.1」を無効化する際に、変更前後の状態をsslscanで確認してみました。
今時の設定として、CloudFrontのセキュリティポリシーは最新の状態としておくのがベストです。(サポートされているプロトコルは以下の公式ドキュメントを参照。)
今回はCloudFrontのSecurity Policyが「TLSv1」から「TLSv1.2_2019」に変更して、SSLサポートの状態がどのように変化したのかを「sslscan」というチェックツールを使って確認していきます。
本来のsslscanからのfork版であるrbsec-sslscanがGitHub上で開発されているため、こちらから入手することができますが、本稿ではHomebrewコマンドで入手します。
実際にやってみた
前提
ご自身のAWSアカウント上にCloudFrontディストリビューションが作成&動作済、自身の作業端末にHomebrewがインストール済であることを前提とします。
変更前のCloudFrontディストリビューションの設定は以下のとおりです。(ACMの証明書とRoute53のレコード「test.XXXXXXX.classmethod.info」に紐づけています)
sslscanのインストールとSSL設定の事前確認
~ % brew install sslscan ~ % sslscan --version 2.0.9-static OpenSSL 1.1.1k 25 Mar 2021
次に実際にsslscanコマンドを実行してみて確認してみましょう。
~ % sslscan test.XXXXXXX.classmethod.info Version: 2.0.9-static OpenSSL 1.1.1k 25 Mar 2021 Connected to 99.84.63.68 Testing SSL server test.XXXXXXX.classmethod.info on port 443 using SNI name test.XXXXXXX.classmethod.info SSL/TLS Protocols: SSLv2 disabled SSLv3 disabled TLSv1.0 enabled TLSv1.1 enabled TLSv1.2 enabled TLSv1.3 enabled TLS Fallback SCSV: Server supports TLS Fallback SCSV TLS renegotiation: Secure session renegotiation supported TLS Compression: OpenSSL version does not support compression Rebuild with zlib1g-dev package for zlib support Heartbleed: TLSv1.3 not vulnerable to heartbleed TLSv1.2 not vulnerable to heartbleed TLSv1.1 not vulnerable to heartbleed TLSv1.0 not vulnerable to heartbleed Supported Server Cipher(s): Preferred TLSv1.3 128 bits TLS_AES_128_GCM_SHA256 Curve 25519 DHE 253 Accepted TLSv1.3 256 bits TLS_AES_256_GCM_SHA384 Curve 25519 DHE 253 Accepted TLSv1.3 256 bits TLS_CHACHA20_POLY1305_SHA256 Curve 25519 DHE 253 Preferred TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve 25519 DHE 253 Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA256 Curve 25519 DHE 253 Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-RSA-CHACHA20-POLY1305 Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA384 Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253 Accepted TLSv1.2 128 bits AES128-GCM-SHA256 Accepted TLSv1.2 256 bits AES256-GCM-SHA384 Accepted TLSv1.2 128 bits AES128-SHA256 Accepted TLSv1.2 256 bits AES256-SHA Accepted TLSv1.2 128 bits AES128-SHA Accepted TLSv1.2 112 bits TLS_RSA_WITH_3DES_EDE_CBC_SHA Preferred TLSv1.1 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253 Accepted TLSv1.1 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253 Accepted TLSv1.1 256 bits AES256-SHA Accepted TLSv1.1 128 bits AES128-SHA Accepted TLSv1.1 112 bits TLS_RSA_WITH_3DES_EDE_CBC_SHA Preferred TLSv1.0 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253 Accepted TLSv1.0 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253 Accepted TLSv1.0 256 bits AES256-SHA Accepted TLSv1.0 128 bits AES128-SHA Accepted TLSv1.0 112 bits TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLSv1.0とTLSv1.1がenableになっており、サポートが有効になっている暗号一覧もAWS公式ドキュメントに記載されているものが表示されています。
SSLセキュリティポリシーを変更
ではAWSのCloudFrontディストリビューションでSecurity Policyを「TLSv1.2_2019」に変更し、再度sslscanコマンドを実行して結果を見てみましょう。
~ % sslscan test.suto.ishikawa.classmethod.info Version: 2.0.9-static OpenSSL 1.1.1k 25 Mar 2021 Connected to 99.84.63.57 Testing SSL server test.suto.ishikawa.classmethod.info on port 443 using SNI name test.suto.ishikawa.classmethod.info SSL/TLS Protocols: SSLv2 disabled SSLv3 disabled TLSv1.0 disabled TLSv1.1 disabled TLSv1.2 enabled TLSv1.3 enabled TLS Fallback SCSV: Server supports TLS Fallback SCSV TLS renegotiation: Session renegotiation not supported TLS Compression: OpenSSL version does not support compression Rebuild with zlib1g-dev package for zlib support Heartbleed: TLSv1.3 not vulnerable to heartbleed TLSv1.2 not vulnerable to heartbleed Supported Server Cipher(s): Preferred TLSv1.3 128 bits TLS_AES_128_GCM_SHA256 Curve 25519 DHE 253 Accepted TLSv1.3 256 bits TLS_AES_256_GCM_SHA384 Curve 25519 DHE 253 Accepted TLSv1.3 256 bits TLS_CHACHA20_POLY1305_SHA256 Curve 25519 DHE 253 Preferred TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-RSA-CHACHA20-POLY1305 Curve 25519 DHE 253 Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA384 Curve 25519 DHE 253 Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA256 Curve 25519 DHE 253
TLS1.2、TLS1.3以外はすべてdisableとなり、暗号一覧も古いもののサポートは無効化されたことがわかります。
おまけ
SSL設定状態を確認するにはsslscanの他にSSL Server Testというサイトがあります。こちらはHostname を入力してSubmit ボタンをクリックするだけでステータスを確認することができます。