# apt-get install apache2
mods-enabled/negotiation.conf
# <変更> # 日本語を優先に変更 # LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv tr zh-CN zh-TW LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ltz nl nn no pl pt pt-BR ru sv tr zh-CN zh-TW
conf-enabled/security.conf
# <変更> # HTTP response ヘッダーに最小限の情報のみ返す。 #ServerTokens Minimal #ServerTokens OS #ServerTokens Full ServerTokens Prod
# # <変更> # シグネチャー情報を出力しない ServerSignature Off #ServerSignature On # # <確認> # XST (Cross Site Tracing) 対策 # 多くのブラウザで対処済みのハズであるが、念のため。 # TraceEnable Off # # <追加> # スクリプト等のバージョン情報等がヘッダーに入らないようにします。 # Header unset "X-Powered-By"
# # <追加> # ブラウザが持つ、XSS(Cross Site Scripting)に対するフィルタ機能を強制的に有効にする。 # ※XSSが完全対策されている場合は、ご検知によるページ崩れなどを防ぐため、明示的に無効化 # することもある。(例:Facebook など) # # 0 : 無効 # 1 : XSS検知時、ブラウザはページをサニタイズ(危険な記述部分を除去)する。 # 1; mode=block : XSS検知時、ページのレンダリングを停止する。 # 1; report=<URI> : XSS検知時、ブラウザはページをサニタイズし、攻撃をレポートする。(Chromeのみ) Header set X-XSS-Protection "1; mode=block" # # <追加> # ブラウザが、HTTPレスポンスの検査(sniffing)を実施してコンテンツタイプを判断するのを防止する。 # 一部ブラウザは、HTTPレスポンスを検査(sniffing)し、ヘッダーにある Content-Type を無視して # コンテンツタイプを判断するものがある。⇒開発者の意図通りではなくセキュリティ上の問題に # つながる可能性がある。 # Header set X-Content-Type-Options nosniff # # <追加> # クリックジャッキング対策 # # DENY : 拒否 # SAMEORIGIN : 同じドメイン内のみページ表示を許可 # ALLOW-FROM <uri> : 指定されたURIのみページ表示を許可 Header set X-Frame-Options DENY # # <参考> # ポリシー指定により、さまざまな機能を制限する。 # https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-Security-Policy #
apache2.conf
<Directory /var/www/> # <変更> # ディレクトリの中身を表示しないようにする # Options Indexes FollowSymLinks Options FollowSymLinks AllowOverride None Require all granted </Directory>
# a2disconf serve-cgi-bin
# a2enmod ssl # a2ensite default-ssl
# <変更> # 生成した証明書ファイル、キーファイルを指定する。 # 以下は、Let's Encrypt にて生成した場合の例 # ※<ドメイン名>は適宜変更のこと。 # # SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem # SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key SSLCertificateFile /etc/letsencrypt/live/<ドメイン名>/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/<ドメイン名>/privkey.pem
/etc/apache2/sites-enabled/000-default.conf
# 追加 # http:// アクセスを https:// にリダイレクトする <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off # # [備考] # AWS の ELB を使用している場合は、下記設定で良い。 # RewriteCond %{HTTP:X-Forwarded-Proto} =http RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] </IfModule>
# HTST にて HTTPS を利用するように指示する Header set Strict-Transport-Security "max-age=315360000"
次のコマンドでリライトとヘッダー設定を有効にする。
# a2enmod rewrite # a2enmod headers
/etc/apache2/ssl.conf
#* SSLCipherSuite HIGH:!aNULL SSLCipherSuite !3DES:!aNULL:EDH+HIGH:ECDH+HIGH:-AES128:-3DES:-DSS:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA SSLHonorCipherOrder on SSLProtocol all -SSLv2 -SSLv3 -TLSv1
openssl ciphers -v '<SSLCiperSuite の値>' 例) openssl ciphers -v '!3DES:!aNULL:EDH+HIGH:ECDH+HIGH:-AES128:-3DES:-DSS:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA'
Apache2 を再起動する。
service apache2 restart
T.B.D.
ドメインを取得している場合、Let's Encrypt を用いて、 ブラウザ等にて警告等がでない HTTPS 通信が可能です。
# apt-get install certbot
# service apache2 stop
# certbox certonly いくつか問い合わせがあるので適宜回答する。 以下、選択例 > 1. ACME CAの認証方法 2: Spin up a temporary webserver (standalone) を選択 > 2. e-mail e-mail アドレスを入力 > 3. 利用規約同意 A : Agree を選択 > 4. ドメイン名入力 ドメイン名を入力
certificate file : /etc/letsencrypt/live/<ドメイン名>/fullchain.pem; certificate key file : /etc/letsencrypt/live/<ドメイン名>/privkey.pem;