Apache設定チェックリスト

本番環境のインフラなどをたまに仕事で担当させられるので、その時に使っているチェックリストです。

ちなみにApacheは2.4系を使うことが多いので違うバージョンの場合は対応方法が少し異なるかも知れませんが、ご了承ください。

$ httpd -v
Server version: Apache/2.4.53 ()
Server built:   Apr 12 2022 12:00:44

チェックリスト

以下はその詳細です。

タイムゾーンを適切に設定したかどうか

タイムゾーンを日本に変更する。

$ timedatectl list-timezones | grep Tokyo
Asia/Tokyo

# Asia/Tokyoが出てきた場合は下記コマンドで設定
$ timedatectl set-timezone Asia/Tokyo

デフォルトページとiconsフォルダを表示できないように設定したか

デフォルトのページとiconsフォルダはシステム上では不要な上に一部の情報が表示されてしまうので、表示できないようにします。

$ cd /etc/httpd/conf.d/

// デフォルトページの退避
$ mv welcome.conf welcome.conf.org

// iconsフォルダの退避
$ mv autoindex.conf autoindex.conf.org

ディレクトリの内容を一覧表示しないように設定したか

Apacheはデフォルトだと特定のフォルダに対してディレクトリの一覧表示が有効になっています。

見えてはいけないものも見えてしまっている可能性があるのでオフにしましょう。

$ vi /etc/httpd/conf/httpd.conf

# Indexesを消す
# Options Indexes FollowSymLinks
Options FollowSymLinks

HTTP TRACEメソッドを無効化したかどうか

HTTP TRACEメソッドを有効化したままだとXST(クロスサイトトレーシング)という攻撃にさらされる可能性があります。

なのでHTTP TRACEメソッドは無効化しましょう。

$ vi /etc/httpd/conf/httpd.conf

# 最後に追記する
TraceEnable off

X-Frame-Optionsヘッダを設定したかどうか

クリックジャッキングという攻撃を防ぐのに有効なX-Frame-Optionsヘッダというものを設定します。

$ vi /etc/httpd/conf/httpd.conf

# コメントアウトされている場合はコメントアウトを外す
LoadModule headers_module modules/mod_headers.so

# 最後に追記する
Header append X-FRAME-OPTIONS "SAMEORIGIN"

XSSフィルタリングを有効にしたかどうか

XSS(クロスサイトスクリプティング)を防ぐための設定で、ブラウザがXSS攻撃を検知した時にページのレンダリング(表示)を防ぐ設定にします。

$ vi /etc/httpd/conf/httpd.conf

# 最後に追記する
Header always set X-XSS-Protection "1; mode=block"

ダウンロードしたファイルを直接開けないようにしたかどうか

デフォルトだとダウンロードしたファイルをそのまま開くことができるのですが、そのままだとXSS攻撃の対象となる恐れがあります。

なのでそれを無効化します。

$ vi /etc/httpd/conf/httpd.conf

# 最後に追記する
Header set X-Download-Options: noopen

HTTPリプライヘッダへのサーバー情報表示を無効化したかどうか

デフォルトだとHTTPリプライヘッダにサーバー情報(Apacheのバージョン情報等)が表示されるのですが、攻撃者にヒントを与えないように表示される情報を最小限にします。

$ vi /etc/httpd/conf/httpd.conf

# 最後に追記する
ServerTokens ProductOnly
ServerSignature off

スニッフィング対策を実施したかどうか

MIME タイプを意図的に設定することで、MIMEタイプのスニッフィングを防ぐことができます。

$ vi /etc/httpd/conf/httpd.conf

# 最後に追記する
Header always set X-Content-Type-Options "nosniff"

SSL圧縮機能を無効にしたかどうか(SSLを使う場合のみ)

SSL圧縮機能が有効になっている場合サイドチャネル攻撃という攻撃を受ける可能性があるので無効にします。

$ vi /etc/httpd/conf/httpd.conf

# 最後に追記する
SSLCompression off

おわり

以上になります。書き方が誤っていたりする場合は教えてもらえると大変ありがたいです。

また、こちらの情報は随時追記していく予定です。

ありがとうございました!