#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:
 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 のみを使用する。(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)
トップ   差分 バックアップ リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS