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

การตรวจสอบที่หนึ่ง: ยืนยันว่ากฎตามแอปเลือกอะไรได้

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

นั่นไม่ใช่ข้อบกพร่องที่ต้องเลี่ยง แต่เป็นระดับความละเอียดที่ API มอบให้ หากความต้องการของคุณคือให้ทราฟฟิกของ Chrome ผ่านอุโมงค์และทุกอย่างอื่นอยู่นอก กฎตามแอปก็แสดงออกมาได้อย่างแม่นยำ หากความต้องการของคุณคือให้เฉพาะแท็บส่วนตัวผ่านอุโมงค์ในขณะที่แท็บปกติเชื่อมต่อตรง ไม่มีกฎตามแอปใดแสดงออกมาได้ และตรรกะการแจ้งเตือนไม่ว่าจะมากเพียงใดก็ไม่เพิ่มตัวเลือกที่แพลตฟอร์มไม่มี

ระวังกับดักตัวตนของแพ็กเกจขณะตรวจสอบ เวอร์ชันเบต้าหรือบิลด์ของผู้จำหน่ายเป็นแพ็กเกจที่ต่างจากเบราว์เซอร์เสถียร ดังนั้นกฎที่ครอบคลุมอันหนึ่งจะพลาดอีกอันอย่างเงียบ ๆ:

adb shell pm list packages | grep -i chrome

การตรวจสอบที่สอง: ทดสอบว่าทริกเกอร์เคยเร็วพอได้หรือไม่

ตัวรับฟังการแจ้งเตือนจะสังเกตการแจ้งเตือนที่ได้รับอนุญาตให้เห็น การสังเกตไม่ใช่การดักจับ: เบราว์เซอร์แก้ชื่อและเปิดการเชื่อมต่อแล้วเมื่อการแจ้งเตือนมีอยู่ และไม่มีสิ่งใดในเส้นทางนั้นรอให้ระบบอัตโนมัติของคุณเสร็จ งานที่เริ่มไคลเอนต์ VPN ต่อไปต้องรออินเทอร์เฟซของไคลเอนต์ คำขอความยินยอมใด ๆ และแฮนด์เชกของอุโมงค์ ซึ่งวัดเป็นวินาที ในขณะที่คำขอแรกวัดเป็นมิลลิวินาที

การตรวจจับเองก็เปราะบางด้วยเหตุผลที่สอง ข้อความแจ้งเตือนเปลี่ยนไประหว่างเวอร์ชันและการแปลภาษา ดังนั้นรูปแบบที่ตรงกับรุ่นหนึ่งจะเลิกตรงหลังการอัปเดต และความล้มเหลวก็เงียบ การไม่มีการแจ้งเตือนไม่ใช่หลักฐานว่าไม่มีการท่องเว็บส่วนตัว อาจหมายความเพียงว่าสตริงเปลี่ยนไปหรือช่องสัญญาณถูกปิดเสียง

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

การตรวจสอบที่สาม: ตรวจสอบสิทธิ์ที่คุณกำลังจะให้

การเข้าถึงการแจ้งเตือนเป็นการให้สิทธิ์ที่ละเอียดอ่อนซึ่งอนุญาตให้บริการอ่านการแจ้งเตือนจากทุกแอป ไม่ใช่แค่เบราว์เซอร์ การให้สิทธิ์นั้นแก่เครื่องมืออัตโนมัติที่ไม่รู้จักเพื่อเฝ้าดูสถานะเบราว์เซอร์หนึ่งสถานะเป็นการแลกเปลี่ยนที่แย่ และการเข้าถึงยังคงอยู่หลังการทดลองสิ้นสุด การแตะที่ขับเคลื่อนด้วยการช่วยเข้าถึงนั้นแย่กว่า: มันเป็นชั้นสคริปต์เหนืออินเทอร์เฟซ ไม่ใช่อินเทอร์เฟซควบคุม VPN ที่รองรับ และพังเมื่อเลย์เอาต์เปลี่ยน

ก่อนจะให้สิ่งใด ถามว่าผลลัพธ์เดียวกันบรรลุได้ด้วยกลไกที่รองรับหรือไม่ หากคำตอบคือข้อกำหนดนโยบาย มักจะเป็นเช่นนั้น: แพลตฟอร์มสามารถบังคับอุโมงค์สำหรับแอปหรือโปรไฟล์โดยไม่ต้องมีบริการใด ๆ ที่คอยฟัง

การตรวจสอบที่สี่: ใช้เปิดตลอดเวลาและการบล็อกเมื่อความต้องการคือการบังคับใช้

หากเบราว์เซอร์ต้องไม่สื่อสารนอกอุโมงค์เลย การบังคับใช้เป็นเรื่องของการตั้งค่าแพลตฟอร์ม ไม่ใช่แมโคร Android รองรับ VPN ที่เปิดตลอดเวลาพร้อมโหมดบล็อกที่ป้องกันทราฟฟิกเมื่ออุโมงค์ยังไม่ถูกสร้าง และอุปกรณ์ที่จัดการสามารถรับได้ผ่านนโยบาย ยืนยันว่าอุปกรณ์มีอะไรอยู่ตอนนี้แทนการสันนิษฐาน:

adb shell settings get global always_on_vpn_app
adb shell settings get global always_on_vpn_lockdown

ค่าแอปที่ไม่ใช่ null หมายความว่าแพ็กเกจถูกกำหนดให้เปิดตลอดเวลา และค่าบล็อกเป็น 1 หมายความว่าการเชื่อมต่อนอกอุโมงค์ถูกบล็อก คู่นี้เองที่เปลี่ยนนิสัยแบบพยายามอย่างดีที่สุดให้เป็นการรับประกัน และยังขจัดปัญหาแย่งเวลาไปโดยสิ้นเชิง เพราะอุโมงค์ถูกสร้างก่อนที่ทราฟฟิกของแอปจะได้รับอนุญาต

มีสองขอบเขตที่ควรกล่าวถึงตรงนี้ โปรไฟล์งานมีคุณสมบัติ VPN ของตัวเอง ดังนั้นกฎที่ตรวจสอบในโปรไฟล์ส่วนตัวไม่ได้บอกอะไรเกี่ยวกับโปรไฟล์งาน และเบราว์เซอร์ที่ติดตั้งแยก แท็บที่กำหนดเองซึ่งเปิดโดยแอปอื่น หรือเว็บวิวภายในแอปเป็นแพ็กเกจหรือบริบทที่ต่างออกไปพร้อมเส้นทางของตัวเอง ดังนั้นตรวจสอบแพ็กเกจจริงแทนการสันนิษฐานว่าหน้าต่างที่ต่างสไตล์เป็นโดเมนแยก

การตรวจสอบที่ห้า: เขียนเวิร์กโฟลว์และทดสอบเส้นทางความล้มเหลว

ไม่ว่าคุณจะเลือกอะไร ให้บันทึกลำดับและเงื่อนไขการยกเลิก สำหรับเวิร์กโฟลว์เพื่อความสะดวก นั่นหมายถึง: อุโมงค์ขึ้น ความพร้อมพิสูจน์แล้ว เปิดไม่ระบุตัวตน และหยุดอย่างเด็ดขาดหากความพร้อมล้มเหลว สำหรับเส้นทางการบังคับใช้ หมายถึง: กำหนดแอปเปิดตลอดเวลา เปิดการบล็อก และพฤติกรรมที่คาดหวังเมื่ออุโมงค์ขึ้นไม่ได้เลย นั่นคือไม่มีทราฟฟิกแทนทราฟฟิกที่ไม่มีการป้องกัน

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

บทความที่เกี่ยวข้อง