7
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOSAdvent Calendar 2017

Day 18

CentOS6.9/CentOS7.4でWebサーバのSSLのセキュリティ対策

Last updated at Posted at 2018-01-05

この記事は

CentOS6.6でWebサーバのSSLのセキュリティ対策
https://qiita.com/qiitamatumoto/items/3bc4a22918412a7a169b

の改訂版です。またこの記事を書くにあたって以下の文献を参考にしています。

https://www.marineroad.com/staff-blog/16042.html
[SSL] SSL/TLS暗号化設定を見直そう!!(その2)

この記事は上記記事をもとにした、難しい事を考えるのが面倒な管理者が書いた文章です(^_^;

追記: 2018/1/19, 採点基準が変わったようなので修正。BEAST対策について加筆

追記: 2018/1/29, X-Frame-Options レスポンスヘッダの加筆について、注意事項を追記。

#はじめに
最近WebサーバのSSL関係のセキュリティ報告が多いのですが、たくさんあってよくわかりませんので、チェックツールを使ってみました。

https://www.ssllabs.com/ssltest/index.html
SSL Server Test

#管理下のWebサーバを検査してみた。
管理下のサーバは某大学のWebサーバで、OSはCentOS6.9およびCentOS7.4で、WebサーバはOS標準のApache、SSLの証明書はUPKI

https://certs.nii.ac.jp/
UPKI電子証明書発行サービス

を用いています。

Webサーバ(OS標準のapache)のSSL周りの設定(/etc/httpd/conf.d/ssl.conf)はUPKIのサーバ証明書の設定のみで、それ以外はOSのdefaultのままです。

それで検査してみた結果。

評価はC。

##CentOS6.9の例
執筆時点の最新版
httpd-2.2.15-60.el6.centos.6.i686.rpmおよびmod_ssl-2.2.15-60.el6.centos.6.i686.rpmで確認しました。

CentOS6-Default-Summary.jpg

#CentOS7.4の例
執筆時点の最新版httpd-2.4.6-67.el7.centos.6.x86_64.rpmおよび mod_ssl-2.4.6-67.el7.centos.6.x86_64.rpmで確認しました。

CentOS7-Default-Summary.jpg

#設定変更
CentOS6.9およびCentOS7.4でのウイークポイントを調べると共通していまして、

##Protocols
プロトコルでSSLv3がウイークポイントという指摘。
Protocol.jpg

##CipherSuite
長いので一部分のみ掲載しますが、こんな感じで多数指摘されます。

CentOS6-cipherSuites.jpg

全体を通してみると、ウイークポイントが指摘されているCipherSuiteにはすべてRC4と3DESとTLS_RSAという文字列が入っています。また合格したCipherSuiteにはRC4と3DESという文字列は入っていません。(注記: TLS_RSAとTLS_DHE_RSAとは別みたい。)

##設定変更例

CentOS6.9のssl.confのデフォルト設定は以下のとおりです。

/etc/httpd/conf.d/ssl.conf
SSLProtocol all -SSLv2
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES

CentOS7.4のssl.confのデフォルト設定は以下の通りです。

/etc/httpd/conf.d/ssl.conf
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA

それぞれに, ProtocolからSSLv3を削除する設定(-SSLv3)および、ChiperSuiteからRC4および3DESおよびRSAを除外する設定(!RC4と!3DESと!RSA)をします。(注記: !RSAをしてもTLS_DHE_RSAは無効にならないみたい。)

CentOS6.9設定変更例

/etc/httpd/conf.d/ssl.conf
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:!RC4:!3DES:!RSA

CentOS7.4設定変更例

/etc/httpd/conf.d/ssl.conf
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!RC4:!3DES:!RSA

次に、BEAST対策が必要な場合はTLSv1.0を無効にする必要があります。

SSL と TLS の CBC モードに選択平文攻撃の脆弱性
http://jvndb.jvn.jp/ja/contents/2011/JVNDB-2011-002305.html

ただしこの対策をすると古いブラウザが切られますのでリスク判断を行ったほうがよいとおもいます。

SSLlabでTLSv1を有効/無効にして対応ブラウザを比較してみました。無効にして残ったブラウザはすべてTLSv1.2対応していました。そのためTSLv1を停止するならTLSv1.1を停止しても対応状況に変化はないようです。なのでついでにTLSv1.1も停止しても問題ないようです。(かなり独断と偏見)

/etc/httpd/conf.d/ssl.conf
# 引数に -TLSv1 -TLSv1.1を追加。
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

次に、SSLとは直接関係ありませんが、次の設定が必要な場合は検討をしてください。

CentOS6.9とCentOS7.4にはTRACEメソッドを無効にする設定。

http://itochif.com/contents/Security/Apache/apache_003000.html
[Apache] TRACEメソッドを無効にする - itochif.com

/etc/httpd/conf/httpd.conf
TraceEnable Off

CentOS6.9にはエンティティタグ(ETag)の設定をします。(補足:CentOS7は不要)

https://qiita.com/bezeklik/items/1c4145652661cf5b2271
Apacheセキュリティ設定

/etc/httpd/conf/httpd.conf
FileETag MTime Size

フレーム内への表示などを禁止する必要がある場合は、次の設定を検討してください。

https://developer.mozilla.org/ja/docs/Web/HTTP/X-Frame-Options
X-Frame-Options レスポンスヘッダ

/etc/httpd/conf/httpd.conf
Header always append X-Frame-Options SAMEORIGIN

追記:2018/1/29: 上記の設定は事前に身内のWebサーバからフレームを使って参照されてないか確認ください。もし参照されていた場合は以下の資料を参考にして別のタブでリンクを開くように書き換えを依頼すればおそらく良いかとおもいます。

http://htmlst.hatenablog.jp/entry/entry/2017/01/12/2230
別タブでリンクを開くようにする方法

次に、Webサーバのコンテンツのディレクトリにindex.htmlがおいてある場合はindex.htmlが表示されますが、もし無い場合は、ディレクトリの中身が表示される事があります。この設定が好ましくない場合は、設定を調べてOptions から Indexesを削除してください。Optionsは複数ある場合もありますので、すべてを調べてみてください。(副作用を検討して削除を行ってください。)。なお、「-Indexes」は無効にする設定ですので。

$ cd /etc/httpd/
$ grep Indexes */*.conf

設定例。

/etc/httpd/conf/httpd.conf
# Options Indexes FollowSymLinks
Options FollowSymLinks

その他推奨設定については参考文献をご覧ください。

上記の変更後、apacheを再起動してください。

/sbin/service httpd restart

補足: 次の文献などで挙げられている

https://rms-digicert.ne.jp/howto/basis/Forward_Secrecy_Apache_Ngix.html
ApacheとNginxでのForward Secrecy設定方法

設定「SSLHonorCipherOrder on」は今回指定していません。この指定をする場合は、「SSLCipherSuite」を真面目に書く必要があるからです(^_^; この記事で挙げているような、ダメなものを除外するだけの設定ではおそらく悪い影響が出ると思います。

#上記変更後のSSLlabの評価

##CentOS6.9/7.4の評価(BEAST未対応)

CentOS6-on-tlsv1.jpg

CからAに改善しました。

##CentOS6.9/7.4の評価(BEAST対応済み)

CentOS6-off-tlsv1.jpg

BEAST未対応よりProtocol supportが改善しています。

#最後に
ほかにもウイークポイントが指摘されていますが、ここまでにしておきます(^_^;
以上です。

7
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?