2 คะแนน โดย GN⁺ 20 일 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เครื่องมือที่ช่วยให้ มองเห็นและควบคุมการเชื่อมต่อเครือข่าย ของแอปพลิเคชันได้ โดยสามารถตรวจสอบได้ว่าโปรแกรมใดกำลังสื่อสารกับเซิร์ฟเวอร์ใด
  • ใน 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
  • พาธการตั้งค่าเริ่มต้น: /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 ความคิดเห็น

 
GN⁺ 20 일 전
ความเห็นจาก Hacker News
  • ฉันไม่ได้ใช้ Little Snitch หรือ Open Snitch แต่สงสัยว่ามันจะบล็อก คำขอที่อาศัยโปรแกรมที่ได้รับอนุญาตอยู่แล้ว ได้หรือไม่
    ตัวอย่างเช่น ถ้า suspicious.py เรียก Firefox เพื่ออัปโหลดข้อมูล อยากรู้ว่าไฟร์วอลล์จะหยุดสิ่งนี้ได้หรือเปล่า

    • Little Snitch for Linux จะประเมินกฎโดยพิจารณา namespace ของโปรเซสและโปรเซสแม่ ร่วมกัน
      ถ้ารันสคริปต์แบบ #!/bin/interpreter กฎจะถูกใช้กับพาธของสคริปต์ แต่ถ้ารันในรูปแบบ interpreter script การทำงานจะต่างออกไป
    • ถ้าเป็นกฎแบบง่าย ๆ จะไม่ถูกบล็อก
      ใน Open Snitch สามารถจับคู่แบบละเอียดได้ เช่น ใช้เงื่อนไขว่ามี โปรเซส python อยู่ใน parent tree หรือไม่
    • ถ้าคิดรวมถึงการโหลดไลบรารีหรือ การแก้ไขหน่วยความจำระหว่างโปรเซส (เช่น OpenProcess, WriteProcessMemory, CreateRemoteThread) เรื่องจะซับซ้อนขึ้นมาก
      ไฟร์วอลล์ Windows รุ่นเก่าอย่าง Outpost หรือ Zone Alarm เคยมีฟีเจอร์ Leak Control เพื่อตรวจจับพฤติกรรมแบบนี้
    • ถ้าใช้ นโยบาย MAC ของ SELinux ก็สามารถจำกัดไฟล์และพอร์ตที่แต่ละโปรเซสเข้าถึงได้
      ดิสโทรส่วนใหญ่มีฟีเจอร์นี้มาให้ แต่ผู้ใช้ทั่วไปมักไม่ค่อยฝึกกฎหรือปรับตั้งค่า
  • ลองรันบน Fedora 43 แล้วพบว่ามันกินทุกคอร์ของ CPU และ ล้มเหลวพร้อมทิ้งล็อก 50K บรรทัด
    เกิดข้อผิดพลาด BPF_PROG_LOAD syscall returned Argument list too long

    • ผู้พัฒนายอมรับว่ายังไม่ได้ทดสอบบน Fedora
      บน ARM64 VM มันโหลดได้แต่ระบุโปรเซสไม่ได้
      กำลังตรวจสอบปัญหาความเข้ากันได้ของ eBPF และบอกว่าด้วยทรัพยากรที่จำกัดจึงต้องใช้เวลา
    • มีการเปิด GitHub issue ไว้แล้ว
    • ตามหน้าดาวน์โหลดทางการ มันยังใช้กับ ระบบไฟล์ Btrfs ไม่ได้
      เนื่องจาก Fedora ใช้ Btrfs เป็นค่าเริ่มต้น จึงไม่สามารถระบุโปรเซสได้ และมีแผนจะแก้ในเวอร์ชัน 1.0.1
    • ฉันก็เจอปัญหาเดียวกัน ใช้ CPU แค่ครึ่งหนึ่งแต่ เว็บ UI ใช้งานไม่ได้
    • นี่แหละคือ ประสบการณ์ Linux แบบบ้าน ๆ พอได้ยินมุกว่า 2026 จะเป็นปีของ Linux desktop ก็เลยฟังดูเหมือนเรื่องตลก
  • ในฐานะผู้ใช้ Linux ฉันให้ความสำคัญกับ การเปิดเผยโค้ด
    ตอนนี้พอใจกับชุด OpenSnitch + OpenSnitch-UI มากแล้ว

  • ฉันสงสัยว่าโมเดล เครื่องมือแบบเสียเงิน บน Linux จะไปได้ไกลแค่ไหน
    ส่วนใหญ่จะเป็นของฟรี, พึ่งการสนับสนุน, หรือโมเดล open-core
    เลยอยากรู้ว่าเหตุผลที่ Little Snitch ปล่อยเวอร์ชัน Linux ฟรี เป็นเพราะมองว่า “บน Linux ทำเงินไม่ได้” หรือเพราะเหตุผลอื่น

    • ชุมชน Linux มี ความไม่ไว้วางใจต่อซอฟต์แวร์ปิดซอร์ส ค่อนข้างแรง
      ตัวฉันเองก็รู้สึกไม่สบายใจกับโปรแกรมปิดซอร์สที่จัดการทราฟฟิกเครือข่าย
      แต่ก็บริจาคให้โปรเจกต์ FOSS ปีละหลายพันดอลลาร์
      อย่างไรก็ตาม ผู้ใช้แบบนี้มีไม่มาก ทำให้หารายได้จากการเป็นโอเพนซอร์สเต็มรูปแบบได้ยาก
    • เพราะมี OpenSnitch อยู่แล้วและใช้ฟรี ทางเลือกแบบเสียเงิน จึงโน้มน้าวได้ไม่มาก
      โดยเฉพาะโค้ดอย่างไฟร์วอลล์ที่ มีสิทธิ์สูงมาก ถ้าไม่โอเพนซอร์สก็ยากจะเชื่อใจ
    • ผู้พัฒนา Little Snitch for Linux บอกว่า “เราเป็น ทีมอิสระขนาดเล็ก ไม่ใช่นักลงทุน และการตัดสินใจครั้งนี้เป็นทางเลือกส่วนตัว”
      พร้อมบอกว่าอยากรู้เหมือนกันว่าผลจะออกมาอย่างไร
    • แรงจูงใจของผู้พัฒนาอธิบายไว้ชัดในบล็อกโพสต์ทางการ
  • บล็อกโพสต์ที่เกี่ยวข้อง: แนะนำ Little Snitch for Linux

  • เมื่อก่อนบน Windows มี ZoneAlarm
    ฉันสงสัยมาตลอดว่าทำไมบน Linux ถึงไม่มีอะไรแบบนี้

    • เมื่อก่อนฉันเคยทำโปรแกรมคล้าย ZoneAlarm สำหรับ AmigaOS ด้วยตัวเอง
      พอกลับไปดู โค้ด Direwall ก็ยังเห็นสไตล์ C แบบเก่าชัดเจน
      มันทำงานโดยแพตช์ไลบรารี socket และฉันก็ยังสงสัยว่าตอนนี้จะคอมไพล์ได้หรือไม่
    • จุดแข็งของ ZoneAlarm ไม่ใช่แค่เทคโนโลยี แต่ยังรวมถึง การให้ความรู้ผู้ใช้และการออกแบบ UX
      มันอธิบายชัดเจนว่าแรก ๆ จะถามบ่อยและเสียงดัง แต่เมื่อเรียนรู้แล้วจะเงียบลง
      นั่นทำให้ผู้ใช้เชื่อใจ และเป็นเหตุผลที่ฉันเคยแนะนำมัน
    • ตอนนั้นซอฟต์แวร์ส่วนใหญ่เป็น GNU เลยแทบไม่มี สปายแวร์
      พอซอฟต์แวร์เชิงพาณิชย์เริ่มเข้ามาบน Linux คนก็เริ่มอยากเฝ้าดูเครือข่ายมากขึ้น
    • ยังจำได้ว่าเคยใช้ ZoneAlarm ช่วงต้นยุค 2000
    • ยังจำ Kerio Personal Firewall ได้เหมือนกัน หลังจากนั้นก็ย้ายไป ZA หรือ Comodo และประทับใจกับ ฟีเจอร์รันแบบแยกกักกัน
      มันช่วยจำกัดการรันแบบสะเปะสะปะของ Windows ได้ดี
  • ฉันใช้ Little Snitch มานานและ อนุมัติทุกคำขอเครือข่ายด้วยตัวเอง
    แต่ก็อดคิดไม่ได้ว่าจะเชื่อใจโปรแกรมที่มีสิทธิ์ระดับ kernel extension ได้มากแค่ไหน
    เพราะแทบไม่มีข้อมูลเกี่ยวกับบริษัทหรือผู้พัฒนาเลย

    • ผู้พัฒนา Little Snitch for Linux เข้ามาตอบด้วยตัวเอง
      คอมโพเนนต์ eBPF ถูกเผยแพร่เป็น โอเพนซอร์ส GPLv2 และดูโค้ดได้ที่ GitHub
      อย่างไรก็ตาม daemon ต้องรันด้วยสิทธิ์ root จึงควรจำกัดมันด้วย การควบคุมการเข้าถึงอย่าง SELinux
      เขาบอกว่านี่เป็นรีลีสแรก ตอนนี้กำลังไล่ตอบรายงานบั๊ก และก็แปลกใจกับความหลากหลายของสภาพแวดล้อม Linux
    • บริษัทนี้เป็น นักพัฒนาอิสระฝั่ง Mac ที่ทำงานมานานกว่า 20 ปี และ Little Snitch ก็เป็นผลิตภัณฑ์ที่ได้รับความนิยมมานาน
    • ฉันกำลังร่วมพัฒนา ไฟร์วอลล์ FOSS สำหรับ Android ที่ได้แรงบันดาลใจจาก Little Snitch/OpenSnitch
      บน macOS ใช้ Network Extension API ไม่ใช่ kernel extension
      ถ้าต้องการสังเกตทราฟฟิกเครือข่ายเป็นหลัก ก็มี GUI sniffer อย่าง Sniffnet
  • ขอแสดงความยินดีกับการออกพอร์ต Linux
    ในฐานะทางเลือกที่เป็นโอเพนซอร์สเต็มรูปแบบและทำงานบนเทอร์มินัล ฉันขอแนะนำ RustNet ที่ฉันดูแลอยู่
    มันเป็นเครื่องมือ มอนิเตอร์แพ็กเก็ตแบบเรียลไทม์บน TUI ไม่ใช่ไฟร์วอลล์ แต่ทำ sandboxing ให้ตัวเองผ่าน Landlock

    • ดูน่าสนใจ ไว้จะลองใช้ทีหลัง
  • อยากรู้ว่ามันเทียบกับ OpenSnitch อย่างไร
    OpenSnitch GitHub

    • ฉันลองใช้ Little Snitch แล้วพบว่าแทบไม่มี การแปลง IP→โดเมน และยังระบุโปรเซสไม่สำเร็จด้วย
      นี่เป็นเพราะ ข้อจำกัดทางเทคนิค ของเวอร์ชัน Linux
      เพราะมันอิง eBPF ถ้าแคชล้นก็จะจับคู่โปรเซสไม่ได้ และก็ใช้ deep packet inspection แบบบน macOS ไม่ได้
      มีอธิบายละเอียดในคำอธิบายทางการ
    • ฉันก็เคยติดตั้ง OpenSnitch แต่ตอนนี้ปิดไว้อยู่ คงเป็นเพราะความล้าใจจากการใช้งาน
    • ตามบล็อกของผู้พัฒนา ที่ทำขึ้นมาเองเพราะเครื่องมือที่มีอยู่ยังไม่มีฟีเจอร์ “เห็นการเชื่อมต่อแยกตามโปรเซสได้ในภาพเดียว และคลิกครั้งเดียวเพื่อบล็อก”
      บทความที่เกี่ยวข้อง
    • OpenSnitch เป็น โอเพนซอร์สเต็มรูปแบบ และไม่มีค่าสมาชิก ซอฟต์แวร์ควรเป็นแบบนี้
  • ฉันใช้งาน OpenSnitch ได้อย่างน่าพอใจ
    แต่อยากให้มี ระบบปลั๊กอิน ที่วิเคราะห์พฤติกรรมผู้ใช้ร่วมกับการเชื่อมต่อเครือข่าย แล้วแจ้งเตือนเฉพาะ การเชื่อมต่อที่ไม่คาดคิด
    และถ้ามีตัว wrapper อนุญาตอัตโนมัติ แบบ CLI แทนป๊อปอัปด้วยก็น่าจะสะดวกดี