本番環境のインフラなどをたまに仕事で担当させられるので、その時に使っているチェックリストです。
ちなみにApacheは2.4系を使うことが多いので違うバージョンの場合は対応方法が少し異なるかも知れませんが、ご了承ください。
$ httpd -v
Server version: Apache/2.4.53 ()
Server built: Apr 12 2022 12:00:44
チェックリスト
- タイムゾーンを適切に設定したかどうか
- デフォルトページとiconsフォルダを表示できないように設定したか
- ディレクトリの内容を一覧表示しないように設定したか
- HTTP TRACEメソッドを無効化したかどうか
- X-Frame-Optionsヘッダを設定したかどうか
- XSSフィルタリングを有効にしたかどうか
- ダウンロードしたファイルを直接開けないようにしたかどうか
- HTTPリプライヘッダへのサーバー情報表示を無効化したかどうか
- スニッフィング対策を実施したかどうか
- SSL圧縮機能を無効にしたかどうか
以下はその詳細です。
タイムゾーンを適切に設定したかどうか
タイムゾーンを日本に変更する。
$ 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
おわり
以上になります。書き方が誤っていたりする場合は教えてもらえると大変ありがたいです。
また、こちらの情報は随時追記していく予定です。
ありがとうございました!