- 追加された行はこの色です。
- 削除された行はこの色です。
#navi2(RaspberryPi,toc,prev,next)
----
#contents
----
* Webサーバー(Apache2)のインストール [#kf76844b]
**インストール [#z6094a07]
# apt-get install apache2
**設定 [#b34ddb09]
***言語優先順位設定 [#cad512f3]
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
***サーバーの不要な情報を返さない。 [#rf2c9e7a]
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"
***セキュリティ強化のためのヘッダ―追加 [#o6c8facf]
#
# <追加>
# ブラウザが持つ、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
#
***ディレクトリの中身を表示しないようにする [#rc13add7]
apache2.conf
<Directory /var/www/>
# <変更>
# ディレクトリの中身を表示しないようにする
# Options Indexes FollowSymLinks
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
***不要な機能を停止する。 [#jf5936e6]
# a2disconf serve-cgi-bin
***HTTPS [#faadda7a]
+apache の ssl モジュールとサイトを有効にする。
# a2enmod ssl
# a2ensite default-ssl
+下記ファイルを修正する
sites-enables/default-ssl.conf
# <変更>
# 生成した証明書ファイル、キーファイルを指定する。
# 以下は、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
***HTTPSのみを有効にする。 [#lf8eeb88]
# a2dissite 000-default
***HTTPS のみを使用する。(http:// アクセスを https:// にリダイレクトする。) [#ad8f868c]
/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
**SSL関係設定 [#r35e47d3]
/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
***備考 [#rcae01bb]
-Cipher は、 次のコマンドで有効になる組み合わせの確認ができます。
openssl ciphers -v '<SSLCiperSuite の値>'
例)
openssl ciphers -v '!3DES:!aNULL:EDH+HIGH:ECDH+HIGH:-AES128:-3DES:-DSS:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA'
-Openssl の Cipher の値と IANA の対応は下記URLが参考になります。
https://testssl.sh/openssl-iana.mapping.html
-次のURLで SSL のテストが可能です。
https://www.ssllabs.com/ssltest/analyze.html
**設定の反映 [#m93f6250]
Apache2 を再起動する。
service apache2 restart
----
**HTTPS の証明書の作成方法 [#oc88b6e3]
***自己証明証を用いた HTTPS 対応 [#ydf6b5e2]
T.B.D.
***Let's Encrypt を用いた HTTPS 対応 [#c9306221]
ドメインを取得している場合、Let's Encrypt を用いて、
ブラウザ等にて警告等がでない HTTPS 通信が可能です。
+インストール
# apt-get install certbot
+ルーターなどの設定を変更し、外部から HTTP, HTTPS にアクセスできる状態にする
+Apache を一旦停止する。
# 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;
----
#navi2(RaspberryPi,toc,prev,next)