AWS Lightsailで運用している「インターネット接続用redmine」。運用にあたり、SSLの強化を図るため
こちらにあるように強度チェッカーで検証しながら設定を行っていました。
ところが最近、このチェックが厳しくなったようで評価がAまで落ちます。
信頼度は高いと言えるものの余り気分がいいものではありません。そこで、再びA+となるように設定を行いました。
SSL Configuration Generator
https://ssl-config.mozilla.org/
mozillaが公式に提供しているこのサイト、
- サーバプログラム
- プログラムのバージョン
- 強度
を設定するだけでサンプルコードを示してくれる優れもの。これを使い、こんな感じで設定しました。
設定ファイル
<VirtualHost _default_:80>
servername 公開するドメイン
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# http通信をhttps通信にリダイレクト
</VirtualHost>
<VirtualHost _default_:443>
servername 公開するドメイン
CustomLog /var/log/redmine/access.log combined
ErrorLog /var/log/redmine/error.log
# redmineログ設定
SecRuleEngine On
## ModSecurity有効化
SecRequestBodyInMemoryLimit 524288000
SecRequestBodyLimit 524288000
## ファイルのアップロードをできるようにします。
SecRuleRemoveById 949110
SecRuleRemoveById 941310
SecRuleRemoveById 980130
SecRuleRemoveById 911100
SecRuleRemoveById 200002
SecRuleRemoveById 200003
SecRuleRemoveById 200004
SecRuleRemoveById 959100
## 上記を無効化しないとチケット更新時にエラーとなりました(偽陽性)ため、上記ルールを除外します。
SecRule ARGS:modsecparam "@contains test" "id:4321,deny,status:403,msg:'ModSecurity test rule has triggered'"
## テスト用の検知パラメータを付け加えます。
## Negativelist
SecRule REMOTE_ADDR "@pmFromFile negativelist.txt" "phase:1,id:2,deny,msg:'Negativelisted IP address'"
## Mod_Securityが検知したIPアドレスをブロックします。
Alias /redmine /var/lib/redmine/public
<Location /redmine>
PassengerBaseURI /redmine
PassengerAppRoot /var/lib/redmine
Require all granted
<RequireAll>
Require all granted
</RequireAll>
</Location>
## 上記はredmineの設定です
SSLEngine on
Protocols h2 http/1.1
Header always set Strict-Transport-Security "max-age=63072000"
## SSLならびにHSTS有効化。
SSLCertificateFile /path/to/SSL/Certificate
SSLCertificateKeyFile /Path/to/SSL/Private/Key
## 証明書を格納します。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^ドメイン名
RewriteRule ^/$ https://ドメイン名/redmine/ [R]
# ドメイン名でアクセスした際に/redmine/にリライトします。
</VirtualHost>
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
## Configuration Generatorで追加した設定。<virtualhost>ディレクティブの外に出す必要がありました。
こちらを修正してサービス再起動。
再起動後の強度チェック
再びA+を取り戻しました。