ルートベースのファイアウォール(AFWall +)と非ルートベースのファイアウォール(NetGuard)の間にセキュリティの違いはありますか?


18

ルートベースのファイアウォール(AFWall +など)と非ルートベースのファイアウォール(NetGuardなど)の技術的な違いは何ですか?

このようなソフトウェアによって効果的に提供されるセキュリティに影響はありますか?

私はすでにNetGuardのソースコードを少しチェックしてアイデアを出しましたが、これはまだ良い質問かもしれないと思うので、このテーマに関する他の人の分析を取得したいと思います。

私はそのような質問をそのようなソフトウェアによって提供されるコア技術機能に限定したいと思います(ファイアウォールの種類:ステートレスまたはステートフル、ハードコードされた例外はありますか、信頼できないパケットを処理するコードの堅牢性など)、セカンダリ機能ではありませんまたはソフトウェアの主要な目的に具体的に影響を与えない限り、彼らが持つかもしれない反機能(広告、追跡、化粧品など)。

言い換えれば、暴言はありません;)!

制限がある場合、それらが実装固有のものであるか(開発チームが選択した結果)または使用された技術の結果(非常に異なるシステムに依存している場合、対処しなければならない可能性があります)他にはない制限付き)。

回答:


14

NetGuardの作成者として、私はこの分野で直接の経験を持っています。

(VPN)Linuxカーネルはソケットベースの接続を介したすべてのトラフィックタイプの転送を許可しないため、ローカルVPNベースのファイアウォールの欠点は、すべてのトラフィックタイプを処理できないことです。例としては、IPsecがあります。これは、一部のメーカーがIP呼び出しに使用しています。これに対する部分的な(IPsec用ではない)ソリューションは、リモートVPNサーバーを使用してトラフィックを転送することですが、これは多くの人にとってプライバシーの面では受け入れられず、複雑さが増し、おそらく余分なバッテリー使用も伴うでしょう。実際には、TCPおよびUDPトラフィックの処理は、NetGuardユーザーの99,9%にとって十分であると思われます。Android 5以降では、アプリケーションをVPNにルーティングされないように除外することが可能です(VPNを実装するアプリケーションは、これが必須かオプションかを決定します)。すべてのトラフィックを転送できないことから生じる問題に対処するために使用できます。別のオプションは、アドレス(範囲)を除外することです。NetGuardはこれを使用して、一部のメーカーのIP呼び出しを「修正」します。

別の欠点は、トラフィックを転送すると、パケットの検査と転送が必要になるため、何らかの処理が必要になるため、モバイルデバイスのバッテリー使用量が増加することです。Linuxカーネルに統合されているiptablesを使用する方が効率的であり、バッテリーに優しいためです。

一般に、Androidはシステムアプリケーションやコンポーネントのトラフィックも含め、すべてのトラフィックをVPNにルーティングするように見えますが、製造業者は特定のトラフィックタイプを除外することを決定でき、VPNベースのファイアウォールで実現できるセキュリティを低下させる可能性があります。

NetGuardは、広告ブロックを提供するDNSリクエストを除き、データ自体を分析しませんが、プライバシーの問題が発生する可能性があります。それにも関わらず、技術的に見れば、これはVPNベースのファイアウォールの利点です(まだそのように呼び出したい場合)。iptablesで可能なことを超えてデータストリームのステートフルインスペクションを許可するからです。これには、処理が関係するため、バッテリー使用量が犠牲になる可能性があります。SSLストリームを検査するには、ローカルMiT攻撃が必要になることに注意してください。

さらに別の欠点は、AndroidがVPNのチェーンを許可しないため、ローカルVPNを使用してファイアウォールを実装すると、ファイアウォールがそのようなサービス自体または別のVPNへの転送またはプロキシメカニズムを提供しない限り、実際のVPNサービスの使用を妨げることです応用。

最後に、VPNベースのファイアウォールは、実行するファイアウォールVPNサービスを提供するアプリケーションに依存しています。これは簡単なように見えますが、そうではありません。一部のメーカーのAndroidバージョン/バリアントは、メモリ不足の状態でプロセスを積極的に強制終了するためです(AndroidがVPNサービスを提供するアプリケーションを強制終了するとバグです)。

最後に、Androidデバイスのルート化はますます難しくなっており、多くの人々にとって唯一の選択肢としてVPNベースのファイアウォールが残されています。Googleがシステムベースのファイアウォールをすぐに追加するとは思わない。広告収入に大きな影響を与える可能性があるからだ。iOSにはシステムベースのファイアウォールがあります。

質問がある場合は教えてください、私はそれらに答えようとします。


1
答えてくれてありがとう。「iptablesで可能なことを超えたデータストリームのステートフルインスペクションを許可します」、iptablesはモジュール式で、そのようなディープパケットインスペクション(DPI)テクニックの提供を妨げるものは何もありません。でも、そこにこれを実装するいくつかのプロジェクトは、(あるndpi-netfilterのhttps://github.com/thomasbhatia/OpenDPIL7-フィルタ)、しかし、彼らはすべてのように見えるので、私はそんなことのために実際の需要が必要な作業に比べて低すぎると仮定します今放棄されました。
-WhiteWinterWolf

はい、Linuxカーネルモジュールを使用して行うこともできますが、アプリケーションレベルで行う方がはるかに簡単です。Linuxカーネルモジュールは、カーネルバージョンと互換性がある必要があります。これは、非常に多くのカーネルバージョンが存在するAndroidでは実行可能なオプションではありません。また、ルート権限とカーネルモジュールの挿入方法に関する知識も必要になりますが、これは平均的なユーザーには期待できませんが、何らかの方法で自動化できます。
M66B

10

私の知る限り、それはアプローチです:

ルートベースのファイアウォールは、IPFilter / iptablesを使用してフローを制御します。これは、ネットワーク接続が利用可能かどうか、ルーティングが完全に機能しているかどうか、または「外界にアクセスできない「閉じた環境」(イントラネット)にいるかどうかにかかわらず、すべてのアプリに自動的に適用されます" (インターネット)。ブロックしたアプリはブロックされます。かなり低いレベルで。

非ルートファイアウォールはその低レベルにアクセスできないため、回避策を使用する必要があります。ほとんどの場合、これはAndroidのVPN機能を使用して行われます。実装に応じて、これは完全にデバイス上で(つまり、使用可能なネットワーク接続に関係なく)、または「外部サービス」(アプリプロバイダーのVPNに接続)で動作します。後者の場合、サービスが利用できなくなるとすぐに状況が崩れます-気づくかもしれないし事実ではないかもしれません。どちらの場合でも、本当にすべてのアプリがVPNを尊重するのか、それとも回避策があるのか​​はわかりません。1私が読んだVPNのもう一つの厄介な事実は、「あなたのネットワークが監視されているかもしれない」と言ってくる迷惑な永久通知です–ただし、問題のアプリに独自の証明書のインストールが必要な場合にのみ表示されるAFAIK。2

評決:私は個人的に、ルートベースのソリューションをより信頼しています。ただし、がオプションではない場合は、ルート以外のソリューションもほぼ同様に優れているはずです。その場合、私の推奨事項は、NetGuardのようなオープンソースソリューションに向けられます(その開発者はXprivacyを作成し、信頼されています)。そういえば:詳細については、を見てとるのXDA紹介NetGuardがいくつかの詳細と背景を説明しています。


1 私は、AndroidのVPN実装の背後にある技術的な詳細に精通していませんが、WhiteWinterWolfを引用します(以下のコメントを参照)。これを強制するのはAndroidベースシステムです。これが適切に行われないと考える理由はありません。

図2は、 再びWhiteWinterWolfを引用: VPN APIは NetGuardがで使用される、すべてのデータが非特権アプリケーションによって傍受することができ、これはAndroidが効果的に「モニタリング」と考えるものである、それはすべての証明書とは関係がなく、この警告は避けられないと予想される結果でありますこのAPIを使用します。


2
ご回答有難うございます。「本当にすべてのアプリがVPNを尊重するかどうかはわかりません」:これを強制するのはAndroidベースシステム次第であり、これが適切に行われないと考える理由はありません。「迷惑な永久通知」:NetGuardが使用するVPN APIは、すべてのデータが特権のないアプリケーションによってインターセプトされることを許可します。これは、Androidが事実上「監視」と見なすものであり、証明書とは関係がなく、この警告は避けられず、予想されるこのAPIを使用した結果。
-WhiteWinterWolf

詳細をありがとう!それらを見つけやすくするために、それらを回答(クレジットが与えられている)と統合しました。「監視通知」に関しては、言及されていることがわかったところでは、ユーザー証明書がインストールされているという状況でした。しかし、説明をありがとう!
イジー

1
はい、Androidがいくつかの無関係な目的で同じ通知を再利用するのはかなり悲しいです。現在のコンテキストでは、この通知は、以前にリンクさから次のステートメントにリンクするVPN APIドキュメント「システム管理の通知は、VPN接続の存続期間中に示されています。」
WhiteWinterWolf

1
何かが何かを探している間、私はこの発見、VPNを回避する方法があるかどうかについて、心に留めておくのAndroid 4.4での機能強化に関する注記ユーザーVPN当たり。マルチユーザデバイスでは、VPNは今、ユーザーごとに適用されます。これは、ユーザーを許可することができます。デバイス上の他のユーザーに影響を与えることなく、VPNを介してすべてのネットワークトラフィックをルーティングします。」
-WhiteWinterWolf

2
  1. AFWall +は、実際のセキュリティはルート化されたデバイスの範囲外であり、もちろんユーザーに依存するという一般的なコンセンサスとは別に、NetGuardが暗号化を使用しながらトラフィックをフィルタリングするカーネルレベルのアプローチを提供します。フォアグラウンドにとどまる必要なくAndroid管理者として実行できることが重要だと思います...
  2. AFWall +は、オプションでシステムレベルの起動スクリプトを使用して、起動時のデータ漏洩を防ぎます(シャットダウンも考えます)
  3. 使用する場合、接続の変更が検出されたときにプロファイルを自動切り替えする機能を提供する組み込みのタスカープラグインもあります(私はこれが本当に好きです)
  4. Netguardが使用するVPN方式とは対照的なLinuxベースのiptables
  5. Netguardでアプリの設定をパスワードで保護するオプションは表示されませんが、この機能をAFWall +でも使用したことがないため、...

Netguardについて注意すべき重要な機能は、アプリごとに特定のアドレスをフィルタリングする機能だと思います。これは有料オプションです。

証明書ベースのVPN対iptablesとは言えません。それはおそらく、iptablesとNetGuardのカーネルとAndroidのバージョン、データの暗号化に使用されるアルゴリズム、ログに記録されているかどうか、保存されている場所に依存します。私の答えはあなたが探していたものほど技術的ではないかもしれませんし、長い間AFWall +(寄付版)を使用していたので、私は間違いなくそれに偏っています。ただし、NetGuardの開発者は、非常によく知られた信頼できる堅牢なAndroidプライバシーマネージャーであるXPrivacyを積極的に管理していることも知っています。AFWall +はまったく見捨てられていませんが、NetGuardほど最近のアップデートを受け取っていません。どちらもトラフィックの制御を維持するためのさまざまな方法を採用していますが、最終的には、デバイスのどの部分が安全であるかはユーザーに大きく依存すると思います。


あなたの答えをありがとう、特に弾丸は非常に有益でした。NetGuardは暗号化を一切適用しないことを知っている限り、AndroidのVPN APIを利用するだけです。このAPIにより、データネットワーク通信全体が非特権ユーザープロセスにリダイレクトされるためです。このAPIの最初の目的は、このようなプロセスがリモートホストへのVPN接続(実際には暗号化など)を処理できるようにすることですが、NetGuardは代わりにトラフィックを分析およびフィルタリングするためだけにローカルでこの位置を使用します。私の知る限り、NetGuardには実際のVPNオプションはありません(AFWall +とは異なります)。
WhiteWinterWolf

私の好奇心が明確な答えを追跡することを余儀なくされていないことの1つは、アプリがアップロードするシェナンガンをトンネリングすることが一般的であるかどうか、そしてこのVPNメカニズムを介してトンネリングされるデータを分析およびフィルタリングするのにどれほど効果的かということです。
cbar.tx

VPNトンネリングは他のアプリに対して透過的であり、Androidが実際に通信をVPNインターフェースにリダイレクトする一方で、インターネットへの直接アクセスがあると考えています。私の知る限り、NetGuardはデータ自体を分析せず、レイヤー3プロトコル情報(IPアドレスとフラグ)と、パケットを発信元アプリにリンクするためのAndroidの文書化されていないトリックのみを分析します。許可されるかどうか。
-WhiteWinterWolf

パケットをアプリケーションにリンクするために使用されている文書化されていないAndroidトリックはありませんが、文書化されたLinuxカーネル機能です。
M66B

@ M66B:精度のおかげで、これについては 、Izzyの回答にリンクされているXDAの記事に依存していました。「異なるアプリからのトラフィックを区別するために、プロセスをアプリケーションUIDに変換するための「proc」ファイルシステム。このアクセスは、SELinuxによってAndroidの将来のバージョンで簡単にブロックされる可能性があります
-WhiteWinterWolf
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.