Adakah perbedaan keamanan antara firewall berbasis root (AFWall +) dan yang berbasis non-root (NetGuard)?

18

Apa perbedaan teknis antara firewall berbasis root (seperti AFWall +) dan firewall berbasis non-root (seperti NetGuard)?

Apakah ada dampak pada keamanan yang secara efektif disediakan oleh perangkat lunak tersebut?

Saya sudah memeriksa sedikit pada kode sumber NetGuard untuk membuat diri saya ide, tapi saya pikir ini mungkin masih pertanyaan yang bagus dan saya tertarik untuk mendapatkan analisis orang lain tentang masalah ini.

Saya ingin membatasi pertanyaan seperti itu pada fitur teknis inti yang disediakan oleh perangkat lunak tersebut (seperti jenis firewall: stateless atau stateful, apakah ada pengecualian hardcoded, kekokohan kode penanganan paket yang tidak dipercaya, dll.) Dan bukan pada fitur sekunder atau anti-fitur yang mungkin mereka miliki (iklan, pelacakan, kosmetik, ...) kecuali mereka secara konkret mempengaruhi tujuan inti dari perangkat lunak.

Dengan kata lain: tolong jangan berteriak;)!

Jika ada keterbatasan, mungkin perlu disebutkan jika mereka implementasi spesifik (konsekuensi dari beberapa pilihan yang dibuat oleh tim pengembangan) atau konsekuensi dari teknologi yang digunakan (bergantung pada sistem yang sangat berbeda, ada kemungkinan bahwa seseorang harus mengatasi dengan keterbatasan yang tidak dimiliki orang lain).

WhiteWinterWolf
sumber

Jawaban:

14

Sebagai penulis NetGuard, saya memiliki pengalaman langsung di bidang ini.

Kelemahan dari firewall berdasarkan VPN lokal adalah tidak semua jenis lalu lintas dapat ditangani, karena kernel (Android) Linux tidak memungkinkan meneruskan semua jenis lalu lintas melalui koneksi berbasis soket. Contohnya adalah IPsec, yang digunakan untuk panggilan IP oleh beberapa produsen. Solusi parsial (bukan untuk IPsec) adalah dengan menggunakan server VPN jarak jauh untuk meneruskan lalu lintas, tetapi ini adalah privasi yang tidak dapat diterima oleh banyak orang dan akan datang dengan kompleksitas tambahan dan mungkin juga dengan penggunaan baterai ekstra. Dalam praktiknya menangani lalu lintas TCP dan UDP tampaknya cukup untuk 99,9% pengguna NetGuard. Karena Android 5 dimungkinkan untuk mengecualikan aplikasi agar tidak dialihkan ke VPN (aplikasi pelaksana VPN memutuskan apakah ini wajib atau opsional), yang dapat digunakan untuk mengatasi masalah yang timbul karena tidak dapat meneruskan semua lalu lintas. Pilihan lain adalah mengecualikan alamat (rentang), yang digunakan NetGuard untuk 'memperbaiki' panggilan IP untuk beberapa produsen.

Kerugian lain adalah bahwa lalu lintas penerusan akan meningkatkan penggunaan baterai pada perangkat seluler, karena ini melibatkan beberapa pemrosesan, karena paket perlu diperiksa dan diteruskan. Menggunakan iptables, yang terintegrasi dalam kernel Linux, lebih efisien karena lebih ramah baterai.

Secara umum tampak bahwa Android merutekan semua lalu lintas ke VPN, bahkan lalu lintas aplikasi sistem dan komponen, tetapi produsen dapat memutuskan untuk mengecualikan jenis lalu lintas tertentu, mengurangi keamanan yang dapat dicapai oleh firewall berbasis VPN.

NetGuard tidak menganalisis data itu sendiri, kecuali permintaan DNS untuk memberikan pemblokiran iklan, tetapi jika itu dapat meningkatkan masalah privasi. Namun demikian, secara teknis terlihat ini adalah keuntungan dari firewall berbasis VPN (jika Anda masih ingin menyebutnya seperti itu), karena itu akan memungkinkan negara-penuh memeriksa aliran data di luar apa yang mungkin dengan iptables. Ini kemungkinan akan menjadi biaya penggunaan baterai, karena pemrosesan yang terlibat. Perhatikan bahwa itu akan memerlukan serangan MiT lokal untuk memeriksa aliran SSL.

Namun kelemahan lain adalah bahwa Android tidak mengizinkan chaining VPN, jadi menggunakan VPN lokal untuk mengimplementasikan firewall akan mencegah penggunaan layanan VPN nyata, kecuali jika firewall menyediakan layanan seperti itu sendiri atau sebagai alternatif mekanisme penerusan atau proxy ke VPN lain aplikasi.

Terakhir, firewall berbasis VPN bergantung pada aplikasi yang menyediakan layanan VPN firewall untuk dijalankan. Ini tampaknya sepele, tetapi tidak, karena beberapa versi / varian Android produsen terlalu agresif membunuh proses dalam kondisi memori rendah (IMHO itu adalah bug jika Android membunuh aplikasi yang menyediakan layanan VPN).

Akhirnya, rooting perangkat Android menjadi semakin sulit, meninggalkan firewall berbasis VPN sebagai satu-satunya pilihan bagi banyak orang. Saya tidak mengharapkan Google untuk menambahkan firewall berbasis sistem dalam waktu dekat, karena ini dapat mempengaruhi pendapatan iklan mereka secara signifikan. iOS memang memiliki firewall berbasis sistem.

Beri tahu saya jika ada pertanyaan dan saya akan mencoba menjawabnya.

M66B
sumber
1
Terima kasih atas jawabannya. "itu akan memungkinkan negara-penuh inspeksi aliran data di luar apa yang mungkin dengan iptables" , iptables adalah modular dan AFAIK tidak ada yang mencegahnya menyediakan teknik-teknik Deep Packet Inspection (DPI). Bahkan ada beberapa proyek yang mengimplementasikan ini ( ndpi-netfilter , https://github.com/thomasbhatia/OpenDPI , l7-filter ), tapi saya kira permintaan aktual untuk hal seperti itu terlalu rendah dibandingkan dengan pekerjaan yang diperlukan sehingga semuanya tampak ditinggalkan sekarang.
WhiteWinterWolf
Ya, ini dapat dilakukan dengan menggunakan modul kernel Linux, tetapi jauh lebih mudah dilakukan di level aplikasi. Modul kernel Linux harus kompatibel dengan versi kernel, yang tidak akan menjadi pilihan yang layak di Android dengan begitu banyak versi kernel di alam liar. Ini juga akan memerlukan izin root dan pengetahuan tentang cara memasukkan modul kernel, yang tidak dapat Anda harapkan dari rata-rata pengguna, meskipun ini mungkin bisa otomatis entah bagaimana.
M66B
10

Setahu saya, itulah pendekatannya:

Firewall berbasis root menggunakan IPFilter / iptables untuk mengontrol aliran. Ini secara otomatis berlaku untuk semua aplikasi, apakah ada koneksi jaringan yang tersedia atau tidak, apakah perutean bekerja sepenuhnya atau tidak sama sekali, atau apakah Anda berada di "lingkungan tertutup" (Intranet) tanpa akses ke "dunia luar" "(Internet). Aplikasi yang Anda blokir diblokir. Pada level yang cukup rendah.

Firewall non-root tidak memiliki akses ke level rendah itu, sehingga mereka harus menggunakan work-arounds. Dalam kebanyakan kasus ini dilakukan menggunakan fasilitas VPN Android . Bergantung pada implementasinya, ini bisa berfungsi sepenuhnya pada perangkat (mis. Lagi terlepas dari koneksi jaringan apa yang mungkin tersedia), atau melalui "layanan eksternal" (menghubungkan Anda ke VPN penyedia aplikasi). Dalam kasus terakhir, banyak hal akan pecah segera setelah layanan itu berhenti tersedia - fakta yang mungkin Anda perhatikan atau tidak. Dalam kedua kasus, saya tidak yakin apakah benar-benar semua aplikasi menghormati VPN atau jika ada jalan keluar. 1 Fakta buruk lainnya tentang VPN yang saya baca adalah pemberitahuan permanen yang mengganggu, yang mengatakan, "Jaringan Anda mungkin dimonitor"- tetapi AFAIK yang seharusnya hanya muncul jika aplikasi tersebut membutuhkan sertifikatnya sendiri diinstal. 2

Putusan: Saya pribadi akan lebih mempercayai solusi berbasis root. Tetapi di mana bukan opsi, solusi non-root seharusnya hampir sama baiknya. Dalam hal ini, rekomendasi saya akan menuju solusi open-source seperti NetGuard (pengembangnya juga membuat Xprivacy dan dipercaya). Omong-omong: Untuk perincian lebih lanjut, lihat pengantar XDA NetGuard , yang menjelaskan latar belakang dengan beberapa perincian lebih lanjut.


1 Saya tidak terbiasa dengan detail teknis di balik implementasi VPN Android, tetapi mengutip WhiteWinterWolf (lihat komentar di bawah), terserah sistem basis Android untuk menegakkan ini, tidak ada alasan untuk berpikir ini tidak dilakukan dengan benar.

2 Lagi mengutip WhiteWinterWolf: yang API VPN digunakan oleh NetGuard memungkinkan semua data yang akan dicegat oleh aplikasi unprivileged, ini adalah apa yang efektif Android anggap sebagai "monitoring", itu tidak ada kaitannya dengan sertifikat apapun dan peringatan ini merupakan konsekuensi yang tidak dapat dihindari dan diharapkan menggunakan API ini.

Izzy
sumber
2
Terima kasih atas jawaban anda. "Saya tidak yakin apakah benar-benar semua aplikasi menghormati VPN" : terserah sistem pangkalan Android untuk memberlakukan ini, tidak ada alasan untuk berpikir ini tidak dilakukan dengan benar. "pemberitahuan permanen yang menjengkelkan" : API VPN yang digunakan oleh NetGuard memungkinkan semua data dicegat oleh aplikasi tidak terprivasi, inilah yang secara efektif dianggap Android sebagai "pemantauan", tidak memiliki hubungan dengan sertifikat apa pun dan peringatan ini tidak dapat dihindari dan diharapkan konsekuensi dari menggunakan API ini.
WhiteWinterWolf
Terima kasih atas detailnya! Saya telah mengintegrasikan mereka dengan jawaban saya (kredit yang diberikan) untuk membuatnya lebih mudah dikenali. Adapun "pemberitahuan pemantauan": Di mana pun saya menemukan yang disebutkan, itu dalam konteks sertifikat pengguna yang diinstal. Tetapi terima kasih atas klarifikasi!
Izzy
1
Ya, agak menyedihkan bagi Android untuk menggunakan kembali notifikasi yang sama untuk beberapa tujuan yang tidak terkait. Dalam konteks saat ini, pemberitahuan ini harus ditautkan ke pernyataan berikut dari dokumentasi VPN API yang ditautkan sebelumnya : "Pemberitahuan yang dikelola sistem ditampilkan selama masa koneksi VPN." .
WhiteWinterWolf
1
Sesuatu yang perlu diingat tentang apakah ada cara di sekitar VPN, saat mencari sesuatu yang lain, saya menemukan catatan ini tentang peningkatan di Android 4.4 : " Per VPN Pengguna . Pada perangkat multi-pengguna, VPN sekarang diterapkan per pengguna. Ini dapat memungkinkan pengguna untuk merutekan semua lalu lintas jaringan melalui VPN tanpa memengaruhi pengguna lain di perangkat. "
WhiteWinterWolf
2
  1. Selain dari konsensus umum bahwa keamanan aktual berada di luar jendela untuk perangkat yang di-rooting dan tentu saja tergantung pada pengguna, AFWall + menawarkan pendekatan tingkat kernel untuk menyaring lalu lintas sementara NetGuard menggunakan enkripsi. Saya pikir kemampuan untuk menjalankan sebagai administrator Android tanpa harus tetap di latar depan adalah penting ...
  2. AFWall + secara opsional menggunakan skrip startup tingkat sistem mencegah kebocoran data selama waktu boot (dan juga shutdown, saya percaya)
  3. Jika digunakan, ia juga memiliki plug-in tasker bawaan yang menawarkan kemampuan untuk beralih profil secara otomatis ketika perubahan konektivitas terdeteksi (saya sangat suka yang ini)
  4. Iptables berbasis Linux yang bertentangan dengan metode VPN yang digunakan oleh Netguard
  5. Saya tidak melihat opsi untuk kata sandi melindungi pengaturan aplikasi di Netguard, tetapi saya juga tidak pernah menggunakan fitur ini di AFWall +, jadi ...

Saya pikir fitur penting yang perlu diperhatikan tentang Netguard adalah kemampuan untuk memfilter alamat tertentu berdasarkan per aplikasi. Ini adalah opsi berbayar.

Saya tidak bisa mengatakan VPN berbasis sertifikat vs iptables. Itu kemungkinan akan tergantung pada versi kernel dan android Anda untuk iptables dan untuk NetGuard, algoritma yang digunakan untuk mengenkripsi data, apakah itu sedang dicatat dan di mana disimpan. Jawaban saya mungkin tidak se-teknis apa yang Anda cari dan selama pengguna AFWall + (versi donasi), saya pasti bias terhadapnya. Namun, saya tahu bahwa pengembang NetGuard juga secara aktif memelihara XPrivacy, manajer privasi Android yang sangat terkenal / tepercaya dan tangguh. AFWall + belum ditinggalkan sama sekali, tetapi jelas belum menerima pembaruan baru-baru ini seperti yang NetGuard miliki. Mereka berdua menggunakan metode yang berbeda untuk mempertahankan kontrol lalu lintas, tetapi pada akhirnya, saya pikir sebagian besar tergantung pada pengguna seberapa aman setiap bagian dari perangkat mereka.

cbar.tx
sumber
Terima kasih atas jawaban Anda, peluru khususnya sangat informatif. Sejauh yang diketahui NetGuard tidak menerapkan enkripsi apa pun, ini hanya memanfaatkan API VPN Android karena API ini memungkinkan untuk mengarahkan ulang seluruh komunikasi jaringan data ke proses pengguna yang tidak dirahasiakan. Maksud awal dari API ini adalah untuk memungkinkan proses tersebut untuk menangani koneksi VPN (memang enkripsi dll) ke host jarak jauh, tetapi NetGuard malah menggunakan posisi ini hanya secara lokal hanya untuk dapat menganalisis dan menyaring lalu lintas. Sejauh yang saya tahu tidak ada opsi VPN aktual di NetGuard (sebagai lawan dari AFWall +).
WhiteWinterWolf
Satu hal yang membuat saya penasaran tidak memaksa saya untuk melacak jawaban yang pasti untuk itu adalah jika itu sama sekali bagi aplikasi untuk melakukan terowongan dengan mengunggah kejahatan mereka dan seberapa efektifkah itu dalam menganalisis dan memfilter data yang disalurkan melalui mekanisme VPN ini.
cbar.tx
Tunneling VPN transparan untuk aplikasi lain, mereka pikir mereka memiliki akses langsung ke Internet sementara di bawah tenda Android sebenarnya mengarahkan kembali komunikasi ke antarmuka VPN. Sejauh yang saya tahu, NetGuard tidak menganalisis data itu sendiri, hanya informasi protokol layer-3 (alamat IP dan flag) dan trik tidak terdokumentasi Android untuk menghubungkan paket ke aplikasi asal, ini cukup untuk memutuskan apakah suatu paket harus boleh atau tidak.
WhiteWinterWolf
Tidak ada trik Android tanpa dokumen yang digunakan untuk menautkan paket ke aplikasi, tetapi fitur kernel Linux yang terdokumentasi.
M66B
@ M66B: Terima kasih atas ketepatannya, untuk yang ini saya mengandalkan artikel XDA yang tertaut dalam jawaban Izzy: "kami menemukan bahwa untuk membedakan antara lalu lintas dari aplikasi yang berbeda, perlu untuk menggunakan akses tidak terdokumentasi ke file pada kernel "Proc" filesystem, untuk menerjemahkan proses ke dalam UID aplikasi. Akses ini dapat dengan mudah diblokir di versi Android masa depan oleh SELinux, dan mungkin bahkan diblokir di beberapa perangkat yang lebih berorientasi keamanan " .
WhiteWinterWolf