ウェブのHTTPセキュリティヘッダを強化
脆弱性対策として、ウェブのHTTPセキュリティヘッダを強化した
現在のサイトは、大学内のレンタルサーバーでウェブを運用しております。
現状の環境 | バージョン |
---|---|
FreeBSD | 13.1 |
Apache | 2.4.54 |
PHP | 7.4.30 |
大学内では、Nessusによる脆弱性検査が不定期に行われ、その調査結果報告から、下記の対策が該当しました
- Web Application Potentially Vulnerable to Clickjacking
- HTTP TRACE / TRACK Methods Allowed
対策
レンタルサーバーでは、root権限が利用出来ないので、httpd.confなどのシステム設定を変更することが出来ません。
よって、.htaccessにより対策をすることになります
こちらの記事を参考にしながら、設定を行いました
継承可能な上位、もしくは、対策したいサービス(WordPress下など)にて、.htaccessを作成もしくは追記編集します
.htaccessの設定変更すると、場合によっては接続出来なくなる事もあるので、必ずバックアップをとって、変更の都度、接続確認を行いましょう!
# Trace disable
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
# Security Headers
Header always set Content-Security-Policy "upgrade-insecure-requests"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy: "no-referrer-when-downgrade"
Header always set Expect-CT "max-age=7776000, enforce"
Header always append X-Frame-Options SAMEORIGIN
Header always set Permissions-Policy "geolocation=(); midi=();notifications=();push=();sync-xhr=();accelerometer=(); gyroscope=(); magnetometer=(); payment=(); camera=(); microphone=();usb=(); xr=();speaker=(self);vibrate=();fullscreen=(self);"
#Header always set Strict-Transport-Security: "max-age=31536000" env=HTTPS
# End Security Headers
なお、レンタルサーバーでは、システムにてStrict-Transport-Security
の設定が有効になっていたため、重複するのでコメントアウトしてあります
また、WordPress環境下では、下記の点注意が必要です
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
セキュリティ強化による設定変更の確認では、Analyse your HTTP response headersのサイトから、対策を適用したページのURLを入力すると確認することが出来ます
このような結果になればOKです
実は、ほとんどの学内サイトで、今回の対策がされてないようですが-