Có sự khác biệt nào về bảo mật giữa tường lửa gốc (AFWall +) và tường lửa không gốc (NetGuard) không?


18

Sự khác biệt kỹ thuật giữa tường lửa gốc (như AFWall +) và tường lửa không gốc (như NetGuard) là gì?

Có bất kỳ tác động nào đến bảo mật được cung cấp hiệu quả bởi phần mềm như vậy không?

Tôi đã kiểm tra một chút trong mã nguồn của NetGuard để biến mình thành một ý tưởng, nhưng tôi nghĩ đây có thể vẫn là một câu hỏi hay và tôi quan tâm đến việc phân tích của người khác về chủ đề này.

Tôi muốn hạn chế câu hỏi như vậy đối với tính năng kỹ thuật cốt lõi được cung cấp bởi phần mềm đó (như loại tường lửa: không trạng thái hoặc trạng thái, có bất kỳ trường hợp ngoại lệ nào được mã hóa cứng, tính mạnh mẽ của mã xử lý các gói không tin cậy, v.v.) và không phải trên các tính năng phụ hoặc chống các tính năng mà họ có thể có (quảng cáo, theo dõi, mỹ phẩm, ...) trừ khi chúng ảnh hưởng cụ thể đến mục tiêu cốt lõi của phần mềm.

Nói cách khác: không có lời tán tỉnh nào;)!

Trong trường hợp có những hạn chế, có thể đáng nói nếu chúng là triển khai cụ thể (hậu quả của một số lựa chọn do nhóm phát triển đưa ra) hoặc hậu quả của công nghệ được sử dụng (dựa trên các hệ thống rất khác nhau, có thể người ta phải đối phó với những hạn chế mà người khác không có).

Câu trả lời:


14

Là tác giả của NetGuard, tôi có kinh nghiệm đầu tiên trong lĩnh vực này.

Một nhược điểm của tường lửa dựa trên VPN cục bộ là không phải tất cả các loại lưu lượng đều có thể được xử lý, vì nhân Linux (Android) không cho phép chuyển tiếp tất cả các loại lưu lượng qua kết nối dựa trên ổ cắm. Một ví dụ là IPsec, được sử dụng để gọi IP bởi một số nhà sản xuất. Một giải pháp (không dành cho IPsec) cho vấn đề này sẽ là sử dụng máy chủ VPN từ xa để chuyển tiếp lưu lượng, nhưng đây là quyền riêng tư không được chấp nhận đối với nhiều người và sẽ đi kèm với sự phức tạp bổ sung và có thể sử dụng thêm pin. Trong thực tế xử lý lưu lượng TCP và UDP dường như đủ cho 99,9% người dùng NetGuard. Vì Android 5 có thể loại trừ các ứng dụng khỏi định tuyến vào VPN (ứng dụng triển khai VPN quyết định xem điều này là bắt buộc hay tùy chọn), có thể được sử dụng để giải quyết các vấn đề phát sinh do không thể chuyển tiếp tất cả lưu lượng truy cập. Một tùy chọn khác là loại trừ địa chỉ (phạm vi) mà NetGuard sử dụng để 'sửa' cuộc gọi IP cho một số nhà sản xuất.

Một nhược điểm khác là lưu lượng chuyển tiếp sẽ tăng mức sử dụng pin trên thiết bị di động, vì nó liên quan đến một số xử lý, bởi vì các gói cần phải được kiểm tra và được chuyển tiếp. Sử dụng iptables, được tích hợp trong nhân Linux, sẽ hiệu quả hơn do đó thân thiện với pin hơn.

Nhìn chung, có vẻ như Android định tuyến tất cả lưu lượng truy cập vào VPN, thậm chí lưu lượng của các ứng dụng và thành phần hệ thống, nhưng một nhà sản xuất có thể quyết định loại trừ một số loại lưu lượng nhất định, làm giảm bảo mật có thể đạt được bằng tường lửa dựa trên VPN.

NetGuard không tự phân tích dữ liệu, ngoại trừ các yêu cầu DNS để cung cấp chặn quảng cáo, nhưng nếu nó có thể gây ra mối lo ngại về quyền riêng tư. Tuy nhiên, về mặt kỹ thuật, đây là một lợi thế của tường lửa dựa trên VPN (nếu bạn vẫn muốn gọi nó theo cách đó), vì nó sẽ cho phép kiểm tra toàn bộ luồng dữ liệu vượt quá khả năng của iptables. Điều này có thể sẽ có chi phí sử dụng pin, vì quá trình xử lý liên quan. Lưu ý rằng nó sẽ yêu cầu một cuộc tấn công MiT cục bộ để kiểm tra các luồng SSL.

Tuy nhiên, một nhược điểm khác là Android không cho phép kết nối VPN, do đó, sử dụng VPN cục bộ để triển khai tường lửa sẽ ngăn việc sử dụng dịch vụ VPN thực, trừ khi tường lửa cung cấp chính dịch vụ đó hoặc cơ chế chuyển tiếp hoặc proxy cho VPN khác ứng dụng.

Cuối cùng, tường lửa dựa trên VPN phụ thuộc vào ứng dụng cung cấp dịch vụ VPN tường lửa sẽ chạy. Điều này có vẻ tầm thường, nhưng thực tế không phải vậy, vì một số phiên bản / biến thể Android của nhà sản xuất đã quá mạnh tay giết chết các tiến trình trong điều kiện bộ nhớ thấp (IMHO là một lỗi nếu Android giết các ứng dụng cung cấp dịch vụ VPN).

Cuối cùng, việc root thiết bị Android ngày càng trở nên khó khăn, khiến tường lửa dựa trên VPN là lựa chọn duy nhất cho nhiều người. Tôi không mong đợi Google sớm thêm tường lửa dựa trên hệ thống vì điều này có thể ảnh hưởng đáng kể đến doanh thu quảng cáo của họ. iOS có tường lửa dựa trên hệ thống.

Hãy cho tôi biết nếu có bất kỳ câu hỏi và tôi sẽ cố gắng trả lời chúng.


1
Cảm ơn bạn đã trả lời. "Nó sẽ cho phép kiểm tra toàn bộ các luồng dữ liệu vượt quá khả năng của iptables" , iptables là mô-đun và AFAIK không có gì ngăn cản nó cung cấp các kỹ thuật Kiểm tra gói dữ liệu sâu (DPI) như vậy. Thậm chí có một số dự án thực hiện điều này ( ndpi-netfilter , https://github.com/thomasbhatia/OpenDPI , l7-filter ), nhưng tôi cho rằng nhu cầu thực tế cho việc đó quá thấp so với công việc được yêu cầu nên tất cả đều có vẻ bỏ rơi bây giờ
WhiteWinterWolf

Vâng, nó cũng có thể được thực hiện bằng cách sử dụng một mô-đun hạt nhân Linux, nhưng nó đơn giản hơn nhiều để thực hiện ở cấp ứng dụng. Các mô-đun hạt nhân Linux cần phải tương thích với phiên bản kernel, đây không phải là một lựa chọn khả thi trên Android với rất nhiều phiên bản kernel trong tự nhiên. Nó cũng sẽ yêu cầu quyền và kiến ​​thức gốc về cách chèn mô-đun hạt nhân mà bạn không thể mong đợi từ người dùng trung bình, mặc dù điều này có thể được tự động hóa bằng cách nào đó.
M66B

10

Theo hiểu biết của tôi, đó là cách tiếp cận:

Tường lửa dựa trên root sử dụng IPFilter / iptables để kiểm soát dòng chảy. Điều này tự động áp dụng cho tất cả các ứng dụng, cho dù có sẵn kết nối mạng hay không, dù định tuyến có hoạt động hoàn toàn hay không, hoặc bạn có ở trong "môi trường khép kín" (Intranet) mà không truy cập vào "thế giới bên ngoài không " (Internet). Ứng dụng bạn đã chặn bị chặn. Ở mức độ khá thấp.

Tường lửa không gốc không có quyền truy cập ở mức thấp đó, vì vậy họ phải sử dụng các công việc xung quanh. Trong hầu hết các trường hợp, điều này được thực hiện bằng cách sử dụng các tiện ích VPN của Android . Tùy thuộc vào việc triển khai, tính năng này hoạt động hoàn toàn trên thiết bị (tức là một lần nữa bất kể kết nối mạng nào có thể khả dụng) hoặc thông qua "dịch vụ bên ngoài" (kết nối bạn với VPN của nhà cung cấp ứng dụng). Trong trường hợp sau, mọi thứ sẽ bị hỏng ngay khi dịch vụ đó ngừng hoạt động - một thực tế bạn có thể nhận thấy hoặc không. Trong cả hai trường hợp, tôi không chắc liệu tất cả các ứng dụng có tôn trọng VPN hay không hoặc có cách nào khác không. 1 Một thực tế khó chịu khác với VPN mà tôi đã đọc là thông báo vĩnh viễn khó chịu xuất hiện, nói rằng "Mạng của bạn có thể bị theo dõi"- nhưng AFAIK chỉ nên bật lên nếu ứng dụng đang được đề cập cần cài đặt chứng chỉ riêng. 2

Phán quyết: Cá nhân tôi tin tưởng một giải pháp dựa trên root hơn. Nhưng trong trường hợp không phải là một lựa chọn, các giải pháp không root sẽ gần như tốt. Trong trường hợp đó, đề xuất của tôi sẽ hướng tới các giải pháp nguồn mở như NetGuard (nhà phát triển của nó cũng đã tạo Xprivacy và rất đáng tin cậy). Nói về điều đó: Để biết thêm chi tiết, hãy xem phần giới thiệu XDA của NetGuard , giải thích nền tảng với một số chi tiết khác.


1 Tôi không quen thuộc với các chi tiết kỹ thuật đằng sau việc triển khai VPN của Android, nhưng trích dẫn WhiteWinterWolf (xem bình luận bên dưới), tùy thuộc vào hệ thống cơ sở Android để thực thi điều này, không có lý do gì để nghĩ rằng việc này không được thực hiện đúng.

2 lần nữa trích dẫn WhiteWinterWolf: các API VPN sử dụng bởi NetGuard cho phép tất cả các dữ liệu được chặn bởi một ứng dụng không có đặc quyền, đây là những gì Android hiệu quả xem xét là "giám sát", nó không có mối quan hệ với bất kỳ giấy chứng nhận và cảnh báo này là một hệ quả không thể tránh khỏi và mong đợi của sử dụng API này.


2
Cảm ơn câu trả lời của bạn. "Tôi không chắc liệu tất cả các ứng dụng có thực sự tôn trọng VPN hay không" : tùy thuộc vào hệ thống cơ sở Android để thực thi điều này, không có lý do gì để nghĩ rằng việc này không được thực hiện đúng. "Thông báo vĩnh viễn khó chịu" : API VPN được NetGuard sử dụng cho phép tất cả dữ liệu bị chặn bởi một ứng dụng không có đặc quyền, đây là điều mà Android coi là "giám sát" một cách hiệu quả, nó không liên quan đến bất kỳ chứng chỉ nào và cảnh báo này là không thể tránh khỏi và dự kiến hậu quả của việc sử dụng API này.
WhiteWinterWolf

Cảm ơn các chi tiết! Tôi đã tích hợp chúng với câu trả lời của tôi (các khoản tín dụng) để giúp chúng dễ dàng phát hiện hơn. Đối với "thông báo giám sát": Bất cứ nơi nào tôi tìm thấy được đề cập, đó là trong bối cảnh chứng chỉ người dùng đang được cài đặt. Nhưng cảm ơn đã làm rõ!
Izzy

1
Có, thật đáng buồn khi Android sử dụng lại thông báo tương tự cho một số mục đích không liên quan. Trong ngữ cảnh hiện tại, thông báo này sẽ được liên kết với tuyên bố sau từ tài liệu API VPN được liên kết trước đó : "Thông báo do hệ thống quản lý được hiển thị trong suốt thời gian kết nối VPN." .
WhiteWinterWolf

1
Một số điều cần lưu ý về việc có cách nào xung quanh VPN hay không, trong khi tìm kiếm một thứ khác tôi đã thấy ghi chú này liên quan đến các cải tiến trong Android 4.4 : " Mỗi người dùng VPN . Trên các thiết bị nhiều người dùng, VPN hiện được áp dụng cho mỗi người dùng. Điều này có thể cho phép người dùng để định tuyến tất cả lưu lượng truy cập mạng thông qua VPN mà không ảnh hưởng đến người dùng khác trên thiết bị. "
WhiteWinterWolf

2
  1. Ngoài sự đồng thuận chung rằng bảo mật thực tế nằm ngoài cửa sổ cho các thiết bị đã root và tất nhiên phụ thuộc vào người dùng, AFWall + cung cấp cách tiếp cận cấp nhân để lọc lưu lượng trong khi NetGuard sử dụng mã hóa. Tôi nghĩ rằng khả năng chạy với tư cách quản trị viên Android mà không cần phải ở phía trước là điều quan trọng ...
  2. AFWall + tùy ý sử dụng tập lệnh khởi động ở cấp hệ thống để ngăn chặn rò rỉ dữ liệu trong thời gian khởi động (và tôi cũng tắt máy)
  3. Nếu được sử dụng, nó cũng có một trình cắm tác vụ tích hợp sẵn cung cấp khả năng tự động chuyển đổi cấu hình khi phát hiện thay đổi kết nối (tôi thực sự thích cái này)
  4. Iptables dựa trên Linux trái ngược với phương thức VPN được Netguard sử dụng
  5. Tôi không thấy bất kỳ tùy chọn nào về mật khẩu bảo vệ cài đặt của ứng dụng trong Netguard, nhưng tôi cũng chưa bao giờ sử dụng tính năng này trong AFWall +, vì vậy ...

Tôi nghĩ rằng một tính năng quan trọng cần lưu ý về Netguard sẽ là khả năng lọc các địa chỉ cụ thể trên cơ sở từng ứng dụng. Đây là một lựa chọn trả phí.

Tôi không thể nói VPN dựa trên chứng chỉ so với iptables. Điều đó có thể phụ thuộc vào phiên bản kernel và Android của bạn cho iptables và cho NetGuard, các thuật toán được sử dụng để mã hóa dữ liệu, cho dù nó đang được ghi lại và nơi lưu trữ. Câu trả lời của tôi có thể không mang tính kỹ thuật như những gì bạn đang tìm kiếm và là người dùng AFWall + (phiên bản quyên góp) trong thời gian dài, tôi chắc chắn thiên vị về nó. Tuy nhiên, tôi biết rằng nhà phát triển NetGuard cũng tích cực duy trì XPrivacy, một trình quản lý quyền riêng tư Android rất nổi tiếng / đáng tin cậy và mạnh mẽ. AFWall + hoàn toàn không bị bỏ rơi nhưng chắc chắn không nhận được bản cập nhật gần đây như NetGuard có. Cả hai đều sử dụng các phương pháp khác nhau để duy trì kiểm soát lưu lượng nhưng cuối cùng, tôi nghĩ điều đó chủ yếu phụ thuộc vào người dùng về độ an toàn của bất kỳ bộ phận nào trên thiết bị của họ.


Cảm ơn câu trả lời của bạn, viên đạn đặc biệt rất nhiều thông tin. Như đã biết NetGuard không áp dụng bất kỳ mã hóa nào, nó chỉ tận dụng API VPN của Android vì API này cho phép chuyển hướng toàn bộ giao tiếp mạng dữ liệu sang quy trình người dùng không được quản lý. Mục đích ban đầu của API này là cho phép quá trình đó xử lý kết nối VPN (thực sự là mã hóa, v.v.) cho máy chủ từ xa, nhưng thay vào đó, NetGuard chỉ sử dụng vị trí này để có thể phân tích và lọc lưu lượng. Theo như tôi biết thì không có tùy chọn VPN thực tế nào trong NetGuard (trái ngược với AFWall +).
WhiteWinterWolf

Một điều mà sự tò mò của tôi đã không buộc tôi phải theo dõi một câu trả lời chắc chắn là liệu nó có phổ biến cho các ứng dụng để thu thập các shenanigans tải lên của họ hay không và hiệu quả của việc phân tích và lọc dữ liệu được truyền qua cơ chế VPN này.
cbar.tx

Đường hầm VPN trong suốt đối với các ứng dụng khác, họ nghĩ rằng họ có quyền truy cập trực tiếp vào Internet trong khi Android thực sự chuyển hướng giao tiếp đến giao diện VPN. Theo như tôi biết, NetGuard không tự phân tích dữ liệu, chỉ có thông tin giao thức lớp 3 (địa chỉ IP và cờ) và một thủ thuật không có giấy tờ Android để liên kết gói với ứng dụng gốc, điều này đủ để quyết định liệu một gói có nên cho phép hay không.
WhiteWinterWolf

Không có thủ thuật Android không có giấy tờ nào được sử dụng để liên kết các gói với các ứng dụng, nhưng là một tính năng nhân Linux được ghi lại.
M66B

@ M66B: Cảm ơn độ chính xác, vì điều này tôi đã dựa vào bài viết XDA được liên kết trong câu trả lời của Izzy: "chúng tôi thấy rằng để phân biệt lưu lượng truy cập từ các ứng dụng khác nhau, cần phải sử dụng quyền truy cập không có giấy tờ vào các tệp trên kernel. Hệ thống tập tin của hệ thống tập tin, để dịch các quy trình thành UID ứng dụng. Quyền truy cập này có thể dễ dàng bị chặn trong các phiên bản Android trong tương lai của SELinux và thậm chí có thể bị chặn trong một số thiết bị định hướng bảo mật hơn " .
WhiteWinterWolf
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.