クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

安全な設定でサイトを公開する

このレッスンのあとで: サイトが見せすぎている所を見つけ、安全な設定に直す手順を言える。

50分のレッスンコマンド5件Web サーバー堅牢化のラボ:弱い nginx の設定を直して curl で確かめる

公開したサイトが見せすぎている?

サイトを公開すると、世界中の誰でもアドレスを打てます。そこに、見せるつもりのない物が置かれていることがあります。

パスワードの控えや、作業用の記録です。安全に公開するとは、見せる物と見せない物を分けることです。

このレッスンのゴール

メモ

サイトが見せすぎている所を見つけ、安全な設定に直す手順を言える。

重要な言葉

ことばいみれい
設定ファイルサーバーの動き方を書いた文書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; です。

ヘッダーを足すと、ブラウザーが守りを強くします。直したら設定を読み込み直します。

例:直した設定の一部

コード: bash
# これは例です。ラボでは、自分の設定ファイルを直します。
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 の点検を足しましょう。

足したあと、弱い設定の例で、三つのヘッダーが足りないと出ることを確かめます。

このラボとソースについて: Web サーバー堅牢化のラボ:弱い nginx の設定を直して curl で確かめる

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。