2 ポイント 投稿者 GN⁺ 20 일 전 | 1件のコメント | WhatsAppで共有
  • アプリケーションのネットワーク接続を可視化して制御できるツールで、どのプログラムがどのサーバーと通信しているかを確認可能
  • Connections Viewではリアルタイムおよび過去のトラフィックをアプリ別に表示し、ワンクリックで接続の遮断データ使用量の追跡をサポート
  • BlocklistsRules機能により、望ましくないトラフィックをカテゴリ単位または詳細条件ごとに精密に制御可能
  • 内部的にeBPFを利用してカーネルレベルで接続を監視し、Web UIを通じてPWA形式のインターフェースを提供
  • セキュリティツールではなくプライバシー重視のツールであり、一般的なソフトウェアの外部通信を遮断する用途には適しているが、高度な攻撃への防御には限界がある

概要

  • Little Snitch for Linuxは、アプリケーションのネットワーク接続をリアルタイムで可視化し、制御できるツール
    • どのアプリケーションがどのサーバーと通信しているかを確認可能
    • 不要な接続の遮断、トラフィック記録、データ使用量追跡機能を提供
  • Linuxカーネル 6.12以上BTFカーネルサポートが必要
  • Web UIはhttp://localhost:3031/でアクセスでき、**PWA(Progressive Web App)**としてインストール可能

接続モニタリング

  • Connections Viewで現在および過去のネットワーク活動をアプリケーション別に表示
    • ルールやブロックリストによって遮断された項目、データ使用量、トラフィック履歴を表示
    • 最近の活動、データ量、名前を基準に並べ替えやフィルタリングが可能
    • ワンクリックで接続を遮断可能
  • 下部のトラフィックダイアグラムは時間ごとのデータ量を可視化
    • 特定区間をドラッグして拡大すると、その期間の活動のみをフィルタして表示

ブロックリスト管理

  • Blocklists機能により、不要なトラフィックカテゴリを一括で遮断可能
    • リモートソースから自動ダウンロードし、最新状態を維持
    • 対応形式: ドメインごとに1行、ホスト名ごとに1行、/etc/hosts形式(IP + ホスト名)、CIDRネットワーク範囲
    • ワイルドカード、正規表現、glob、URLベースの形式は非対応

      • 効率のためドメインベースのリストの使用を推奨
      • 例示リスト: Hagezi, Peter Lowe, Steven Black, oisd.nl
      • macOS向け.lsrules形式はLinux版と互換性がない

ユーザー定義ルール

  • Rules機能はブロックリストよりも細かな制御を提供
    • 特定のプロセス、ポート、プロトコル単位で設定可能
    • ルール一覧は並べ替えやフィルタリングが可能
  • ルールによって詳細なネットワーク制御ポリシーを構成可能

アクセスセキュリティ

  • デフォルトではWebインターフェースはローカルで動作中のすべてのプロセスからアクセス可能
    • 悪意あるアプリケーションがルール変更、ブロックリスト修正、フィルタ無効化を行える可能性がある
  • これを防ぐため認証必須の設定が可能
    • 詳細設定は高度な構成(Advanced configuration)で行う

内部構造

  • eBPFを用いてLinuxのネットワークスタックにフック
    • eBPFプログラムが送信接続を監視し、データをデーモンへ渡す
    • デーモンは統計追跡、ルール処理、Web UI提供を担当
  • eBPFプログラムとWeb UIのソースコードはGitHubで公開

高度な構成

  • 基本UIでは主要設定のみを公開し、高度な設定はテキストファイルで構成
    • 変更後はlittlesnitchデーモンの再起動が必要
  • 既定の設定パス: /var/lib/littlesnitch/config/
    • 直接編集せず、修正するファイルを/var/lib/littlesnitch/overrides/config/へコピーしてから編集
    • overrideディレクトリの設定が常に優先適用される
  • 主な設定ファイル
    • web_ui.toml: ネットワークアドレス、ポート、TLS、認証設定
      • 複数ユーザーがアクセス可能な場合は認証の有効化が必要
      • ループバック以外に公開する場合はTLSの追加が必要
    • main.toml: ルールに一致しない接続の既定動作を設定
      • 既定値は許可で、必要に応じて拒否に変更可能
      • 誤設定するとシステムにアクセスできなくなる危険がある
    • executables.toml: 実行ファイルのグループ化ルール
      • バージョン番号を除去し、同一アプリの複数バージョンを1つとして表示
      • シェルおよびアプリ管理プロセスの親子関係を定義
      • コミュニティからのフィードバックを通じて継続的に改善
  • eBPFプログラムとWeb UIはユーザービルド版に置き換え可能
    • overrideディレクトリ内のバージョンが優先適用される

制限事項

  • セキュリティツールではなくプライバシーツールとして設計
    • macOS版よりシンプルで、eBPFの制約により機能面の限界がある
  • eBPFには保存領域とプログラム複雑性の制限があるため
    • トラフィックが多い場合、キャッシュテーブルがあふれてパケット、プロセス、DNS名の対応付けが不完全になる可能性がある
    • IPアドレスから元の問い合わせホスト名を復元する際に**推論(heuristics)**を使用
    • macOS版は**ディープパケットインスペクション(DPI)**により、より正確な対応付けを実施
  • 一般的なソフトウェアの外部通信の監視と遮断には適しているが 高度な攻撃者に対するシステム防御には不向き

ライセンス

  • 3つのコンポーネントで構成
    • eBPFカーネルプログラムWeb UIGNU GPL v2で公開され、GitHubで利用可能
    • デーモン(littlesnitch --daemon)プロプライエタリだが、無料で使用および再配布可能

1件のコメント

 
GN⁺ 20 일 전
Hacker Newsのコメント
  • Little Snitch や Open Snitch は使っていないが、許可済みプログラムを悪用したリクエストもブロックできるのか気になった
    たとえば suspicious.py が Firefox を呼び出してデータをアップロードした場合、ファイアウォールがこれを防げるのか知りたい

    • Little Snitch for Linux は、プロセスと親プロセスの名前空間をあわせて考慮してルールを評価する
      スクリプトを #!/bin/interpreter で実行した場合はスクリプトのパスにルールが適用されるが、interpreter script 形式で実行すると動作が異なる
    • 単純なルールではブロックされない
      Open Snitch では、親ツリーに python プロセスが含まれているかどうかなどを基準に細かくマッチできる
    • ライブラリのロードやプロセス間メモリ操作(例: OpenProcess, WriteProcessMemory, CreateRemoteThread)まで考慮すると、はるかに複雑になる
      昔の Windows ファイアウォールである Outpost や Zone Alarm には、こうした挙動を検出する Leak Control 機能があった
    • SELinux の MAC ポリシーを活用すれば、各プロセスがアクセスできるファイルやポートを制限できる
      ほとんどのディストリビューションがこの機能を含んでいるが、一般ユーザーはルール学習や設定をあまり行わない
  • Fedora 43 で試したところ、CPU コアをすべて使い切り、5万行のログを吐いて失敗した
    BPF_PROG_LOAD syscall returned Argument list too long エラーが発生した

    • 開発者は Fedora でテストしていなかったと明かしている
      ARM64 VM ではロードされるがプロセスを識別できない
      eBPF の互換性問題を調査中で、リソースが限られているため時間が必要とのこと
    • すでに GitHub issue が登録されている
    • 公式ダウンロードページによると、Btrfs ファイルシステムでは動作しない
      Fedora のデフォルトファイルシステムが Btrfs のためプロセス識別が不可能で、1.0.1 で修正予定とのこと
    • 私も同じ問題に遭遇した。CPU は半分しか使わないが、Web UI が動かない
    • これぞまさにありふれた Linux 体験だ。2026年が Linux デスクトップの年だという話も冗談に聞こえる
  • Linux ユーザーとして、コードの公開性を重視している
    OpenSnitch + OpenSnitch-UI の組み合わせで十分満足している

  • Linux で有料ツールモデルがどれほど成立するのか気になった
    多くは無料、寄付ベース、あるいはオープンコアモデルだ
    Little Snitch が Linux 版を無料公開した理由が、「Linux ではお金にならない」という認識からなのか、それとも別の理由があるのか気になる

    • Linux コミュニティはクローズドソースソフトウェアへの不信感が強い
      私もネットワークトラフィックを扱うクローズドなプログラムには抵抗がある
      その代わり FOSS プロジェクトには毎年数千ドルを寄付している
      ただ、こういうユーザーは少数なので、完全オープンソースだけで収益を上げるのは難しい
    • OpenSnitch がすでに存在して無料である以上、有料の代替は説得力に欠ける
      特にファイアウォールのような高権限コードは、オープンソースでなければ信頼しづらい
    • Little Snitch for Linux の開発者は、「自分たちは投資家ではなく小さな独立チームであり、今回の決定は個人的な選択だった」と述べている
      結果がどうなるか興味深いとのこと
    • 開発者の動機は公式ブログ記事でよく説明されている
  • 関連ブログ記事: Little Snitch for Linux 紹介

  • 昔は Windows 用の ZoneAlarm があった
    Linux にはなぜこういうものがなかったのか、ずっと不思議だった

    • 昔、AmigaOS 用に ZoneAlarm に似たプログラムを自作したことがある
      Direwall のコード を見つけたら、昔ながらの C スタイルがそのまま残っていた
      ソケットライブラリをパッチして動かしていたが、今でもコンパイルできるのか気になる
    • ZoneAlarm の強みは技術だけでなく、ユーザー教育と UX 設計にもあった
      最初はうるさく尋ねるが、学習後は静かになる仕組みを明確に説明していた
      だからこそユーザーの信頼を得られ、私もその点で勧めていた
    • 当時は GNU ソフトウェアが大半だったため、スパイウェアはほとんど存在しなかった
      商用ソフトウェアが Linux に入ってくるにつれ、ネットワーク監視への欲求が生まれた
    • 2000年代初頭に ZoneAlarm を使っていた記憶がある
    • Kerio Personal Firewall も覚えている。その後 ZA や Comodo に移ったが、隔離実行機能が印象的だった
      Windows の無秩序な実行を制限できるのが良かった
  • Little Snitch を長年使っていて、すべてのネットワークリクエストを手動承認している
    ただし、カーネル拡張レベルの権限を持つプログラムをどこまで信頼できるのか考えさせられる
    会社や開発者に関する情報がほとんどなく、気になっている

    • Little Snitch for Linux の開発者が直接回答している
      eBPF コンポーネントは GPLv2 オープンソースとして公開されており、GitHub のコード で確認できる
      ただしデーモンは root 権限で動作する必要があるため、SELinux のようなアクセス制御で制限する必要がある
      初回リリースなのでバグレポート対応中であり、Linux 環境の多様さに驚いたとのこと
    • この会社は 20年以上活動している Mac 向けの独立開発会社で、Little Snitch は以前から愛されている製品だ
    • 私は Android 向けの Little Snitch/OpenSnitch に着想を得た FOSS ファイアウォールを共同開発中だ
      macOS ではカーネル拡張ではなく Network Extension API を使う
      ネットワーク観測が目的なら、Sniffnet のような GUI スニファーもある
  • Linux 版ポートのリリースを祝う
    完全オープンソースでターミナルベースの代替として、自分がメンテしている RustNet を紹介したい
    TUI ベースのリアルタイムパケット監視ツールで、ファイアウォールではないが Landlock によって自己サンドボックス化している

    • 面白そうなので、あとで使ってみるつもりだ
  • OpenSnitch との比較が気になる
    OpenSnitch GitHub

    • Little Snitch を試したが、IP→ドメイン解決がほとんどできず、プロセス識別にも失敗した
      これは Linux 版の技術的制約によるものだ
      eBPF ベースなので、キャッシュオーバーフロー時にはプロセスマッピングができず、macOS のようなディープパケット検査も使えない
      公式説明 に詳しく書かれている
    • 私も OpenSnitch をインストールしたが、今は無効にしている。おそらく疲れるからだろう
    • 開発者ブログによれば、既存ツールが**「プロセスごとの接続を一覧で見て、ワンクリックでブロックする」**機能を提供していなかったため、自分で作ったとのことだ
      関連投稿
    • OpenSnitch は完全なオープンソースで、サブスクリプションもない。ソフトウェアはこうあるべきだ
  • OpenSnitch を満足して使っている
    ただ、プラグインシステムができて、ユーザー行動とネットワーク接続をあわせて分析し、予期しない接続だけ通知してくれるといいと思う
    ポップアップの代わりに CLI ベースの自動許可ラッパーがあると便利そうだ