公開したサイトが見せすぎている?
サイトを公開すると、世界中の誰でもアドレスを打てます。そこに、見せるつもりのない物が置かれていることがあります。
パスワードの控えや、作業用の記録です。安全に公開するとは、見せる物と見せない物を分けることです。
このレッスンのゴール
メモ
サイトが見せすぎている所を見つけ、安全な設定に直す手順を言える。
重要な言葉
| ことば | いみ | れい |
|---|---|---|
| 設定ファイル | サーバーの動き方を書いた文書 | default.conf |
| nginx | ページを返すWebサーバーのソフト | |
| ヘッダー | レスポンスの先頭に付く、補足の情報 | |
| バージョン情報 | ソフトの版の番号。攻撃者の手がかりになる | nginx/1.27.5 |
| 一覧表示 | フォルダーの中身をそのまま見せてしまう設定 | |
| 最小限 | 必要なものだけを見せること |
学生が入力するセルは、このプレビューでは空白です。
このラボのルール
この練習は、自分のラボのサーバーだけで行います。ラボの外へは出られない作りです。
他人のサイトに同じことをしてはいけません。守るために、攻撃者の目で自分の設定を点検するのが目的です。
返事のヘッダーを見る
curl -I http://webここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
フォルダーの中身を見る
curl -s http://web/files/ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
最初の二つの見せすぎ
一つ目は Server: nginx/1.27.5 です。ソフトの版の番号を、誰にでも教えています。その版の弱点を知る人には手がかりになります。
二つ目は /files/ の一覧です。ページが無いフォルダーの中身が、そのまま並びます。
置き忘れたファイルは探される
作業用の .git フォルダーや、config.php.bak のような控えが、公開の場所に残ることがあります。中にはパスワードが入っていることもあります。
攻撃者は、よくある名前を順に試して、こういう物を探します。
例:置き忘れの名前と中身
| アドレス | 中に入っていそうな物 | あるべき返事 |
|---|---|---|
| /.git/config | 作業の記録と保管場所 | 404 |
| /config.php.bak | データベースのパスワード | 404 |
| /admin/ | 管理の画面 | 401 か 403 |
学生が入力するセルは、このプレビューでは空白です。
作業用ファイルの番号
curl -s -o /dev/null -w '%{http_code}\n' http://web/.git/configここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
管理の画面の番号
curl -s -o /dev/null -w '%{http_code}\n' http://web/admin/ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
直し方は設定ファイルの数行
どれも nginx の設定ファイルを数行直せば止まります。版を隠すのは server_tokens off;、一覧を止めるのは autoindex off; です。
ヘッダーを足すと、ブラウザーが守りを強くします。直したら設定を読み込み直します。
例:直した設定の一部
# これは例です。ラボでは、自分の設定ファイルを直します。
server_tokens off;
autoindex off;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options DENY;ラボの点検を実行する
docker exec web lab-checkここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
点検の読み方
点検は、一行ごとに PASS か FAIL を出します。まだ何も直していないので、FAIL がたくさん並びます。
この FAIL を一つずつ PASS に変えていくのが、ラボの課題です。
よくある間違い
注意
ファイルのアドレスを知らせなければ安全、と考えることです。アドレスは推測されます。見せない物は、置かないか、サーバーで止めます。
さらに挑戦:新しい点検
lint_config に、X-Content-Type-Options と X-Frame-Options のほかに、Referrer-Policy の点検を足しましょう。
足したあと、弱い設定の例で、三つのヘッダーが足りないと出ることを確かめます。