AIエージェントことはじめ — LAB 007
— 外に持ち出すと決めた日から —
MacBook を買った理由は、カフェで作業したかったから。それだけでした。 席について店の Wi-Fi につないだ瞬間に、ふと思ったんです。 ——この電波、ほかに誰が聞いているんだろう。 持ち出すと決めた日から、守るものが2つに増えます。
この記事を読むとできること
想定している使い方
MacBook を持ち出して使う人向けです。主に Mac の設定画面と、ターミナル(文字で命令を打ち込むアプリ)への貼り付けで進めます(iPhone の設定も使います)。 説明はすべて Mac が前提です。
※ LAB 005(git をひとりで使う) までを終えている前提ですが、この記事だけ読んでも成り立ちます。
読む目安:約12分 ・ 手を動かす目安:約40分(STEP 1〜5)
INTRO
家に置いた Mac 1台で作業していたころ、セキュリティのことはほとんど考えていませんでした。 自宅の Wi-Fi につながっているのは自分のコンピュータだけで、外からの入口も開けていない。 閉じた部屋の中で完結していたからです。
それが、MacBook を1台足した瞬間に変わりました。 守る対象が「持ち出すコンピュータそのもの」と 「家に置いてきた本体へつなぐ経路」の2つに増えます。
図の見方:左の枠は、家の中だけで使っていたころです。Mac mini が1台あるだけで、外に向いた面がありません。 右の枠は MacBook を足したあとで、守る対象が2つに増えています。
次の STEP 1 から手を動かします。怖がる順番の考え方は、巻末の 「知っておくと便利な知識」にあります。
STEP 1 — 目安 5分(決めるだけ)
「カフェの Wi-Fi は危ない」とよく言われますが、何がどう危ないのかは
あまり説明されません。実際に起きるのは3つです。
アクセスポイントは Wi-Fi の電波を出す機器、https は通信を暗号化する仕組み
(アドレスが https:// で始まるサイト)のことです。
また、この記事の「鍵マーク」は2種類あります。Wi-Fi の名前の横の鍵は「パスワード付きの電波」の印、
アドレス欄の鍵は https の印で、別のものです。
上から順に、店の Wi-Fi で起きる3つのことを描きました。いちばん怖いのは②です。①は https の普及でかなり防げますが、②は「つないだ相手そのものが偽物」なので、 アドレス欄に鍵マークが出ていても安心できません(偽のログイン画面を出されると見分けがつきません)。 だから最も強い対策は、暗号化を確かめることではなく、そもそも店の電波を使わないことです。
店の電波の使い方を、強い順に3つ並べます。上から選べるものを選んでください。
1番 iPhone のテザリングを使う
テザリングは、iPhone の回線を経由して MacBook をネットにつなぐ機能です。自分専用の回線なので、①の電波の盗み見も②の偽アクセスポイントも最初から起きません。 これが一番強く、一番簡単です。
2番 VPN を通す
VPN(通信をまるごと暗号の管に包んで送る仕組み)を通せば、店の電波は使っても、中身は包んでから流れます。ただし信用できる提供元を選ぶ必要があります。
3番 店の Wi-Fi をそのまま使う
鍵マーク(アドレス欄に出る鍵の印。通信が暗号化されている合図)のあるサイトだけにします。 銀行・パスワード変更・カード入力はしません。
iPhone の「設定」で「インターネット共有」をオンにし、 MacBook の Wi-Fi 一覧から自分の iPhone を選ぶだけで使えます(名称は iOS の更新で変わることがあります)。
「ギガが心配」と思うかもしれませんが、 文字を書く作業の通信量は驚くほど小さいです。重い動画や大きなファイルは、カフェでやらなければいいだけです。 私は結局、店の Wi-Fi をほとんど使わなくなりました。
「同意します」の画面には気をつけてください。 店の Wi-Fi につなぐと出てくる同意画面は、本物と偽物の区別がつきにくい場所です。 そこでメールアドレスやパスワードを入力しない、とだけ決めておけば十分です。
STEP 2 — 目安 5分
技術の話をひとつもしないのに、実際にいちばん起きやすいのがこれです。 特別な道具も知識も要らず、ただ見るだけで成立します。
トイレに立つ3分が、いちばん危ない時間です。画面を開いたまま離れると、操作されます。 ⌘(コマンド)+ control + Q でその場ですぐロックできます。
背中を壁に向けるのがいちばん効きます。 通路側・後ろが広い席は、自分から見えない角度に何人もいます。座る場所を変えるほうが、道具を買うより早いです。
斜めからは真っ黒に見えるフィルムです。効果は確実ですが、 正面からは普通に見えるので、ロックや席の選び方の代わりにはなりません。 その2つをやったうえでの上積みと考えてください。
音声入力や通話は、画面より広く届きます。 見られない対策をしても、話していたら同じです。 カフェでは声を使う作業を避ける、と決めておくと単純です。
✓ ここまでの確認: 席を立つときに手が勝手に ⌘ + control + Q を押すようになっていれば、 この STEP は身に付いています。
STEP 3 — 目安 10分
ここで入れるスイッチは2つだけです。FileVault(ディスクの中身を暗号化して、盗まれても読めなくする機能)と、ファイアウォール(外からの接続を門前払いする機能)です。どちらも macOS に最初から付いています。 Gatekeeper と XProtect(怪しいアプリを止めたり見つけたりする仕組み)は、何もしなくても最初から働いています。下の図のとおり、この3つは別々の事故に対応しています。
画面左上のアップルマークから「システム設定」を開き、次の2つをオンにします。
FileVault
「プライバシーとセキュリティ」→「FileVault」の順に開いてオンにします。 途中で、復旧キー(パスワードを忘れたときの代わりになる鍵)の扱いを選ぶ画面が出ます。 復旧キーを作る選び方をしたら、表示されたキーを紙に書くか、パスワード保管アプリに入れて、Mac の外に控えてください。
ファイアウォール
「ネットワーク」→「ファイアウォール」の順に開いてオンにします。
ほかに2つ、盗まれたあとのための備えがあります(上の図の3つとは別枠です)。 「ユーザとグループ」で自動ログインをオフにすると、再起動されてもパスワード無しでは開けません。 「Apple アカウント」→「iCloud」→「Mac を探す」をオンにすると、位置を探したり、中身を消したりできます。まとめて入れておいてください。
ターミナル(Mac に最初から入っています。開くには
⌘(コマンド)+ スペース を押し、ターミナル と打って出てきたものを開きます)に貼って(下の枠の「コピー」を押し、⌘+V で貼ります)Enter を押せば、設定画面を開かずに確かめられます。
fdesetup status
/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
spctl --status
それぞれ On / enabled と出ていれば大丈夫です(3行目は Gatekeeper の確認で、入れる操作はありません)。
復旧キーを作った場合、無くすとパスワードを忘れたときに自分でも開けなくなります。Mac の外に控えたか、いま確かめてください。
FileVault は、据え置きの Mac なら「入れたほうがいい」程度ですが、 持ち歩くなら必須です。盗まれたコンピュータは、電源を切られたあと何時間でも調べられるからです。
STEP 4 — 目安 15分 / この記事の山場
外から家の Mac を触りたい——そう思ったとき、多くの人が最初に調べるのが 「SSH を開ける」「画面共有を開ける」です。 動くことは動きます。ですが、これは家の玄関を作って、住所を世界に公開するやり方です (外からの攻撃をどう考えるかは、巻末の「知っておくと便利な知識」に書きました)。
SSH(エスエスエイチ)とは、離れたコンピュータへ文字だけの命令を送って操作する仕組みです (「画面共有」は画面ごと映します)。 ただし、「自分が使えるようにする」ことと「誰からでも使えてしまう」ことは同じ設定の裏表です。 この扉を開けると、家の住所にあたる IP アドレス(ネット上の番号)を知る誰からも、扉が見えるようになります。
鍵は、パスワードを複雑にしたり、公開鍵 (自分だけが持つ鍵と、相手に渡してよい鍵を分けて使う、破られにくい仕組み)に変えたりして強くできますが、 扉があること自体は隠せません。扉の作りに穴が見つかれば、鍵の強さは関係なくなります。
両方のコンピュータが「自分から外へ」つなぎに行くので、 どちらも待ち受けず、外から見える扉はゼロのままです。 そのうえで、同じアカウントで入れたコンピュータ同士だけが互いに見えるようになります。 SSH も画面共有も、閉じたままで構いません。 この道を通して、家の Mac の自作アプリ(STEP 5)をブラウザで開きます。開き方は LAB 008 で説明します。
家の Mac と、持ち出すコンピュータ(MacBook・iPhone)の両方に
Tailscale(自分のコンピュータ同士だけを安全に直結するアプリ。Mac は tailscale.com から、iPhone は App Store から入れます)を入れて、
同じアカウントでログインします(Google や Apple などのアカウントで登録できます。持ち出す側も、必ず家の Mac と同じアカウントで入ります)。個人で使う範囲なら無料の枠で足ります。
入れ終わると、それぞれのコンピュータに 100. で始まる専用の番地が振られます。
これは自分のコンピュータ同士でしか使えない番地で、外の誰かが辿り着けるものではありません。
✓ ここまでの確認: カフェの Wi-Fi につないだ MacBook で Tailscale のアプリ(Mac では画面上端のメニューバーにあるアイコン)を開くと、家の Mac が一覧に出て、その番地が見える(この道で家の Mac のアプリを開くのは LAB 008)。 それでいて、家のルータ(家のネット回線の出入口の機器)には何ひとつ穴を開けていない。
全部を外へ出す必要はありません。 自作アプリのうち、特に大事な情報を扱うものだけは意図的に外へ出さない、という決め方もあります。 家の Mac の前に座ったときしか開けない、と決めておく方法です。 便利にできるからといって、全部を便利にしない——これは後の記事でも繰り返し出てくる考え方です。
STEP 5 — 目安 5分 / 自分で道具を作る人だけ
AI に道具を作らせていると、画面のあるアプリ——ブラウザで開くもの——が増えてきます。 このとき、1行の書き方の違いで、カフェの他の客から自分のアプリが開けてしまいます。
「待ち受け」とは、アプリが外からの接続を受け付ける窓口になることです。AI は何も言わずに 0.0.0.0 と書くことがあります。
これは「どの入口からでも受け付ける」という意味で、同じ Wi-Fi にいる全員が対象に含まれます。
一方の 127.0.0.1 は「自分自身」だけを指す番地で、外からは届きません。
なお、下の図にある :8050 のようなコロンのあとの数字はポート番号(アプリごとの窓口の番号)です。
直し方は1行です。AI に頼むなら、どのアプリのことかを添えて、これで通じます。
このアプリの待ち受けを 0.0.0.0 から 127.0.0.1 に変えて。
理由も1行コメントで残して。
いま何が外を向いているかは、STEP 3-2 と同じようにターミナルへ貼る次の1行で見られます。
各行の右のほうに 127.0.0.1:8050 や *:8050 のような「番地:ポート番号」が出るので、
番地の部分が 0.0.0.0 や * になっている行が、その対象です。
lsof -nP -iTCP -sTCP:LISTEN
✓ ここまでの確認:
一覧に出てくる自分のアプリが、すべて 127.0.0.1 になっている。
Apple の機能(AirDrop や連係)が別の行で出てきますが、それは気にしなくて構いません。
SKIP
満たしていない=危ない、ではありません。 この構成では要らないと判断したものを、理由つきで挙げます。
| よく勧められるもの | やらない理由 |
|---|---|
| ステルスモード(ファイアウォールの設定のひとつ) | 呼びかけに返事をしなくなるだけ。扉が閉まっているなら、返事の有無は関係ありません |
| SSH を強化する | STEP 4 の方式ならそもそも開けません。開けないものを強化する作業は発生しません |
| 市販のウィルス対策ソフト | 個人で普通に使う範囲なら、macOS が持っている仕組みで足ります。動作が重くなる副作用のほうが確実 |
| チェックリストに手で丸を付ける | 付けた瞬間から古くなります。次の節のように、開くたびに測り直す形にします |
大事なのは、やらない理由を書き残しておくことです。 書いていないと、半年後の自分が良かれと思ってやり直します。
MEASURE
ここまでを1回やれば、当面の備えは済みます。問題は半年後で、OS の更新などで外れていることがあります。
なので私は、開くたびに測り直す小さな画面を自分用に作りました。同じ Mac でも「持ち出すかどうか」で合否の基準を変えています。
判定の分かれ目は、バッテリーを積んでいるかどうかだけです。それで「このコンピュータは持ち出される」と決めています。単純ですが、外したことがありません。
同じ画面を作らなくても、STEP 3-2 の3行と STEP 5 の1行を半年に一度ターミナルへ貼って見直すだけで、主な項目は確認できます(Wi-Fi は、つなぐたびに自分で見ます)。
TROUBLE
| 起きていること | 原因 | どうするか |
|---|---|---|
| 外から家の Mac につながらない | 家の Mac が眠っている | 据え置きの Mac はスリープしない設定にしておく(システム設定の電源の項目。呼び名は OS で変わります)。持ち出す側は眠ってよい |
| 家では開けるアプリが、外から開けない | そのアプリを外へ出す設定をしていない | 出すアプリは1つずつ指定する。一覧に足しただけでは効かず、反映の操作が要る(やり方は次の記事 LAB 008 で説明します) |
| Wi-Fi の名前が「非表示」と出る | アプリ(自作の確認画面など)が Wi-Fi 名を読もうとしても、位置情報の許可が無いと名前が伏せられる仕様 | 故障ではない。名前が見えなくても、一覧に並ぶ鍵マークの有無は見て判断できる |
| FileVault を入れたら起動が遅くなった気がする | 最初の暗号化が裏で走っている | 終われば戻る。電源につないで放置 |
| ファイアウォールでアプリが通信できない | そのアプリが受信を待っている | 出てきた確認で許可する。身に覚えのないものは拒否 |
| 自作アプリが起動しなくなった | 待ち受けの番号(ポート)が、別のアプリと重なっている | lsof -nP -iTCP -sTCP:LISTEN で誰が使っているか見る |
| 設定したはずが、別の Mac では外れている | 設定はコンピュータごとで、同期されない | 2台とも同じ手順を通す。これは次の記事の主題です |
FAQ
使ってもいいですが、テザリングがあるならそちらが確実に楽です。私は「銀行とパスワード変更はカフェでやらない」とだけ決めて、あとは考えないようにしました。毎回悩む仕組みは続きません。
「強い」というより、最初から対策が組み込まれていて、何もしなくても働いているという表現が近いです。ただし自分で「開く」と押したものは通ります。いちばんの穴は、仕組みではなく操作する人です。
店の Wi-Fi を使うなら有効です。ただし通信の中身を全部そこに預けることになるので、提供元を選ぶ必要があります。「無料」を選ぶくらいなら、テザリングのほうが素直です。STEP 4 の仕組みは自分のコンピュータ同士をつなぐもので、通信を守る VPN とは別物です。
STEP 1〜3 は、持ち出すなら1台でも全部効きます(STEP 5 は自分でアプリを作る人だけの話です)。STEP 4 だけが2台目以降の話ですが、iPhone から家の Mac を触りたくなった時点で自分の話になります。
「安全」とは言えません。言えるのは「よくある事故のうち、起きやすいものから順に塞いだ」までです。測れるのは設定が入っているかどうかまでで、その設定が本当に効いているかは別です。
TIPS
セキュリティの話でいちばん無駄が出るのは、怖がる順番が実際と合っていないときです。 「ウィルスが怖い」と言いながら、カフェで画面を丸見えにしている——これは順番が逆です。
図の見方:左の列が「よく怖がられている順」、右の列が「実際に起きやすい順」で、線は同じ事柄の行き先を結んでいます。
いちばん下の2つが、いちばん誤解されています。 ウィルスは、macOS が Gatekeeper と XProtect(STEP 3)を最初から持っていて、 こちらが何もしなくても働いています。 外部からの攻撃は、そもそも入口(開いているポート=外からの接続を受け付ける差込口)が無ければ入れません。 怖いのは「攻撃される」ことではなく、便利さのために自分で入口を開けてしまうことです(STEP 4)。
NEXT
今日は STEP 2(覗き見)と STEP 3(スイッチ2つ)だけでも構いません。 合わせて15分ほどで、効き目が大きいところです。STEP 4 は、外から家の Mac を触りたくなってからで間に合います。
LAB 008
2台の Mac と iPhone で持ち歩く
守りが決まったので、次は中身を持ち歩きます。 AI との会話はどこを通るのか。電車の中でコードは書けるのか——結論は「書けない。でも頼める」です。 iPhone を頼む端末として使う話をします。
※ 設定画面の名称や場所は macOS の更新で変わることがあります。この記事は実際に使っている構成をもとにしていますが、 安全を保証するものではありません。会社のコンピュータでは、勤め先の方針が優先されます。