netbiosdが実際に何であるか
netbiosdはmacOSに付属するバックグラウンドプロセスで、Appleによってコード署名されています。その役割は、NetBIOSを実装することです。これは古いネットワークの名前付け層で、Windowsマシンが何十年も前からローカルネットワーク上で自分を知らせ、互いを見つけるために使ってきました。
NetBIOSは、現代のネットワーキングだと思うものの多くより古い仕組みです。同じオフィスネットワーク上のコンピュータが、短くて人が読みやすい名前を名乗り、それをブロードキャストして、他の機器がアドレスの向こう側にある正しいマシンを見つけられるようにするために設計されました。Windowsはこれを採用し、ファイル共有やプリンタ共有と強く結びつけ、従来のNetwork Neighborhoodブラウジングの土台になりました。
Appleがこれを含めたのは、Macが長くWindowsネットワークと共存する必要があったからです。FinderのサイドバーでWindows PCが見えるときや、ファイル共有がオンの状態でWindows PCからMacが見えるとき、netbiosdがそのつながりを成立させていることがあります。古いネットワーク接続ストレージやネットワークプリンターにも同じことが当てはまり、多くはSMBやWindows式のブラウジングを前提に作られています。
境界は正確にしておく価値があります。netbiosdが扱うのは、ローカルネットワーク上での発見と名前付けです。どのマシンがどの短い名前に応答するかを決め、同じサブネット上の機器どうしが互いを認識できるようにします。共有に接続した後の実際のファイル転送は、システムの別の部分が担当します。
なぜmacOSのファイアウォールがこれについて尋ねるのか
macOSのアプリケーションファイアウォールは単純な原則で動きます。プログラムが着信接続を受け入れるとき、macOSは一度だけ確認し、その答えを記憶します。ダイアログを引き起こすのは送信トラフィックではありません。待ち受けている何かです。
netbiosdは設計上、待ち受けます。名前の通知は双方向のやりとりだからです。あなたのMacは名前をブロードキャストし、別のマシンがその名前を持つ相手を尋ねたときに到達可能でなければなりません。つまり、ローカルネットワーク上でリスニングソケットを開く必要があり、それこそがファイアウォールが表示する動作です。NetBIOS名サービスは従来UDPポート137、データグラムサービスはUDPポート138を使います。これらの番号は標準ですが、実際に使われる内容はmacOSのバージョンや有効にしている共有サービスによって変わります。
このため、netbiosdは他の多くのシステムプロセスよりもそのダイアログにずっと頻繁に出てきます。挙動がおかしいわけでも、変わったわけでもありません。同じネットワーク上の他のマシンから到達可能であることが通常の役割である、数少ないAppleデーモンの一つだからです。ファイアウォールは、署名者に関係なく、そうしたプロセスをすべて同じように扱います。
この確認がシステムアップデート後に再び出ることもあります。アップグレード中にバイナリが差し替えられると、ファイアウォールはそれを以前見たプログラムだと認識できず、もう一度尋ねます。これは想定内であり、何か問題が起きている兆候ではありません。
それはマルウェアですか、そして自分で確認できますか
netbiosdはマルウェアではありません。Appleの純正コンポーネントで、macOSの一部として配布されており、正常なシステムではAppleのコード署名が付いています。Activity Monitorやファイアウォールのプロンプトで見かけても、それだけで侵害を示すことにはなりません。
その点は信じるだけでなく、確認できます。Activity Monitorでプロセスを選び、インスペクタを開いて、起動元の実行ファイルの完全なパスを見てください。正規のシステムデーモンはDownloadsフォルダではなく、システムディレクトリの下にあります。Terminalに慣れているなら、codesignツールにverbose verifyオプションを付け、そのパスを指定して署名の発行元を確認できます。正規のコピーなら、その発行元はAppleです。予想外の場所から同じ名前を名乗っているものや、検証に失敗するものは、さらに調べる価値があります。
もう一つの安心材料も同じくらい重要です。netbiosdはローカルネットワークのプロセスであって、インターネットのプロセスではありません。 NetBIOS名サービスはブロードキャストベースで、ローカルサブネット内に閉じています。インターネットを越えてルーティングされることはなく、通常の運用ではルーターがそのトラフィックを外の世界へ転送することもありません。こうした検索の裏にある、見知らぬデーモンが静かにどこかへデータを送っているのではという不安は当てはまりません。netbiosdが何かを伝えているとしても、それは自宅や職場の機器に向けてです。
この区別は、macOSでプロセスを調べるときに覚えておく価値があります。ローカルネットワークで待ち受けているプロセスと、リモートサーバーへの接続を維持しているプロセスは、まったく別のことをしており、見るべき厳しさも変わります。
許可すべきか拒否すべきか
ほとんどのシステムデーモンに対して正直な助言は、許可して先に進むことです。拒否すると、頼りにしている何かが壊れるからです。netbiosdは本物の例外の一つで、クリックで流す前に少し考える価値があります。
一つだけ自分に問いかけてください。Windows PCの共有フォルダ、古いNAS、またはWindows風のブラウジングに依存するネットワークプリンタに接続することはありますか?答えがいいえで、All Appleの家庭なら多くの人にとって答えはいいえです。なら、netbiosdを拒否しても気づくような損はありません。NetBIOSはレガシーです。Appleのプラットフォームでの現代的なSMB検出は他の仕組みに頼っており、NetBIOS依存のデバイスがいないネットワークには、netbiosdが話す相手がいません。
答えがはいなら、より慎重にしてください。着信接続を拒否すると発見が壊れることがあります。Finderのサイドバーにデバイスが自動表示される部分や、WindowsマシンがあなたのMacを見つける部分です。共有は、一覧に出るのを待つ代わりに、名前やアドレスを明示して接続すれば、今でもたいてい利用できます。なので失敗のしかたは、完全な遮断というより不便さです。プリンタやNASが急に表示されなくなったら、これが原因である可能性がありますし、ファイアウォール設定で判断を戻すのは簡単です。
プロンプトと戦うより、もっとすっきりした選択肢もあります。netbiosdの多くは、Windows互換のファイル共有がオンになっていることに結びついています。一度だけの転送のために有効にして、その後は使っていないなら、共有設定でそれをオフに戻せば、原因から対処できます。
何を選ぶにしても、意図して選んでください。最悪なのは、読まずにAllowをクリックすることです。ほとんどの人が、誰も理解していないファイアウォール設定を抱えるのは、そのせいです。
大局:あなたのMacはあなたが見えないほど多く話している
netbiosdは特別ではありません。典型的なMacは、ネットワークに関わるバックグラウンドプロセスを何十個も動かしています。Appleと通信するもの、ローカルでサービスを知らせるもの、入れて忘れたアプリの代わりに接続を維持するもの。ファイアウォールのプロンプトが表に出すのは、着信接続を受け入れたいそのごく一部だけです。外向きの動きは、探さない限り見えません。
本当の問題は、その非対称性です。自分のサブネットに閉じたレガシーな名前解決デーモンで中断される一方で、リモートサーバーとの接続を静かに維持しているプロセスは、ダイアログを一切出しません。Activity Monitorは、プロセスが存在することと、おおよそ何バイト動かしたかは教えてくれますが、どのドメインに触れたかはわからず、止める方法もありません。キルするしかないのです。
その見えにくさを埋めるためにNetMuteは作られました。アプリ別、プロセス別のネットワーク通信をリアルタイムで表示し、ドメイン単位のログも残すので、プロセス名とバイト数の代わりに、各アプリが実際にどこへ接続しているかが見えます。アプリごとのファイアウォールはワンクリックで何でもブロックでき、一時ルールは自動で期限切れになるため、軽いテストがいつの間にか恒久化することはありません。ネットワークプロファイルは、接続しているWi-Fiネットワークに応じて別のルールを適用するので、信頼できる自宅ネットワークと空港のホットスポットで、警戒レベルを変えたいときに役立ちます。
目的は、より多くをブロックすることではありません。ここに来た問い、つまりこのプロセスは何で、誰と話しているのか、という疑問に、新しい名前が出るたび毎回探し回らずに答えることです。