Apache,Nginxのテスト | 余計なものを見せないようにする

こんにちは。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 ProdServerSignature 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

おわりに

以上の方法で見せたくない余計なものが表示されないように設定することができると思います。