個人的にApacheのセキュリティを考慮した設定を記載します。
iconsディレクトリ対策
デフォルトコンテンツで使う画像などが設置されているディレクトリについて、コンテンツ表示を無効化する。
autoindex.confの修正
vi /etc/httpd/conf.d/autoindex.conf
※以下の箇所をコメントアウト。
#Alias /icons/ "/usr/share/httpd/icons/"
#<Directory "/usr/share/httpd/icons">
# Options Indexes MultiViews FollowSymlinks
# AllowOverride None
# Require all granted
#</Directory>
welcome.conf削除
非表示でもいいと思いますが、公開不要なものなので削除。
rm -f /etc/httpd/conf.d/welcome.conf
security.conf作成
vi /etc/httpd/conf.d/security.conf
※以下記載。
# バージョン情報の隠蔽
ServerTokens Prod
ServerSignature Off
# inode情報の隠蔽
FileETag None
# レスポンスヘッダからX-Powered-Byを削除
Header unset X-Powered-By
# httpoxy 対策
RequestHeader unset Proxy
# クリックジャッキング対策
Header append X-Frame-Options SAMEORIGIN
# XSS対策
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff
# XST対策
TraceEnable Off
<Directory /var/www/html>
# .htaccess の有効化
AllowOverride All
# ファイル一覧出力の禁止
Options -Indexes
</Directory>
クライアントから送信されるHTTPリクエストに関する設定
数値はあくまで例です。LimitRequestFieldSize が4096だと、
長いCookieコンテンツを送信した場合、Bad Requestが発生することもあります。
ただCookieの長さの上限をあまり大きくしないほうがセキュアです。
# リクエストボディの最大サイズ
LimitRequestBody 655360000
# リクエストヘッダーの最大数
LimitRequestFields 32
# リクエストヘッダーの最大サイズ
LimitRequestFieldSize 4096
# リクエストラインの最大サイズ(各リクエストの最初のライン)
LimitRequestLine 4096
ダミーのVirtual Hostを設定
IPアドレスや意図しない逆引きアドレスからアクセスされないよう、最初ダミーのVirtualHostを設定します(↓はexample.comというドメイン名の場合)。この設定をしてログを確認すると、どれだけ不審な送信元IPからアクセスを受けているかわかります。
NameVirtualHost *:80
<VirtualHost *:80>
ServerName dummy.example.com # 適当な名前でよい
...
</VirtualHost>
<VirtualHost *:80>
ServerName example.com # 実際に使用しているドメイン
...
</VirtualHost>