コース目次 / 第3章

公開しない — 127.0.0.1 に閉じる

わざと穴を空けたアプリを公開する危険を理解し、127.0.0.1 限定で動かす作法を身につけます。共有するならソースだけ・非公開を必須項目にする、作り手の責任を固めます。

第3章 / 全5章目安 約8分この章のゴール: 自作やられを外に出さない理由と方法を理解し、非公開を必須項目にする

作ったやられアプリには、作り手の責任が付いてきます。この章は、その責任のいちばん大事な一点——外に出さない——を、作法として固めます。

法と倫理ゲート

手を動かす前に

このコースは攻撃の技術に触れます。実習してよい相手は、次の3つだけです。

  • (a) 自分で作った練習用のやられ環境(このサイトが配る自作ターゲット)
  • (b) あなた自身の許可された環境(自分の Thousand SKY・secret-notes-ctf など)
  • (c) CTF 競技の中(規約の範囲で)

実在する第三者のシステムを許可なく触ることは、不正アクセス禁止法に触れます。 このゲートは、その線引きを毎回の入口で確かめるためのものです。詳しくは「セキュリティの法と倫理」へ。

なぜ、公開してはいけないのか

あなたが作ったのは、意図的に穴の空いたプログラムです。もしこれをインターネットからアクセスできる場所に置いたら、どうなるか。

自動化された攻撃ボットは、インターネット中のサーバを絶えずスキャンしています。穴のあるアプリを公開すれば、数分〜数時間で見つかり、侵入されます。侵入された先が、他人への攻撃の踏み台にされれば——スパムの送信元、別の攻撃の中継地——あなたが加害の起点になります。
「学習用のつもり」は、被害を受けた相手には関係ありません。わざと空けた穴を公開することは、それ自体が危険な行為です。だからこのコースは、最初から 127.0.0.1 だけで動かしてきました。

127.0.0.1 に束ねる、の意味

このコースのサンプルは、すべて listen(ポート, '127.0.0.1', ...) の形で起動していました。この '127.0.0.1' が効いています。

サーバを起動するとき、どのアドレスで待ち受けるかを指定できます。
‘127.0.0.1’(ループバック)に束ねると、その PC 自身からの接続しか受け付けません。同じ LAN の別の端末からも、インターネットからも届かない。
逆に ‘0.0.0.0’ やアドレス指定なしにすると、ネットワーク中に開いてしまう環境があります。学習用のやられを、これで起動してはいけません。
「自分の PC の中だけ」を、コードのこの一箇所が保証しています。サンプルを自分版に書き換えるときも、ここは ‘127.0.0.1’ のままにします。

念のため、クラウドのサーバや、ポートを外に転送する設定(ポートフォワーディング、トンネリングツール)で、うっかり外へ出さないこと。「便利だから」と公開経路に載せた瞬間、127.0.0.1 の守りは無効になります。

共有するなら、ソースだけ

「友達にも試してほしい」——気持ちは分かります。でも、動いている状態のやられを公開するのではなく、ソースコードを渡して、相手も自分の 127.0.0.1 で動かすのが正しい形です。

このサイト自身が、その手本です。やられアプリはソース(コード)としてページに載せ、学習者が各自の localhost で動かす。稼働中のやられを、誰もがアクセスできる URL では配らない。sec-tooling でツールを「同梱せず導線だけ」にしたのと同じ発想——危険なものは、受け取った人が自分の閉じた環境で動かす形にします。

テンプレの必須項目にする

第1章の設計ノートには、この一行を必ず入れました。もう一度、確かめます。

■ 取り扱い(必須)
□ 127.0.0.1 でだけ動かす。インターネットに公開しない。
□ 共有するならソースだけ。稼働中のやられを公開URLに載せない。
□ ダミーデータは「架空」で統一。実在情報を入れない。

この「取り扱い」欄を必須にするのは、うっかりを防ぐためです。作ることに夢中になると、閉じておくことを忘れます。設計ノートの最後に必ずこの欄がある——それが、作り手としての自分への歯止めになります。作る自由と、閉じておく責任は、いつも対です。

持ち帰る一言

作る自由には、閉じておく責任が対で付く。 わざと穴を空けたアプリは、公開すれば踏み台にされ、あなたが加害の起点になりうる。127.0.0.1 に束ね、共有はソースだけ、非公開を設計テンプレの必須項目にする。これで capstone の芯がそろいました。次はまとめて、T0 を締めます。

こうなっていればOK

卒業まであと1章です。

この章はまだ完了していません。