こんにちは。hacknoteのr.katoです。
今回はApacheやNginxを使ってサイトを作成した際、デフォルトページやwebサーバーのバージョン情報など見えては困るコンテンツを見せないようにする方法の紹介です。
目次
デフォルトページの無効化
apacheをインストールして起動後にサーバーにブラウザでアクセスすると次のような画像やデフォルトのエラーページが表示されるようになっています。
あくまでもこのページは正常にインストールされたかの確認ページなので表示されては困る場合があります。
場合によってはインストールされているもののバージョン情報などが表示され、セキュリティを下げてしまうこともあります。
初期設定ではDirectoryIndexやDocumentRootに指定したファイルが存在しなければ、デフォルトページを表示するようになっています。
Apacheの場合は /etc/httpd/conf.d/welcome.confファイル
の中身をコメントアウトし、
Nginxの場合は /etc/nginx/nginx.conf
or /etc/nginx/conf.d/以下
にAlias又はドキュメントルート、 /usr/share/nginx/html/
の設定がないようにする必要があります。
チェック方法
次のコマンドで調べることが可能です。
[Apache] cat /etc/httpd/conf.d/welcome.conf | egrep -v "^#" [Nginx] grep root /etc/nginx/nginx.conf grep root /etc/nginx/conf.d/*
Apacheの場合は#でコメントアウトしたところ以外を標準出力するようにしているので、何か表示されたら、コメントアウトする必要があり、
何も標準出力されなかったら特に変更する必要はないです。
Nginxの場合は指定ファイル内にある指定のワードのをすべて表示し、余計なところをコメントアウトすればよくなっています。
ディレクトリリスティングの無効
ディレクトリリスティングとは次の画像のように、URLをしていすると指定したディレクトリ内のファイル一覧を表示するApacheやNginxの機能を指します。
この機能を有効にしておくと、攻撃者から構造が丸見えになってしまうため、脆弱性として扱われることもあります。
チェック方法
Apacheの場合、 Options indexes
が無いこと、
Nginxの場合、 autoindex on
が無いことを確認する必要があります。
次のコマンドで確認をすることができます。
[Apache] for conf in `ls -1 /etc/httpd/conf.d/ | egrep "*.conf$"`; do echo "[/etc/httpd/conf.d/$conf]"; egrep -v "^#" /etc/httpd/conf.d/$conf | sed -n '/<Directory/,/<\/Directory>/p'; echo ""; done [Nginx] grep autoindex /etc/nginx/nginx.conf grep autoindex /etc/nginx/conf.d/*
Apacheの場合、次のように標準出力されるので、適宜機能を無効化する事ができます。
[/etc/httpd/conf.d/app.conf] <Directory "/var/www/dehydrated"> AllowOverride None Require all granted </Directory> [/etc/httpd/conf.d/autoindex.conf] <Directory "/usr/share/httpd/icons"> Options Indexes MultiViews FollowSymlinks AllowOverride None Require all granted </Directory> [/etc/httpd/conf.d/ssl-set.conf] [/etc/httpd/conf.d/ssl.conf] <Directory "/var/www/cgi-bin"> SSLOptions +StdEnvVars </Directory> [/etc/httpd/conf.d/userdir.conf] <Directory "/home/*/public_html"> AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS </Directory> [/etc/httpd/conf.d/welcome.conf]
DocumentRoot以下のテストファイルの削除
DocumentRoot以下に作成した余計なファイルが残っていると、何かの拍子に表示されてしまう可能性があります。
そのため、DocumentRootでlsするなどして確認し、削除しましょう。
iconディレクトリの無効化(Apacheのみ)
iconディレクトリ内にはデフォルトコンテンツで使う画像などが含まれています。
これを無効化するには /etc/httpd/conf.d/autoindex.conf
内の Alias /icons/ "/usr/share/httpd/icons/"
をコメントアウトすれば良いです。
チェック方法
次のコマンドで確認ができます。
grep Alias /etc/httpd/conf.d/autoindex.conf
webサーバーのバージョンを表示しないようにする
次の画像のように404ページなどでwebサーバーのバージョンが表示されてしまう場合があります。
これにより、特定のバージョンの脆弱性をついたアタックがしやすくなってしまいます。
そのため、Apacheの場合は /etc/httpd/conf/httpd.conf
ファイル内の ServerTokens Prod
と ServerSignature off
を、
Nginxの場合は /etc/nginx/nginx.conf
ファイル内のhttpの中に server_tokens off
を設定しておく必要があります。
チェック方法
次のコマンドで確認することができます。
[Apache] grep ServerTokens /etc/httpd/conf/httpd.conf grep ServerSignature /etc/httpd/conf/httpd.conf [Nginx] grep server_tokens /etc/nginx/nginx.conf
おわりに
以上の方法で見せたくない余計なものが表示されないように設定することができると思います。