Little Snitch for Linux
(obdev.at)- เครื่องมือที่ช่วยให้ มองเห็นและควบคุมการเชื่อมต่อเครือข่าย ของแอปพลิเคชันได้ โดยสามารถตรวจสอบได้ว่าโปรแกรมใดกำลังสื่อสารกับเซิร์ฟเวอร์ใด
- ใน Connections View จะแสดงทราฟฟิกแบบเรียลไทม์และย้อนหลังแยกตามแอป พร้อมรองรับ การบล็อกการเชื่อมต่อ และ การติดตามการใช้ข้อมูล ได้ในคลิกเดียว
- ผ่านฟีเจอร์ Blocklists และ Rules สามารถ ควบคุมทราฟฟิกที่ไม่ต้องการได้อย่างละเอียด ทั้งตามหมวดหมู่หรือเงื่อนไขเฉพาะ
- ภายในใช้ eBPF เพื่อตรวจสอบการเชื่อมต่อในระดับเคอร์เนล และให้ อินเทอร์เฟซแบบ PWA ผ่านเว็บ UI
- เป็น เครื่องมือที่เน้นความเป็นส่วนตัว ไม่ใช่เครื่องมือด้านความปลอดภัย จึงเหมาะกับการบล็อกการสื่อสารภายนอกของซอฟต์แวร์ทั่วไป แต่มีข้อจำกัดสำหรับการป้องกันการโจมตีขั้นสูง
ภาพรวม
- Little Snitch for Linux เป็นเครื่องมือสำหรับแสดงภาพและควบคุมการเชื่อมต่อเครือข่ายของแอปพลิเคชันแบบเรียลไทม์
- ตรวจสอบได้ว่าแอปพลิเคชันใดกำลังสื่อสารกับเซิร์ฟเวอร์ใด
- มีความสามารถในการบล็อกการเชื่อมต่อที่ไม่ต้องการ บันทึกทราฟฟิก และติดตามการใช้ข้อมูล
- ต้องใช้ Linux kernel 6.12 ขึ้นไป และ การรองรับ BTF ของเคอร์เนล
- เว็บ UI เข้าถึงได้ที่
http://localhost:3031/และติดตั้งในรูปแบบ PWA (Progressive Web App) ได้
การติดตามการเชื่อมต่อ
- ใน Connections View จะแสดงกิจกรรมเครือข่ายปัจจุบันและย้อนหลังแยกตามแอปพลิเคชัน
- แสดงรายการที่ถูกบล็อกโดยกฎและบล็อกลิสต์ ปริมาณการใช้ข้อมูล และประวัติทราฟฟิก
- สามารถเรียงลำดับและกรองตามกิจกรรมล่าสุด ปริมาณข้อมูล และชื่อได้
- บล็อกการเชื่อมต่อได้ในคลิกเดียว
- แผนภาพทราฟฟิก ด้านล่างใช้แสดงปริมาณข้อมูลตามช่วงเวลา
- เมื่อคลิกลากเพื่อซูมในช่วงที่ต้องการ จะแสดงเฉพาะกิจกรรมในช่วงเวลานั้น
การจัดการบล็อกลิสต์
- ฟีเจอร์ Blocklists ช่วยบล็อกหมวดหมู่ทราฟฟิกที่ไม่ต้องการได้แบบรวมครั้งเดียว
- ดาวน์โหลดจากแหล่งข้อมูลระยะไกลโดยอัตโนมัติและอัปเดตให้ทันสมัยอยู่เสมอ
- รูปแบบที่รองรับ: หนึ่งโดเมนต่อหนึ่งบรรทัด, หนึ่งชื่อโฮสต์ต่อหนึ่งบรรทัด, รูปแบบ
/etc/hosts(IP + ชื่อโฮสต์), ช่วงเครือข่ายแบบ CIDR -
ไม่รองรับ wildcard, regular expression, glob หรือรูปแบบที่อิงกับ URL
- เพื่อประสิทธิภาพ แนะนำให้ใช้ รายการแบบอิงโดเมน
- ตัวอย่างรายการ: Hagezi, Peter Lowe, Steven Black, oisd.nl
- รูปแบบ
.lsrulesสำหรับ macOS ไม่สามารถใช้ร่วมกับเวอร์ชัน Linux ได้
กฎแบบกำหนดเอง
- ฟีเจอร์ Rules ให้การควบคุมที่ละเอียดกว่าบล็อกลิสต์
- สามารถตั้งค่าตามโปรเซส พอร์ต และโปรโตคอลที่เฉพาะเจาะจงได้
- รายการกฎสามารถเรียงลำดับและกรองได้
- ใช้กฎเพื่อกำหนด นโยบายควบคุมเครือข่ายอย่างละเอียด ได้
ความปลอดภัยในการเข้าถึง
- โดยค่าเริ่มต้น เว็บอินเทอร์เฟซสามารถถูกเข้าถึงได้โดยทุกโปรเซสที่กำลังทำงานอยู่ในเครื่อง
- มีความเป็นไปได้ที่แอปพลิเคชันอันตรายจะเปลี่ยนกฎ แก้ไขบล็อกลิสต์ หรือปิดการทำงานของตัวกรองได้
- เพื่อป้องกันปัญหานี้ สามารถตั้งค่าให้ ต้องยืนยันตัวตนก่อนใช้งาน ได้
- การตั้งค่ารายละเอียดทำได้ในส่วนการกำหนดค่าขั้นสูง (Advanced configuration)
โครงสร้างภายใน
- ใช้ eBPF เพื่อ hook เข้ากับ Linux network stack
- โปรแกรม eBPF จะ เฝ้าติดตามการเชื่อมต่อขาออก และส่งข้อมูลไปยัง daemon
- daemon ทำหน้าที่ติดตามสถิติ ประมวลผลกฎ และให้บริการเว็บ UI
- ซอร์สโค้ดของโปรแกรม eBPF และเว็บ UI เปิดเผยบน GitHub
การกำหนดค่าขั้นสูง
- UI เริ่มต้นจะแสดงเฉพาะการตั้งค่าหลัก ส่วนการตั้งค่าขั้นสูงใช้ไฟล์ ข้อความ ในการกำหนด
- หลังแก้ไขแล้วต้องรีสตาร์ต daemon
littlesnitch
- หลังแก้ไขแล้วต้องรีสตาร์ต daemon
- พาธการตั้งค่าเริ่มต้น:
/var/lib/littlesnitch/config/- ไม่ควรแก้ไขโดยตรง แต่ให้คัดลอกไฟล์ที่จะปรับแต่งไปยัง
/var/lib/littlesnitch/overrides/config/แล้วค่อยแก้ไข - การตั้งค่าในไดเรกทอรี override จะถูกนำมาใช้ก่อนเสมอ
- ไม่ควรแก้ไขโดยตรง แต่ให้คัดลอกไฟล์ที่จะปรับแต่งไปยัง
- ไฟล์ตั้งค่าหลัก
web_ui.toml: ตั้งค่าที่อยู่เครือข่าย พอร์ต TLS และการยืนยันตัวตน- หากมีผู้ใช้หลายคนเข้าถึงได้ ควรเปิดใช้การยืนยันตัวตน
- หากเปิดให้เข้าถึงจากนอก loopback ต้องเพิ่ม TLS
main.toml: ตั้งค่าพฤติกรรมเริ่มต้นของการเชื่อมต่อที่ไม่ตรงกับกฎใด- ค่าเริ่มต้นคืออนุญาต และสามารถเปลี่ยนเป็นปฏิเสธได้หากต้องการ
- หากตั้งค่าผิดอาจเสี่ยงทำให้ไม่สามารถเข้าถึงระบบได้
executables.toml: กฎสำหรับจัดกลุ่มไฟล์ปฏิบัติการ- แสดงหลายเวอร์ชันของแอปเดียวกันรวมกันได้โดยตัดหมายเลขเวอร์ชันออก
- กำหนดความสัมพันธ์แบบโปรเซสแม่ของเชลล์และโปรเซสจัดการแอปได้
- มีการปรับปรุงอย่างต่อเนื่องจากฟีดแบ็กของชุมชน
- โปรแกรม eBPF และเว็บ UI สามารถแทนที่ด้วยเวอร์ชันที่ผู้ใช้ build เองได้
- เวอร์ชันในไดเรกทอรี override จะถูกนำมาใช้ก่อน
ข้อจำกัด
- ออกแบบมาเป็น เครื่องมือด้านความเป็นส่วนตัว ไม่ใช่เครื่องมือด้านความปลอดภัย
- เรียบง่ายกว่าเวอร์ชัน macOS และมีข้อจำกัดด้านความสามารถจากข้อจำกัดของ eBPF
- eBPF มี ข้อจำกัดด้านพื้นที่จัดเก็บและความซับซ้อนของโปรแกรม
- หากมีทราฟฟิกมาก ตารางแคชอาจล้น ทำให้การแมประหว่างแพ็กเก็ต โปรเซส และชื่อ DNS ไม่สมบูรณ์
- ใช้ heuristics ในการกู้คืนชื่อโฮสต์เดิมจาก IP address ที่ถูก resolve
- เวอร์ชัน macOS ใช้ deep packet inspection (DPI) เพื่อทำการแมปได้แม่นยำกว่า
- เหมาะสำหรับ ติดตามและบล็อกการสื่อสารภายนอกของซอฟต์แวร์ทั่วไป แต่ไม่เหมาะสำหรับใช้ป้องกันระบบจากผู้โจมตีระดับสูง
ไลเซนส์
- ประกอบด้วย 3 ส่วน
- โปรแกรมเคอร์เนล eBPF และ เว็บ UI เผยแพร่ภายใต้ GNU GPL v2 และใช้งานได้บน GitHub
- daemon (
littlesnitch --daemon) เป็น ซอฟต์แวร์กรรมสิทธิ์ (proprietary) แต่ ใช้งานและแจกจ่ายต่อได้ฟรี
1 ความคิดเห็น
ความเห็นจาก Hacker News
ฉันไม่ได้ใช้ Little Snitch หรือ Open Snitch แต่สงสัยว่ามันจะบล็อก คำขอที่อาศัยโปรแกรมที่ได้รับอนุญาตอยู่แล้ว ได้หรือไม่
ตัวอย่างเช่น ถ้า
suspicious.pyเรียก Firefox เพื่ออัปโหลดข้อมูล อยากรู้ว่าไฟร์วอลล์จะหยุดสิ่งนี้ได้หรือเปล่าถ้ารันสคริปต์แบบ
#!/bin/interpreterกฎจะถูกใช้กับพาธของสคริปต์ แต่ถ้ารันในรูปแบบinterpreter scriptการทำงานจะต่างออกไปใน Open Snitch สามารถจับคู่แบบละเอียดได้ เช่น ใช้เงื่อนไขว่ามี โปรเซส python อยู่ใน parent tree หรือไม่
ไฟร์วอลล์ Windows รุ่นเก่าอย่าง Outpost หรือ Zone Alarm เคยมีฟีเจอร์ Leak Control เพื่อตรวจจับพฤติกรรมแบบนี้
ดิสโทรส่วนใหญ่มีฟีเจอร์นี้มาให้ แต่ผู้ใช้ทั่วไปมักไม่ค่อยฝึกกฎหรือปรับตั้งค่า
ลองรันบน Fedora 43 แล้วพบว่ามันกินทุกคอร์ของ CPU และ ล้มเหลวพร้อมทิ้งล็อก 50K บรรทัด
เกิดข้อผิดพลาด
BPF_PROG_LOAD syscall returned Argument list too longบน ARM64 VM มันโหลดได้แต่ระบุโปรเซสไม่ได้
กำลังตรวจสอบปัญหาความเข้ากันได้ของ eBPF และบอกว่าด้วยทรัพยากรที่จำกัดจึงต้องใช้เวลา
เนื่องจาก Fedora ใช้ Btrfs เป็นค่าเริ่มต้น จึงไม่สามารถระบุโปรเซสได้ และมีแผนจะแก้ในเวอร์ชัน 1.0.1
ในฐานะผู้ใช้ Linux ฉันให้ความสำคัญกับ การเปิดเผยโค้ด
ตอนนี้พอใจกับชุด OpenSnitch + OpenSnitch-UI มากแล้ว
ฉันสงสัยว่าโมเดล เครื่องมือแบบเสียเงิน บน Linux จะไปได้ไกลแค่ไหน
ส่วนใหญ่จะเป็นของฟรี, พึ่งการสนับสนุน, หรือโมเดล open-core
เลยอยากรู้ว่าเหตุผลที่ Little Snitch ปล่อยเวอร์ชัน Linux ฟรี เป็นเพราะมองว่า “บน Linux ทำเงินไม่ได้” หรือเพราะเหตุผลอื่น
ตัวฉันเองก็รู้สึกไม่สบายใจกับโปรแกรมปิดซอร์สที่จัดการทราฟฟิกเครือข่าย
แต่ก็บริจาคให้โปรเจกต์ FOSS ปีละหลายพันดอลลาร์
อย่างไรก็ตาม ผู้ใช้แบบนี้มีไม่มาก ทำให้หารายได้จากการเป็นโอเพนซอร์สเต็มรูปแบบได้ยาก
โดยเฉพาะโค้ดอย่างไฟร์วอลล์ที่ มีสิทธิ์สูงมาก ถ้าไม่โอเพนซอร์สก็ยากจะเชื่อใจ
พร้อมบอกว่าอยากรู้เหมือนกันว่าผลจะออกมาอย่างไร
บล็อกโพสต์ที่เกี่ยวข้อง: แนะนำ Little Snitch for Linux
เมื่อก่อนบน Windows มี ZoneAlarm
ฉันสงสัยมาตลอดว่าทำไมบน Linux ถึงไม่มีอะไรแบบนี้
พอกลับไปดู โค้ด Direwall ก็ยังเห็นสไตล์ C แบบเก่าชัดเจน
มันทำงานโดยแพตช์ไลบรารี socket และฉันก็ยังสงสัยว่าตอนนี้จะคอมไพล์ได้หรือไม่
มันอธิบายชัดเจนว่าแรก ๆ จะถามบ่อยและเสียงดัง แต่เมื่อเรียนรู้แล้วจะเงียบลง
นั่นทำให้ผู้ใช้เชื่อใจ และเป็นเหตุผลที่ฉันเคยแนะนำมัน
พอซอฟต์แวร์เชิงพาณิชย์เริ่มเข้ามาบน Linux คนก็เริ่มอยากเฝ้าดูเครือข่ายมากขึ้น
มันช่วยจำกัดการรันแบบสะเปะสะปะของ Windows ได้ดี
ฉันใช้ Little Snitch มานานและ อนุมัติทุกคำขอเครือข่ายด้วยตัวเอง
แต่ก็อดคิดไม่ได้ว่าจะเชื่อใจโปรแกรมที่มีสิทธิ์ระดับ kernel extension ได้มากแค่ไหน
เพราะแทบไม่มีข้อมูลเกี่ยวกับบริษัทหรือผู้พัฒนาเลย
คอมโพเนนต์ eBPF ถูกเผยแพร่เป็น โอเพนซอร์ส GPLv2 และดูโค้ดได้ที่ GitHub
อย่างไรก็ตาม daemon ต้องรันด้วยสิทธิ์ root จึงควรจำกัดมันด้วย การควบคุมการเข้าถึงอย่าง SELinux
เขาบอกว่านี่เป็นรีลีสแรก ตอนนี้กำลังไล่ตอบรายงานบั๊ก และก็แปลกใจกับความหลากหลายของสภาพแวดล้อม Linux
บน macOS ใช้ Network Extension API ไม่ใช่ kernel extension
ถ้าต้องการสังเกตทราฟฟิกเครือข่ายเป็นหลัก ก็มี GUI sniffer อย่าง Sniffnet
ขอแสดงความยินดีกับการออกพอร์ต Linux
ในฐานะทางเลือกที่เป็นโอเพนซอร์สเต็มรูปแบบและทำงานบนเทอร์มินัล ฉันขอแนะนำ RustNet ที่ฉันดูแลอยู่
มันเป็นเครื่องมือ มอนิเตอร์แพ็กเก็ตแบบเรียลไทม์บน TUI ไม่ใช่ไฟร์วอลล์ แต่ทำ sandboxing ให้ตัวเองผ่าน Landlock
อยากรู้ว่ามันเทียบกับ OpenSnitch อย่างไร
OpenSnitch GitHub
นี่เป็นเพราะ ข้อจำกัดทางเทคนิค ของเวอร์ชัน Linux
เพราะมันอิง eBPF ถ้าแคชล้นก็จะจับคู่โปรเซสไม่ได้ และก็ใช้ deep packet inspection แบบบน macOS ไม่ได้
มีอธิบายละเอียดในคำอธิบายทางการ
บทความที่เกี่ยวข้อง
ฉันใช้งาน OpenSnitch ได้อย่างน่าพอใจ
แต่อยากให้มี ระบบปลั๊กอิน ที่วิเคราะห์พฤติกรรมผู้ใช้ร่วมกับการเชื่อมต่อเครือข่าย แล้วแจ้งเตือนเฉพาะ การเชื่อมต่อที่ไม่คาดคิด
และถ้ามีตัว wrapper อนุญาตอัตโนมัติ แบบ CLI แทนป๊อปอัปด้วยก็น่าจะสะดวกดี