Edited at

AWSのApache2.4の初期設定とセキュリティ設定


 最初にする設定 httpd.conf, welcome.conf

設定が無い物は追記して、既存にあるものは変更する。又はコメントアウトして無効化する。


  • ServerAdminにemailを設定する。

  • ServerNameを設定する。

  • クロスサイトトレーシング対策(Basic認証のパスが漏れないようにする。)

  • トップページにディレクトリ一覧が表示する事を防ぐ

  • CGI を使ってない場合は、/cgi-bin/のエイリアス設定を無効にする。設定をコメントアウトする

  • SSI(サーバサイドインクルード)の使用を無効にする(デフォルトで無効なので特に記述追加は無し)


httpd.conf


# 変更 サーバー管理者への問い合わせ先メールアドレスに変更する
ServerAdmin webmaster@example.jp

# 変更 ドメインと合わせる。
ServerName hogehoge@example.com:80

# 追加 クロスサイトトレーシング対策 TRACE無効化
TraceEnable Off

<Directory "/var/www/html">

# 変更 -Indexesとしてトップページにディレクトリ一覧が表示する事を防ぐ
Options -Indexes FollowSymLinks

・・・省略・・・

# コメントアウト cgi-binを使用しない
#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

#<Directory "/var/www/cgi-bin">
# AllowOverride None
# Options None
# Order allow,deny
# Allow from all
#</Directory>



  • アパッチのトップページ(テストページ)を非表示にする。welcome.confの中身をコメントアウト


conf.d/welcome.conf


# コメントアウト テストページを非表示にする
#<LocationMatch "^/+$">
# Options -Indexes
# ErrorDocument 403 /error/noindex.html
#</LocationMatch>


共通セキュリティ security.conf


  • レスポンスヘッダ Server Apache/2.4.12 (Amazon)とかfullで出さない。

  • レスポンスヘッダ X-Powered-By PHP/5.3.29とか出さない。

  • 脆弱性のあるsslプロトコルのsslv3を無効にする。

  • .htaccessを許可したいディレクトリは個別に設定する。

  • v2.4はデフォルトでServerSignature Off


conf.d/security.conf


# Hide Apache Version
ServerTokens Prod

# Hide Header X-Powered-By
Header always unset X-Powered-By

# Anti POODLE
SSLProtocol All -SSLv3

# .htaccessファイルを許可するディレクトリを個別に指定します。
<Directory /var/www/html/hogehoge>

AllowOverride All
</Directory>



AWS ロードバランサーにぶら下がっている場合 aws_elb.conf


  • 408ログがELBから多発する時の設定を入れる。
    コネクションタイムアウトデフォルト60秒なので、RequestReadTimeout headerをそれより大きく設定する

  • アクセスログにELBのIPが出てしまうのでアクセス元のIPが表示されるログフォーマットを作成


conf.d/aws_elb.conf


# Set over AWS ELB connection time out default 60s
RequestReadTimeout header=70

# ELB access_log format
LogFormat "%h %{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" elbcombined



最後に

自分の技術ブログではフリーランス界隈の情報や最新のIT情報の発信していますので、よろしくお願いします。