Webサーバー(Apache2)のインストール

インストール

# 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

HTTPS

  1. apache の ssl モジュールとサイトを有効にする。
    # a2enmod ssl
    # a2ensite default-ssl
  2. 下記ファイルを修正する 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:// にリダイレクトする。)

/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関係設定

/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

備考

設定の反映

Apache2 を再起動する。

service apache2 restart

HTTPS の証明書の作成方法

自己証明証を用いた HTTPS 対応

T.B.D.

Let's Encrypt を用いた HTTPS 対応

ドメインを取得している場合、Let's Encrypt を用いて、 ブラウザ等にて警告等がでない HTTPS 通信が可能です。

  1. インストール
    # apt-get install certbot
  2. ルーターなどの設定を変更し、外部から HTTP, HTTPS にアクセスできる状態にする
  3. Apache を一旦停止する。
    # service apache2 stop
  4. 証明書生成
    # certbox certonly
    いくつか問い合わせがあるので適宜回答する。
    以下、選択例
    > 1. ACME CAの認証方法
    2: Spin up a temporary webserver (standalone) を選択
    > 2. e-mail
    e-mail アドレスを入力
    > 3. 利用規約同意
    A : Agree を選択
    > 4. ドメイン名入力
    ドメイン名を入力
  5. 以下に、サーバー証明書とキーファイルが生成されます。
    certificate file     : /etc/letsencrypt/live/<ドメイン名>/fullchain.pem;
    certificate key file : /etc/letsencrypt/live/<ドメイン名>/privkey.pem;

トップ   差分 バックアップ リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS