ニシキヘビってかわいいよね、実際みたことないけど。

いよかん国でプログラミングとかの備忘録を書いてます。 一日一食たまごかけごはん。

apacheやっつけ設定

CentOS 7.2, Apache2.4.6

httpd.conf】

  • ServerAdmin にメールアドレスを書いておく
  • /var/www/html以外で「Require all granted」 となっているところがあったら一旦全部コメントアウト
  • /で 「Require all denied」 が設定されていることを確認
  • ディレクトリリスティング機能を無効化するために Options の Indexes を全削除
  • 「AllowOverride None」 を確認
  • トレースメソッドの無効化 「TraceEnable off」を書き込む
  • クリックジャッキング対策 以下2行を書き込む
    1行目はロード済みなら不要(/conf.modules.d/00-base.confを確認)
LoadModule headers_module modules/mod_headers.so
Header append X-FRAME-OPTIONS "SAMEORIGIN"
  • サーバー情報表示の無効化 以下2行を書き込む
ServerTokens ProductOnly
ServerSignature off
  • 403の偽装 以下2行を書き込む
    (wiresharkとかのパケットキャプチャからはバレるので気休め程度)
ErrorDocument 403 "Mot Found"
ErrorDocument 404 "Not Found"
  • 403の偽装 phpが使えるならヘッダも偽装
    端末で
sudo mkdir /var/www/html/error
echo '<?php header("HTTP", true, 404);print("Not Found");' | sudo tee /var/www/html/error/error.php

実行後以下を書き込む

<Directory "/var/www/html/error">
    AllowOverride None
    Require all granted
</Directory>
ErrorDocument 403 /error/error.php
ErrorDocument 404 /error/error.php

php.ini】

  • 場所がわかんなかったら locate php.ini
  • phpの情報を喋らせないようにするため expose_php = Off を設定

【conf.d以下について】

  • autoindex.conf
    ディレクトリリスティングの見栄えを良くするコンフィグ
    使わないなら削除か拡張子のリネーム推奨

  • userdir.conf
    Linuxユーザーのディレクトリをwebに公開できる
    UserDir disabled を確認する
    使わないなら削除か拡張子のリネーム推奨

  • welcome.conf
    インストール直後にルートディレクトリを表示させると出てくるあれの設定
    コメントアウトするとあれが表示されなくなる
    使わないなら削除か拡張子のリネーム推奨

  • php.conf
    特に変更不要?

  • phpMyAdmin.conf zabbix.conf などのwebインターフェースの.conf
    それぞれのwebインターフェースに関わる.conf
    必ずRequireで信頼するホストのみの設定ができているか確認すること