Есть ли разница в безопасности между межсетевым экраном на основе root (AFWall +) и некорневым (NetGuard)?


18

Каковы технические различия между межсетевыми экранами на основе root (например, AFWall +) и межсетевыми экранами без полномочий root (например, NetGuard)?

Есть ли какое-либо влияние на безопасность, эффективно обеспечиваемую таким программным обеспечением?

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

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

Другими словами: пожалуйста!

В случае наличия ограничений, возможно, стоит упомянуть, являются ли они специфичными для реализации (следствие какого-то выбора, сделанного командой разработчиков) или следствием используемой технологии (полагаясь на очень разные системы, возможно, что придется справиться с ограничениями, которых у другого нет).

Ответы:


14

Как автор NetGuard я имею непосредственный опыт в этой области.

Недостаток брандмауэра на основе локальной VPN заключается в том, что не все типы трафика могут обрабатываться, поскольку ядро ​​Linux (Android) не позволяет пересылать все типы трафика через соединение на основе сокетов. Примером является 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 некоторых производителей слишком агрессивно убивают процессы в условиях нехватки памяти (ИМХО, это ошибка, если Android убивает приложения, предоставляющие услугу VPN).

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

Дайте мне знать, если есть какие-либо вопросы, и я постараюсь ответить на них.


1
Спасибо за ответ. «это позволило бы проводить проверку потоков данных с полным состоянием сверх того, что возможно с iptables» , iptables является модульным, и AFAIK ничто не мешает ему предоставлять такие методы Deep Packet Inspection (DPI). Есть даже несколько проектов, реализующих это ( ndpi-netfilter , https://github.com/thomasbhatia/OpenDPI , l7-filter ), но я полагаю, что реальный спрос на такие вещи слишком низок по сравнению с требуемой работой, поэтому все они кажутся заброшенный сейчас.
WhiteWinterWolf

Да, это можно сделать и с помощью модуля ядра Linux, но на уровне приложений это сделать намного проще. Модули ядра Linux должны быть совместимы с версией ядра, что было бы неприемлемым вариантом для Android с таким большим количеством версий ядра. Это также потребовало бы корневых прав и знаний о том, как вставить модуль ядра, чего вы не можете ожидать от обычного пользователя, хотя это может быть как-то автоматизировано.
M66B

10

Насколько мне известно, это подход:

Корневые межсетевые экраны используют IPFilter / iptables для управления потоком. Это автоматически применяется ко всем приложениям, независимо от того, доступно ли сетевое соединение вообще или нет, работает ли полностью или нет маршрутизация, или вы находитесь в «закрытой среде» (интрасети) без доступа к «внешнему миру». "(Интернет). Приложения, которые вы заблокировали, заблокированы. На довольно низком уровне.

Брандмауэры без полномочий root не имеют доступа к этому низкому уровню, поэтому они должны использовать обходные пути. В большинстве случаев это делается с помощью средств VPN Android . В зависимости от реализации, это либо работает полностью на устройстве (т.е. опять-таки независимо от того, какое сетевое соединение может быть доступно), либо через «внешние сервисы» (подключая вас к VPN провайдера приложения). В последнем случае все обрывается, как только эта служба перестает быть доступной - факт, который вы можете заметить или нет. В любом случае, я не уверен, действительно ли все приложения поддерживают VPN или есть способы обойти. 1 Еще один неприятный факт с VPN, о котором я читал, - это раздражающее постоянное уведомление, в котором говорится: «Возможно, за вашей сетью следят»- но AFAIK должен появляться только в том случае, если для рассматриваемого приложения требуется собственный сертификат. 2

Вердикт: я бы лично больше доверял корневому решению. Но там, где не возможен, решения без полномочий root должны быть почти такими же хорошими. В этом случае моя рекомендация будет направлена ​​на решения с открытым исходным кодом, такие как 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

Спасибо за подробности! Я интегрировал их с моим ответом (данные кредиты), чтобы их было легче заметить. Что касается «уведомления о мониторинге»: где бы я ни находил упомянутое, оно было в контексте устанавливаемого сертификата пользователя. Но спасибо за разъяснения!
Иззи

1
Да, для Android довольно печально повторно использовать одно и то же уведомление для нескольких не связанных целей. В текущем контексте это уведомление должно быть связано со следующим утверждением из ранее связанной документации API-интерфейса VPN : «Управляемое системой уведомление отображается во время жизни VPN-подключения». ,
WhiteWinterWolf

1
Что-то, о чем следует помнить относительно того, существуют ли способы обойти VPN, при поиске чего-то другого я обнаружил эту заметку, касающуюся улучшений в Android 4.4 : « VPN для каждого пользователя. На многопользовательских устройствах 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 не применяет никакого шифрования, он просто использует API-интерфейс VPN для Android, поскольку этот API-интерфейс позволяет перенаправить весь обмен данными в сети передачи данных непривилегированному пользовательскому процессу. Первоначальная цель этого API состоит в том, чтобы позволить такому процессу обрабатывать VPN-подключение (даже шифрование и т. Д.) К удаленному хосту, но вместо этого NetGuard использует эту позицию только локально, чтобы иметь возможность анализировать и фильтровать трафик. Насколько я знаю, в NetGuard нет реальной опции VPN (в отличие от AFWall +).
WhiteWinterWolf

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

VPN-туннелирование прозрачно для других приложений, они думают, что имеют прямой доступ к Интернету, в то время как Android фактически перенаправляет связь на интерфейс VPN. Насколько я знаю, NetGuard не анализирует сами данные, а только информацию о протоколе уровня 3 (IP-адреса и флаги) и недокументированный трюк Android для связи пакета с исходным приложением, этого достаточно, чтобы решить, должен ли пакет быть разрешено или нет.
WhiteWinterWolf

Для связи пакетов с приложениями не используется недокументированный трюк Android, а задокументированная функция ядра Linux.
M66B

@ M66B: Спасибо за точность, в этой статье я опирался на статью XDA , на которую ссылается ответ Иззи: «Мы обнаружили, что для того, чтобы отличать трафик от разных приложений, необходимо использовать недокументированный доступ к файлам в ядре. Файловая система «proc» для преобразования процессов в UID приложений. Этот доступ может быть легко заблокирован SELinux в будущих версиях Android и может даже блокироваться в некоторых устройствах, более ориентированных на безопасность » .
WhiteWinterWolf
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.