ความปลอดภัยที่แตกต่างระหว่างไฟร์วอลล์แบบรูท (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 ซึ่งน่าจะเป็นค่าใช้จ่ายในการใช้งานแบตเตอรี่เนื่องจากการดำเนินการที่เกี่ยวข้อง โปรดทราบว่าจะต้องมีการโจมตี MiT ในพื้นที่เพื่อตรวจสอบสตรีม SSL

ข้อเสียเปรียบอีกประการหนึ่งคือ Android ไม่อนุญาตให้ผูกมัด VPN ดังนั้นการใช้ VPN ภายในเพื่อใช้ไฟร์วอลล์จะป้องกันการใช้บริการ VPN จริงเว้นแต่ว่าไฟร์วอลล์จะให้บริการดังกล่าวเองหรือส่งต่อหรือมอบอำนาจให้กับ VPN อื่น ใบสมัคร

ท้ายสุดไฟร์วอลล์ที่ใช้ VPN ขึ้นอยู่กับแอปพลิเคชั่นที่ให้บริการไฟร์วอลล์ VPN เพื่อให้ทำงานได้ สิ่งนี้ดูเหมือนว่าจะเล็กน้อย แต่ไม่ใช่เพราะผู้ผลิต / รุ่น Android บางรุ่นกำลังฆ่ากระบวนการในสภาวะที่หน่วยความจำเหลือน้อยเกินไป (IMHO มันเป็นข้อผิดพลาดถ้า 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เพื่อควบคุมการไหล สิ่งนี้จะใช้กับแอพทั้งหมดโดยอัตโนมัติไม่ว่าจะมีการเชื่อมต่อเครือข่ายให้ใช้งานได้หรือไม่ไม่ว่าการกำหนดเส้นทางจะทำงานได้อย่างสมบูรณ์หรือไม่เลยหรือว่าคุณอยู่ใน "สภาพแวดล้อมที่ปิด" (อินทราเน็ต) โดยไม่ต้องเข้าถึง "(อินเทอร์เน็ต) แอพที่คุณถูกบล็อกถูกบล็อก ในระดับที่ค่อนข้างต่ำ

ไฟร์วอลล์ที่ไม่ใช่รูทไม่สามารถเข้าถึงระดับต่ำได้ดังนั้นจึงต้องใช้วิธีแก้ไข ในกรณีส่วนใหญ่นี้จะทำใช้ Android ของVPNสิ่งอำนวยความสะดวก ทั้งนี้ขึ้นอยู่กับการใช้งานสิ่งนี้สามารถใช้งานได้บนอุปกรณ์อย่างสมบูรณ์ (เช่นอีกครั้งโดยไม่คำนึงว่าการเชื่อมต่อเครือข่ายใดบ้างที่มี) หรือผ่าน "บริการภายนอก" (เชื่อมต่อคุณกับ VPN ของผู้ให้บริการแอป) ในกรณีหลังสิ่งต่าง ๆ แตกสลายทันทีที่บริการหยุดให้บริการ - ข้อเท็จจริงที่คุณอาจสังเกตเห็นหรือไม่ ไม่ว่าในกรณีใดฉันไม่แน่ใจว่าแอปทั้งหมดให้เกียรติ VPN หรือไม่ 1ความจริงที่น่ารังเกียจอีกอย่างหนึ่งของ VPN ที่ฉันได้อ่านคือการแจ้งเตือนถาวรที่น่ารำคาญมาพร้อมกับพูดว่า"เครือข่ายของคุณอาจถูกตรวจสอบ"- แต่ AFAIK ที่ควรเปิดใช้งานหากแอปที่เป็นปัญหาต้องมีใบรับรองของตัวเองติดตั้ง 2

คำตัดสิน:ฉันจะไว้วางใจโซลูชันรูตแบบอิงเป็นการส่วนตัวมากขึ้น แต่ที่ไม่ได้เป็นตัวเลือกในการแก้ปัญหาที่ไม่ใช่รากควรจะเกือบจะดี ในกรณีนี้คำแนะนำของฉันจะนำไปสู่โซลูชันโอเพนซอร์ซเช่นNetGuard (นักพัฒนาซอฟต์แวร์ได้สร้างXprivacyและเชื่อถือได้ดี) การพูดที่: สำหรับรายละเอียดเพิ่มเติมดูที่การแนะนำของ XDA NetGuard ,ซึ่งจะอธิบายพื้นหลังที่มีรายละเอียดบางอย่างมากขึ้น


1 ฉันไม่คุ้นเคยกับรายละเอียดทางเทคนิคที่อยู่เบื้องหลังการใช้ VPN ของ Android แต่การอ้างถึง WhiteWinterWolf (ดูความคิดเห็นด้านล่าง)มันขึ้นอยู่กับระบบฐาน Android ที่จะบังคับใช้สิ่งนี้ไม่มีเหตุผลที่จะคิดว่ามันไม่ถูกต้อง

2 อีกครั้ง quoting WhiteWinterWolf: API VPNใช้โดย NetGuard ช่วยให้ข้อมูลทั้งหมดถูกขัดขวางโดยการประยุกต์ใช้ unprivileged นี้เป็นสิ่งที่ Android ได้อย่างมีประสิทธิภาพพิจารณาว่าเป็น "การตรวจสอบ" มันมีความสัมพันธ์กับใบรับรองใด ๆ และคำเตือนนี้เป็นผลมาหลีกเลี่ยงไม่ได้และที่คาดหวังของ ใช้ API นี้


2
ขอบคุณสำหรับคำตอบ. "ฉันไม่แน่ใจว่าแอปทุกตัวให้เกียรติ VPN จริง ๆ หรือไม่" : ขึ้นอยู่กับระบบฐาน Android ที่จะบังคับใช้สิ่งนี้ไม่มีเหตุผลที่จะคิดว่านี่เป็นการกระทำที่ไม่ถูกต้อง "การแจ้งเตือนถาวรที่น่ารำคาญ" : VPN API ที่ใช้โดย NetGuard อนุญาตให้ข้อมูลทั้งหมดถูกดักโดยแอพพลิเคชั่นที่ไม่มีสิทธิพิเศษนี่คือสิ่งที่ Android พิจารณาอย่างมีประสิทธิภาพว่าเป็น "การตรวจสอบ" มันไม่มีความสัมพันธ์กับใบรับรองใด ๆ ผลของการใช้ API นี้
WhiteWinterWolf

ขอบคุณสำหรับรายละเอียด! ฉันได้รวมเข้ากับคำตอบ (ให้เครดิต) เพื่อให้มองเห็นได้ง่ายขึ้น สำหรับ "การแจ้งเตือนการตรวจสอบ": ที่ฉันเคยพบที่กล่าวถึงมันเป็นในบริบทของใบรับรองผู้ใช้ที่กำลังติดตั้ง แต่ขอขอบคุณสำหรับความกระจ่าง!
Izzy

1
ใช่มันค่อนข้างเศร้าสำหรับ Android ที่จะใช้การแจ้งเตือนเดียวกันนี้เพื่อวัตถุประสงค์ที่ไม่เกี่ยวข้องหลายประการ ในบริบทปัจจุบันการแจ้งเตือนนี้จะเชื่อมโยงกับคำสั่งต่อไปนี้จากเอกสาร VPN API ที่เชื่อมโยงก่อนหน้านี้: "การแจ้งเตือนที่จัดการโดยระบบจะปรากฏขึ้นในช่วงอายุของการเชื่อมต่อ 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 นั้นคือความสามารถในการกรองที่อยู่เฉพาะตามแต่ละแอป นี่เป็นตัวเลือกการชำระเงิน

ฉันไม่สามารถพูดได้ว่าอิงตามใบรับรองกับ iptables ซึ่งน่าจะขึ้นอยู่กับเคอร์เนลและเวอร์ชั่น Android ของคุณสำหรับ iptables และสำหรับ NetGuard อัลกอริทึมที่ใช้ในการเข้ารหัสข้อมูลไม่ว่าจะถูกบันทึกไว้หรือไม่และเก็บไว้ที่ไหน คำตอบของฉันอาจไม่เป็นเชิงเทคนิคเท่ากับสิ่งที่คุณกำลังมองหาและผู้ใช้ AFWall + (รุ่นบริจาค) เป็นเวลานานฉันก็มีอคติอย่างแน่นอน แต่ผมไม่ทราบว่านักพัฒนาของ NetGuard ยังแข็งขันรักษา XPrivacy เป็นอย่างมากที่รู้จักกันดี / ที่เชื่อถือได้และมีประสิทธิภาพผู้จัดการความเป็นส่วนตัวของ Android AFWall + ยังไม่ถูกทอดทิ้ง แต่แน่นอนว่ายังไม่ได้รับการอัปเดตเมื่อเร็ว ๆ นี้อย่างที่ NetGuard มี พวกเขาใช้วิธีการต่าง ๆ ในการรักษาการควบคุมปริมาณการใช้งาน แต่ท้ายที่สุดฉันคิดว่าส่วนใหญ่ขึ้นอยู่กับผู้ใช้ว่าอุปกรณ์ส่วนใดของพวกเขาปลอดภัย


ขอบคุณสำหรับคำตอบของคุณกระสุนโดยเฉพาะมีประโยชน์มาก เท่าที่ทราบ NetGuard ไม่ได้ใช้การเข้ารหัสใด ๆ เพียงแค่ใช้ประโยชน์จาก VPN API ของ Android เพราะ API นี้อนุญาตให้เปลี่ยนเส้นทางการสื่อสารเครือข่ายข้อมูลทั้งหมดไปยังกระบวนการผู้ใช้ที่ไม่มีสิทธิพิเศษ จุดประสงค์เบื้องต้นของ API นี้คืออนุญาตให้กระบวนการดังกล่าวจัดการการเชื่อมต่อ VPN (การเข้ารหัส ฯลฯ ) ไปยังรีโมตโฮสต์ แต่ NetGuard จะใช้ตำแหน่งนี้เฉพาะภายในเครื่องเท่านั้นเพื่อให้สามารถวิเคราะห์และกรองทราฟฟิกได้ เท่าที่ฉันรู้ไม่มีตัวเลือก VPN จริงใน NetGuard (ตรงข้ามกับ AFWall +)
WhiteWinterWolf

สิ่งหนึ่งที่ความอยากรู้อยากเห็นของฉันไม่ได้บังคับให้ฉันตามหาคำตอบที่ชัดเจนคือถ้ามันเป็นเรื่องธรรมดาสำหรับแอพที่จะขุดอุโมงค์ shenanigans ที่อัปโหลดของพวกเขาและประสิทธิภาพในการวิเคราะห์และกรองข้อมูลที่ผ่านช่องทางผ่านกลไก VPN นี้
cbar.tx

การสร้างช่องทาง VPN นั้นโปร่งใสสำหรับแอพอื่น ๆ พวกเขาคิดว่าพวกเขาสามารถเข้าถึงอินเทอร์เน็ตได้โดยตรงในขณะที่ Android กำลังเปลี่ยนเส้นทางการสื่อสารไปยังอินเทอร์เฟซ VPN เท่าที่ฉันรู้ NetGuard ไม่วิเคราะห์ข้อมูลเพียงข้อมูลโปรโตคอลเลเยอร์ 3 (ที่อยู่ IP และแฟล็ก) และเคล็ดลับที่ไม่มีเอกสาร Android ในการเชื่อมโยงแพ็คเก็ตกับแอพต้นทางนี่ก็เพียงพอแล้วที่จะตัดสินใจว่า อนุญาตหรือไม่
WhiteWinterWolf

ไม่มีเคล็ดลับ Android ที่ไม่มีเอกสารที่ใช้ในการเชื่อมโยงแพ็กเก็ตกับแอปพลิเคชัน แต่เป็นคุณลักษณะเคอร์เนล Linux ที่ทำเป็นเอกสาร
M66B

@ M66B: ขอบคุณสำหรับความแม่นยำสำหรับฉันนี้อาศัยบทความ XDA ที่ เชื่อมโยงกับคำตอบของ Izzy: "เราพบว่าเพื่อแยกความแตกต่างระหว่างปริมาณการใช้งานจากแอพต่าง ๆ มันจำเป็นต้องใช้การเข้าถึงไฟล์ที่ไม่มีเอกสารในเคอร์เนล “proc” ระบบแฟ้มที่จะแปลกระบวนการเข้าสู่การประยุกต์ใช้ UIDs. การเข้าถึงนี้ได้อย่างง่ายดายถูกบล็อกในรุ่นอนาคตของ Android โดย SELinux และอาจดีแม้จะถูกบล็อกในอุปกรณ์ที่มุ่งเน้นการรักษาความปลอดภัยบางมากขึ้น "
WhiteWinterWolf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.