「ssl-enum-ciphers」の版間の差分
提供: セキュリティ
(ページの作成:「ssl-enum-ciphers とは、NSEスクリプトの1つで、nmapを利用して、Transport Layer Security(TLS)とSSLの脆弱...」) |
|||
(同じ利用者による、間の3版が非表示) | |||
行1: | 行1: | ||
− | [[ssl-enum-ciphers]] とは、[[nmap NSEスクリプト|NSEスクリプト]]の1つで、[[nmap]]を利用して、[[Transport Layer Security]](TLS)と[[SSL]]の脆弱性検出の機能を提供します。 | + | [[ssl-enum-ciphers]] とは、[[nmap NSEスクリプト|NSEスクリプト]]の1つで、[[nmap]]を利用して、[[Transport Layer Security]](TLS)と[[SSL]]の脆弱性検出の機能を提供します。[[SSL]]といえば、近年、多くのセキュリティ脆弱性の問題で世の中を賑わせました。提供しているウェブサービスなどの暗号通信が安全であるか、<u>診断することが大切</u>です。 |
'''読み方''' | '''読み方''' | ||
行9: | 行9: | ||
[[nmap]]は、NSEスクリプトと呼ばれる拡張機能を持っています。[[ssl-enum-ciphers]]は、NSEスクリプトの1つです。 | [[nmap]]は、NSEスクリプトと呼ばれる拡張機能を持っています。[[ssl-enum-ciphers]]は、NSEスクリプトの1つです。 | ||
− | [[TLS]]/[[SSL]]を診断し、利用している暗号アルゴリズムを列挙し、安全性を A | + | [[TLS]]/[[SSL]]を診断し、利用している暗号アルゴリズムを列挙し、安全性を AからFのグレードで評価し、警告を表示し、問題を教えてくれます。 |
+ | |||
+ | AからFのグレードの中で、Aグレードが一番良い評価になります。以下のように、<u>'''A'''となっていれば、問題がないということになります</u>。 | ||
+ | TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - A | ||
例えば、 | 例えば、 | ||
− | * | + | * メッセージの完全性のために[[暗号スイート|サイファースイート]]が[[MD5]]を利用している |
* 証明書のシグネチャ(署名) に [[SHA-1]] を利用している | * 証明書のシグネチャ(署名) に [[SHA-1]] を利用している | ||
* SSLv3 での CBCモード暗号の利用は CVE-2014-3566 の問題がある | * SSLv3 での CBCモード暗号の利用は CVE-2014-3566 の問題がある | ||
などを教えてくれます。 | などを教えてくれます。 | ||
+ | == なぜ脆弱性診断をするのか? == | ||
+ | [[SSL]]といえば、近年、多くのセキュリティ脆弱性の問題で世の中を賑わせました。提供しているウェブサービスなどの暗号通信が安全であるか、診断することが大切です。 | ||
+ | |||
+ | [[TLS]]/[[SSL]]は、以下の目的で利用します。 | ||
+ | * 通信路を[[暗号]]する | ||
+ | * 通信相手が正しいことを証明する(真正性) | ||
+ | |||
+ | [[脆弱性]]があると | ||
+ | * 通信路が覗かれる | ||
+ | * 改ざんされる | ||
+ | * 証明書を偽装される | ||
+ | といった問題につながります。 | ||
+ | == 問題はどこにあるのか? == | ||
+ | 問題は、 | ||
+ | * プロトコルの問題 | ||
+ | * 実装の問題 | ||
+ | * 暗号の問題 | ||
+ | ** 設定の問題 | ||
+ | など多岐にわたります。 | ||
+ | == 近年発見された脆弱性 == | ||
+ | * [[Heartbleed]] | ||
+ | * [[POODLE]] | ||
+ | * [[FREAK]] | ||
== もし問題が見つかった場合 == | == もし問題が見つかった場合 == | ||
もし、問題が見つかったなら、修正をするべきですが、修正することによって、利用者に影響を及ぼすため、本当に変更してよいのか、考える必要があります。 | もし、問題が見つかったなら、修正をするべきですが、修正することによって、利用者に影響を及ぼすため、本当に変更してよいのか、考える必要があります。 | ||
行25: | 行51: | ||
== インストール == | == インストール == | ||
[[nmap]]をインストールしてください。 | [[nmap]]をインストールしてください。 | ||
− | + | {{inst|nmap}} | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
== 使い方 == | == 使い方 == | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> |
2015年11月21日 (土) 16:21時点における最新版
ssl-enum-ciphers とは、NSEスクリプトの1つで、nmapを利用して、Transport Layer Security(TLS)とSSLの脆弱性検出の機能を提供します。SSLといえば、近年、多くのセキュリティ脆弱性の問題で世の中を賑わせました。提供しているウェブサービスなどの暗号通信が安全であるか、診断することが大切です。
読み方
- ssl-enum-ciphers
目次
概要
nmap (Network Mapper) は、セキュリティスキャナで、ポートスキャンの機能やOSやサービスのバージョン検出、サービスの検出などの機能を持っています。
nmapは、NSEスクリプトと呼ばれる拡張機能を持っています。ssl-enum-ciphersは、NSEスクリプトの1つです。 TLS/SSLを診断し、利用している暗号アルゴリズムを列挙し、安全性を AからFのグレードで評価し、警告を表示し、問題を教えてくれます。
AからFのグレードの中で、Aグレードが一番良い評価になります。以下のように、Aとなっていれば、問題がないということになります。
TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - A
例えば、
- メッセージの完全性のためにサイファースイートがMD5を利用している
- 証明書のシグネチャ(署名) に SHA-1 を利用している
- SSLv3 での CBCモード暗号の利用は CVE-2014-3566 の問題がある
などを教えてくれます。
なぜ脆弱性診断をするのか?
SSLといえば、近年、多くのセキュリティ脆弱性の問題で世の中を賑わせました。提供しているウェブサービスなどの暗号通信が安全であるか、診断することが大切です。
- 通信路を暗号する
- 通信相手が正しいことを証明する(真正性)
脆弱性があると
- 通信路が覗かれる
- 改ざんされる
- 証明書を偽装される
といった問題につながります。
問題はどこにあるのか?
問題は、
- プロトコルの問題
- 実装の問題
- 暗号の問題
- 設定の問題
など多岐にわたります。
近年発見された脆弱性
もし問題が見つかった場合
もし、問題が見つかったなら、修正をするべきですが、修正することによって、利用者に影響を及ぼすため、本当に変更してよいのか、考える必要があります。
問題の修正方法は、問題の内容によってことなりますが、よくある対応例を挙げます。
インストール
nmapをインストールしてください。
ubuntu# sudo apt install nmap centos# sudo yum install nmap freebsd# sudo pkg install nmap
使い方
$ nmap --script ssl-enum-ciphers login.example.co.jp -p 443
脆弱性診断
これは、実行例です。
login.yahoo.co.jp
$ nmap --script ssl-enum-ciphers login.yahoo.co.jp -p 443 Starting Nmap 6.49BETA6 ( https://nmap.org ) at 2015-11-21 13:06 JST Nmap scan report for login.yahoo.co.jp (182.22.59.186) Host is up (0.012s latency). PORT STATE SERVICE 443/tcp open https | ssl-enum-ciphers: | SSLv3: | ciphers: | TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A | TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - A | TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - A | TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C | compressors: | NULL | cipher preference: server | warnings: | CBC-mode cipher in SSLv3 (CVE-2014-3566) | Ciphersuite uses MD5 for message integrity | Weak certificate signature: SHA1 | TLSv1.0: | ciphers: | TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A | TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - A | TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - A | TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C | compressors: | NULL | cipher preference: server | warnings: | Ciphersuite uses MD5 for message integrity | Weak certificate signature: SHA1 | TLSv1.1: | ciphers: | TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A | TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - A | TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - A | TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C | compressors: | NULL | cipher preference: server | warnings: | Ciphersuite uses MD5 for message integrity | Weak certificate signature: SHA1 | Weak cipher RC4 in TLSv1.1 or newer not needed for BEAST mitigation | TLSv1.2: | ciphers: | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A | TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A | TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A | TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A | TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - A | TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - A | TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C | compressors: | NULL | cipher preference: server | warnings: | Ciphersuite uses MD5 for message integrity | Weak certificate signature: SHA1 | Weak cipher RC4 in TLSv1.1 or newer not needed for BEAST mitigation |_ least strength: C Nmap done: 1 IP address (1 host up) scanned in 2.44 seconds
login.yahoo.com
$ nmap --script ssl-enum-ciphers login.yahoo.com -p 443 Starting Nmap 6.49BETA6 ( https://nmap.org ) at 2015-11-21 12:53 JST Nmap scan report for login.yahoo.com (98.136.189.41) Host is up (0.14s latency). Other addresses for login.yahoo.com (not scanned): 98.138.79.21 rDNS record for 98.136.189.41: ats1.member.vip.gq1.yahoo.com PORT STATE SERVICE 443/tcp open https | ssl-enum-ciphers: | TLSv1.0: | ciphers: | TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A | TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - A | TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - A | TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C | compressors: | NULL | TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - A | TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - A | TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C | compressors: | NULL | cipher preference: server | warnings: | Ciphersuite uses MD5 for message integrity | Weak cipher RC4 in TLSv1.1 or newer not needed for BEAST mitigation | TLSv1.2: | ciphers: | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A | TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A | TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A | TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A | TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - A | TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - A | TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C | compressors: | NULL | cipher preference: server | warnings: | Ciphersuite uses MD5 for message integrity | Weak cipher RC4 in TLSv1.1 or newer not needed for BEAST mitigation |_ least strength: C Nmap done: 1 IP address (1 host up) scanned in 17.54 seconds
accounts.google.com
$ nmap --script ssl-enum-ciphers accounts.google.com -p 443 Starting Nmap 6.49BETA6 ( https://nmap.org ) at 2015-11-21 13:05 JST Nmap scan report for accounts.google.com (216.58.220.237) Host is up (0.011s latency). rDNS record for 216.58.220.237: nrt13s37-in-f13.1e100.net PORT STATE SERVICE 443/tcp open https | ssl-enum-ciphers: | SSLv3: | ciphers: | TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A | TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - A | TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - A | TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A | TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C | compressors: | NULL | cipher preference: server | warnings: | CBC-mode cipher in SSLv3 (CVE-2014-3566) | Ciphersuite uses MD5 for message integrity | TLSv1.0: | ciphers: | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - A | TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C | TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - A | TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A | TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A | compressors: | NULL | cipher preference: server | warnings: | Ciphersuite uses MD5 for message integrity | TLSv1.1: | ciphers: | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - A | TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C | TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - A | TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A | TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A | compressors: | NULL | cipher preference: server | warnings: | Ciphersuite uses MD5 for message integrity | Weak cipher RC4 in TLSv1.1 or newer not needed for BEAST mitigation | TLSv1.2: | ciphers: | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A | TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_RC4_128_SHA (secp256r1) - A | TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A | TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A | TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C | TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - A | TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - A | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A | TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A | TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A | compressors: | NULL | cipher preference: server | warnings: | Ciphersuite uses MD5 for message integrity | Weak cipher RC4 in TLSv1.1 or newer not needed for BEAST mitigation |_ least strength: C Nmap done: 1 IP address (1 host up) scanned in 2.34 seconds
login.live.com
$ nmap --script ssl-enum-ciphers login.live.com -p 443 Starting Nmap 6.49BETA6 ( https://nmap.org ) at 2015-11-21 13:04 JST Nmap scan report for login.live.com (131.253.61.82) Host is up (0.17s latency). Other addresses for login.live.com (not scanned): 131.253.61.68 131.253.61.98 131.253.61.80 PORT STATE SERVICE 443/tcp open https | ssl-enum-ciphers: | TLSv1.0: | ciphers: | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp521r1) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp521r1) - A | TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C | compressors: | NULL | cipher preference: server | TLSv1.1: | ciphers: | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp521r1) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp521r1) - A | TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C | compressors: | NULL | cipher preference: server | TLSv1.2: | ciphers: | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp521r1) - A | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp521r1) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp521r1) - A | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp521r1) - A | TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A | TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A | TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A | TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A | TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A | TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C | compressors: | NULL | cipher preference: server |_ least strength: C Nmap done: 1 IP address (1 host up) scanned in 15.21 seconds