話しすぎるラーメン店のサイト
町のラーメン店のサイトは、問題なく動いています。でも、裏で使っているソフトの正確なバージョンを、来た人全員に教えています。値段表のフォルダは、中のファイルを全部並べて見せます。設定ファイルの古い控えまで、公開されています。
誰も攻撃していません。ただ、話を控えるように、設定されていなかったのです。
たった1つのルール
注意
触ってよいのは、自分専用のラボのコピーだけです。このラボは、わざと弱く作ったサーバーで、インターネットにはつながっていません。許可のないサーバーを調べると、不正アクセス禁止法に触れる犯罪になることがあります。
このレッスンのゴール
メモ
Webサーバーが隠すべきこと、断るべきことを、言える。
今日のキーワード
| ことば | いみ | れい |
|---|---|---|
| 堅牢化 | 設定を変えて、見せるものと許すことを減らすことです。 | |
| ヘッダー | 返事の先頭にある、ブラウザへの指示の行です。 | Server: nginx |
| ディレクトリ一覧 | フォルダの中のファイルを、全部並べるページです。 | |
| TLS | ブラウザとサイトの通信を、暗号化する仕組みです。 | |
| 証明書 | サイトが本物だと示す、署名つきのファイルです。 | |
| HSTS | 安全なアドレスだけを使うよう、ブラウザに伝えるヘッダーです。 |
学生が入力するセルは、このプレビューでは空白です。
サーバーは話を控える
サーバーが余計なことを話すと、攻撃する人を助けます。バージョンの番号は、どの既知の弱点を試すかを教えます。フォルダの一覧は、公開するつもりのないファイルを見せます。
堅牢化では、要らないものを外します。Server ヘッダーのバージョン、フォルダの一覧、控えや設定のファイル、誰にでも開いている管理画面です。
ラボのサーバーを見る
ラボでは、小さなラーメン店のサイトが nginx で動いています。起動して、次の4つを実行しましょう。読むだけです。
1つ目は状態の行です。2つ目は Server ヘッダーです。3つ目は、守りのヘッダーを1つ数えます。4つ目は、フォルダのページを読みます。
状態の行
curl -s -I http://web | head -n 1ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
Server ヘッダー
curl -s -I http://web | grep -i "^server"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
X-Frame-Options の数
curl -s -I http://web | grep -ci "x-frame-options"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
フォルダのページの見出し
curl -s http://web/files/ | grep -o "Index of [a-z/]*"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
例: 4つの答えを読む
| Run | 表示 | 意味 |
|---|---|---|
| 状態の行 | HTTP/1.1 200 OK | サイトは答えている |
| Server ヘッダー | Server: nginx/1.27.5 | 正確なバージョンを全員に教えている |
| X-Frame-Options | 0 | この守りのヘッダーは、まったく送っていない |
| フォルダのページ | Index of /files/ が2行 | 断らずに、フォルダを並べている。1行は題名、1行は見出し |
学生が入力するセルは、このプレビューでは空白です。
守りのヘッダーがブラウザを導く
費用がかからず、問題の型をまとめて減らすヘッダーがいくつかあります。X-Content-Type-Options: nosniff は、ブラウザがファイルの種類を推測するのを止めます。X-Frame-Options は、他のサイトがあなたのページを枠に入れるのを止めます。
Content-Security-Policy は、動かせるスクリプトを絞ります。Referrer-Policy は、他のサイトへ渡すアドレスを絞ります。
よくある間違い
注意
「バージョンを隠せば、サーバーは安全になる」と考える人がいます。それは違います。隠せるのは、手がかりの1つだけです。古いままで、弱点が知られているサーバーは、弱いままです。手がかりを隠すと同時に、ソフトを新しく保ち、要らないものを外します。
通信は今の TLS で暗号化する
TLS には版があります。SSL 3、TLS 1.0、TLS 1.1 は古く、もう安全ではありません。許すのは TLS 1.2 と 1.3 だけです。
よい設定には、信頼できて期限内の証明書もあります。ふつうのアドレスは、安全なアドレスへ移します。HSTS を送り、ブラウザに安全なアドレスを覚えさせます。
見せるのは必要なものだけ
サイトに要るファイルだけを出します。控え、ソース管理のフォルダ、設定ファイルは、公開するフォルダの外に置きます。管理画面は、サインインの奥か、ネットワークの制限の奥に置きます。
外に出すものが1つ減れば、守るものも1つ減ります。