Будь-яка різниця в захисті між кореневим брандмауером (AFWall +) та некореневим (NetGuard)?


18

Які технічні відмінності між кореневими брандмауерами (наприклад, AFWall +) та некореневими брандмауерами (як NetGuard)?

Чи є вплив на безпеку, ефективно надану таким програмним забезпеченням?

Я вже трохи перевірив вихідний код NetGuard, щоб скласти собі ідею, але, думаю, це все-таки може бути хорошим питанням, і мені цікаво проаналізувати цю проблему інших людей.

Я хотів би обмежити таке питання основною технічною характеристикою, що надається таким програмним забезпеченням (як, наприклад, вид брандмауера: стан без громадянства, чи є якісь жорсткі винятки, надійність роботи коду з ненадійними пакетами тощо), а не на вторинні функції або антифункції, які вони можуть мати (реклама, стеження, косметика, ...), якщо вони конкретно не впливають на основну мету програмного забезпечення.

Іншими словами: жодних зйомок, будь ласка;)!

Якщо існують обмеження, можливо, варто згадати, чи вони конкретні для впровадження (наслідок певного вибору, зробленого командою розробників) або наслідком використовуваних технологій (спираючись на дуже різні системи, можливо, що хтось повинен впоратися з обмеженнями, яких інший не має).

Відповіді:


14

Як автор NetGuard я маю досвід роботи в цій галузі.

Недоліком брандмауера на основі локальної VPN є те, що не всі типи трафіку можуть оброблятися, оскільки ядро ​​(Android) Linux не дозволяє пересилати всі типи трафіку через з'єднання на основі сокета. Приклад - IPsec, який використовується для IP-дзвінків деякими виробниками. Частковим (не для IPsec) рішенням цього буде використання віддаленого VPN-сервера для переадресації трафіку, але це конфіденційність неприйнятна для багатьох людей і може мати додаткову складність і, можливо, також додаткове використання акумулятора. На практиці обробка трафіку TCP та UDP виявляється достатньою для 99,9% користувачів NetGuard. Оскільки в Android 5 можна виключити додатки з маршрутизації в VPN (додаток, що реалізує VPN, вирішує, чи це обов'язково чи необов’язково), який можна використовувати для вирішення проблем, що виникають із-за неможливості перенаправити весь трафік. Інший варіант - виключити адресу (діапазони), яку NetGuard використовує для "виправлення" IP-дзвінків для деяких виробників.

Ще одним недоліком є ​​те, що трафік переадресації збільшить витрату акумулятора на мобільних пристроях, оскільки це передбачає деяку обробку, тому що пакети потрібно перевірити та переслати. Використання iptables, інтегрованого в ядро ​​Linux, є більш ефективним, оскільки, таким чином, більш зручним для акумулятора.

Загалом виявилося, що Android спрямовує весь трафік у VPN, навіть трафік системних додатків та компонентів, але виробник може вирішити виключити певні типи трафіку, знизивши безпеку, яку може досягти брандмауер на основі VPN.

NetGuard не аналізує самі дані, за винятком запитів DNS щодо блокування реклами, але якщо це можливо, це може викликати занепокоєння щодо конфіденційності. Тим не менш, технічно видно, що це є перевагою брандмауера на основі VPN (якщо ви все ще хочете називати це таким чином), оскільки це дозволило б повністю перевірити стан потоків даних за межами того, що можливо з iptables. Це може бути пов'язано з витратою акумулятора через процес, що займається обробкою. Зауважте, що для перевірки потоків SSL знадобиться локальна атака MiT.

Ще один недолік полягає в тому, що Android не дозволяє ланцюга VPN, тому використання локальної VPN для реалізації брандмауера не дозволить використовувати реальну службу VPN, якщо тільки брандмауер не надає таку послугу сам або альтернативно механізм переадресації чи проксі до іншого VPN застосування.

Нарешті, брандмауер на основі VPN залежить від програми, що надає VPN-послугу брандмауера. Це здається банальним, але це не так, оскільки деякі версії / варіанти Android-виробників занадто агресивно вбивають процеси в умовах низької пам’яті (IMHO це помилка, якщо Android вбиває програми, що надають VPN-сервіс).

Нарешті, вкорінення Android-пристроїв стає все складніше, залишаючи брандмауер на основі VPN єдиний вибір для багатьох людей. Я не очікую, що Google незабаром додасть брандмауер на основі системи, оскільки це може істотно вплинути на їх дохід від реклами. iOS має системний брандмауер.

Повідомте мене, чи є питання, і я спробую відповісти на них.


1
Дякую за відповідь "це дозволило б повністю перевірити потоки даних за межами держави, що можливо з iptables" , iptables є модульним, і AFAIK ніщо не заважає забезпечити такі методи глибокої перевірки пакетів (DPI). Навіть є кілька проектів, які реалізують це ( ndpi-netfilter , https://github.com/thomasbhatia/OpenDPI , l7-filter ), але я вважаю, що фактичний попит на таку річ є занадто низьким порівняно з необхідною роботою, тому всі вони здаються покинуті зараз.
WhiteWinterWolf

Так, це можна зробити і за допомогою модуля ядра Linux, але це зробити набагато простіше на рівні програми. Модулі ядра Linux повинні бути сумісні з версією ядра, що не було б життєздатним варіантом на Android з такою кількістю диких версій ядра. Це також вимагає кореневих дозволів та знань про те, як вставити модуль ядра, чого ви не можете очікувати від пересічного користувача, хоча це може бути якось автоматизовано.
M66B

10

Наскільки мені відомо, це підхід:

Кореневі брандмауери використовують IPFilter / iptables для управління потоком. Це автоматично стосується всіх програм, незалежно від того, чи є взагалі доступне мережеве з'єднання, чи працює маршрутизація повністю або взагалі немає, чи ви перебуваєте у "закритому середовищі" (Інтранет) без доступу до "зовнішнього світу" "(Інтернет). Програми, які ви заблокували, заблоковані. На досить низькому рівні.

Некореневі брандмауери не мають доступу до цього низького рівня, тому вони повинні використовувати робочі кола. У більшості випадків це робиться за допомогою засобів VPN для Android . Залежно від впровадження, це працює повністю на пристрої (тобто знову незалежно від того, яке мережне підключення може бути доступним), або через "зовнішні сервіси" (підключення до VPN постачальника додатків). В останньому випадку все порушується, як тільки ця послуга перестає бути доступною - факт ви можете помітити чи ні. В будь-якому випадку я не впевнений, чи справді всі програми вшановують VPN чи є способи їх вирішення. 1 Ще один неприємний факт про VPN, про які я читав, - це набридливе постійне сповіщення, яке говорить: "Можливо, ваша мережа відстежується"- але AFAIK, який має з’являтися лише в тому випадку, якщо програмі потрібен власний сертифікат. 2

Вердикт: Я особисто більше довіряю кореневому рішенню. Але там, де не є можливим, некореневі рішення повинні бути настільки ж хорошими. У такому випадку моя рекомендація буде спрямована на рішення з відкритим кодом, як NetGuard (його розробник також створив Xprivacy і йому довіряють). Якщо говорити про це: Щоб отримати детальнішу інформацію, подивіться на XDA введення NetGuard , що пояснює передумови ще деякими деталями.


1 Я не знайомий з технічними деталями реалізації VPN для Android, але, цитуючи WhiteWinterWolf (див. Коментар нижче), це залежить від базової системи Android, і це не може вважати, що це зроблено не правильно.

2 Знову цитую WhiteWinterWolf: API VPN використовується NetGuard дозволяє всі дані будуть перехоплені непривілейованих додатком, це те , що Android ефективно розглядати як «контроль», він не має ніякого відношення до будь - яких сертифікат , і це попередження є неминучим і очікуваним наслідком за допомогою цього API.


2
Дякую за вашу відповідь. "Я не впевнений, чи справді всі додатки шанують VPN" : це базувати систему Android, щоб це застосувати, немає причин вважати, що це зроблено не правильно. "дратівливе постійне сповіщення" : API VPN, який використовується NetGuard, дозволяє перехоплювати всі дані непривілейованою програмою. Це Android ефективно вважає "моніторингом", він не має жодного стосунку до будь-якого сертифіката, і це попередження неминуче і очікуване наслідок використання цього API.
WhiteWinterWolf

Дякуємо за деталі! Я інтегрував їх у свою відповідь (дані кредити), щоб полегшити їх поміщення. Що стосується "моніторингового сповіщення": де б я ніколи не виявив згадане, це було в контексті встановлення сертифіката користувача. Але дякую за роз’яснення!
Izzy

1
Так, для Android досить сумно використовувати одне і те ж повідомлення для кількох непов'язаних цілей. У поточному контексті це сповіщення має бути пов’язане із наступним твердженням з раніше пов'язаної документації VPN API : "Повідомлення, кероване системою, відображається протягом життя VPN-з'єднання." .
WhiteWinterWolf

1
Щось слід пам’ятати про те, чи існують способи навколо VPN, шукаючи щось інше, я знайшов цю примітку щодо вдосконалень в Android 4.4 : " VPN per user . На багатокористувацьких пристроях тепер застосовуються VPN на кожного користувача. Це може дозволити користувачеві щоб маршрутизувати весь мережевий трафік через VPN, не впливаючи на інших користувачів пристрою. "
WhiteWinterWolf

2
  1. Крім загальної думки про те, що фактична безпека є вікном для вкорінених пристроїв, і, звичайно, залежить від користувача, AFWall + пропонує підхід на рівні ядра до фільтрації трафіку, тоді як NetGuard використовує шифрування. Я думаю, що здатність працювати як адміністратор Android без необхідності залишатися на передньому плані є важливою ...
  2. AFWall + необов'язково використовує сценарій запуску на системному рівні, запобігаючи витоку даних під час завантаження (і я вважаю, що також відключення)
  3. Якщо він використовується, він також має вбудований плагін Tasker, який пропонує можливість автоматичного перемикання профілів при виявленні зміни підключення (мені це дуже подобається)
  4. Iptables на базі Linux, на відміну від методу VPN, який використовується Netguard
  5. Я не бачу жодних варіантів захисту паролем налаштувань програми в Netguard, але я також ніколи не використовував цю функцію в AFWall +, тому ...

Я думаю, що важливою особливістю, яку слід зазначити про Netguard, була б можливість фільтрувати конкретні адреси на основі програми. Це платний варіант.

Я не можу сказати VPN на основі сертифікатів проти iptables. Це може залежати від вашої версії ядра та Android для iptables та для NetGuard, алгоритмів, які використовуються для шифрування даних, незалежно від того, чи вони реєструються та де вони зберігаються. Моя відповідь може бути не такою технічною, як те, що ви шукали, і як давно користувач AFWall + (версія пожертвування), я безумовно упереджений до цього. Однак я знаю, що розробник NetGuard також активно підтримує XPrivacy, дуже відомий / надійний та надійний менеджер конфіденційності Android. AFWall + взагалі не відмовився, але, безумовно, не отримав оновлення останнім часом, як це було в NetGuard. Вони обидва застосовують різні методи підтримки контролю за трафіком, але, зрештою, я думаю, що це в основному залежить від того, наскільки захищена будь-яка частина пристрою.


Дякую за вашу відповідь, куля зокрема була дуже інформативною. Наскільки відомо, NetGuard не застосовує жодного шифрування, він просто скористається VPN API Android, оскільки цей API дозволяє перенаправляти всю комунікаційну мережу передачі даних на непривілейований користувацький процес. Первісна мета цього API - дозволити такому процесу обробляти VPN-з'єднання (справді шифрування тощо) до віддаленого хоста, але NetGuard замість цього положення використовує лише локально, щоб мати можливість аналізувати та фільтрувати трафік. Наскільки я знаю, в NetGuard немає фактичної опції VPN (на відміну від AFWall +).
WhiteWinterWolf

Одне, що цікавить мене, не змусило мене віднайти точну відповідь, якщо це взагалі звичайно для додатків, щоб тунелювати свої завантажувальні шнанігани та наскільки ефективною вона буде для аналізу та фільтрації даних, що тунелюються через цей механізм VPN.
cbar.tx

Тунелювання VPN прозоре для інших програм, вони думають, що вони мають прямий доступ до Інтернету, тоді як під капотом Android насправді перенаправляє спілкування до інтерфейсу VPN. Наскільки мені відомо, NetGuard не аналізує самі дані, лише інформацію про протокол шару-3 (IP-адреси та прапорці) та недокументований трюк Android для прив’язки пакета до вихідного додатку, цього достатньо для того, щоб вирішити, чи повинен бути пакет дозволено чи ні.
WhiteWinterWolf

Існує недокументований фокус Android, який використовується для прив’язки пакетів до програм, але є документально підтверджена функція ядра Linux.
M66B

@ M66B: Дякую за точність, за це я покладався на статтю XDA, пов’язану з відповіддю Іззі: "ми виявили, що для розмежування трафіку від різних додатків потрібно було використовувати незадокументований доступ до файлів на ядрі Файлова система "proc" для перекладу процесів у UID додатків. Цей доступ може бути легко заблокований у майбутніх версіях Android від SELinux, а може бути навіть заблокований у деяких інших пристроях, орієнтованих на безпеку " .
WhiteWinterWolf
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.