2 điểm bởi GN⁺ 12 ngày trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Công cụ cho phép trực quan hóa và kiểm soát các kết nối mạng của ứng dụng, giúp biết chương trình nào đang giao tiếp với máy chủ nào
  • Trong Connections View, hiển thị lưu lượng theo từng ứng dụng theo thời gian thực và trong quá khứ, đồng thời hỗ trợ chặn kết nốitheo dõi mức sử dụng dữ liệu chỉ với một cú nhấp
  • Thông qua các tính năng BlocklistsRules, có thể kiểm soát tinh vi lưu lượng không mong muốn theo danh mục hoặc theo điều kiện chi tiết
  • Bên trong sử dụng eBPF để giám sát kết nối ở cấp độ kernel, và cung cấp giao diện dạng PWA qua web UI
  • Đây là công cụ tập trung vào quyền riêng tư, không phải công cụ bảo mật; phù hợp để chặn giao tiếp ra ngoài của phần mềm thông thường, nhưng bị hạn chế nếu dùng để phòng thủ trước các cuộc tấn công nâng cao

Tổng quan

  • Little Snitch for Linux là công cụ cho phép trực quan hóa và kiểm soát các kết nối mạng của ứng dụng theo thời gian thực
    • Có thể biết ứng dụng nào đang giao tiếp với máy chủ nào
    • Cung cấp tính năng chặn kết nối không mong muốn, ghi lại lưu lượng và theo dõi mức sử dụng dữ liệu
  • Yêu cầu Linux kernel 6.12 trở lênkernel hỗ trợ BTF
  • Có thể truy cập web UI tại http://localhost:3031/, đồng thời có thể cài đặt dưới dạng PWA (Progressive Web App)

Giám sát kết nối

  • Trong Connections View, hiển thị hoạt động mạng hiện tại và trước đây theo từng ứng dụng
    • Hiển thị các mục bị chặn bởi quy tắc và danh sách chặn, mức sử dụng dữ liệu và lịch sử lưu lượng
    • Có thể sắp xếp và lọc theo hoạt động gần đây, lượng dữ liệu và tên
    • Có thể chặn kết nối chỉ với một cú nhấp
  • Biểu đồ lưu lượng ở phía dưới trực quan hóa lượng dữ liệu theo thời gian
    • Khi kéo để phóng to một khoảng cụ thể, chỉ hoạt động trong khoảng thời gian đó sẽ được lọc và hiển thị

Quản lý danh sách chặn

  • Tính năng Blocklists cho phép chặn hàng loạt các danh mục lưu lượng không mong muốn
    • Tự động tải xuống từ nguồn từ xa và luôn được cập nhật
    • Định dạng hỗ trợ: mỗi dòng một domain, mỗi dòng một hostname, định dạng /etc/hosts (IP + hostname), dải mạng CIDR
    • Không hỗ trợ định dạng wildcard, biểu thức chính quy, glob hoặc dựa trên URL

      • Vì hiệu quả, nên dùng danh sách dựa trên domain
      • Danh sách ví dụ: Hagezi, Peter Lowe, Steven Black, oisd.nl
      • Định dạng .lsrules cho macOS không tương thích với phiên bản Linux

Quy tắc tùy chỉnh

  • Tính năng Rules cung cấp khả năng kiểm soát chi tiết hơn so với blocklist
    • Có thể thiết lập theo từng tiến trình, cổng và giao thức cụ thể
    • Danh sách quy tắc có thể sắp xếp và lọc
  • Có thể xây dựng chính sách kiểm soát mạng chi tiết thông qua các quy tắc

Bảo mật truy cập

  • Mặc định, mọi tiến trình đang chạy cục bộ đều có thể truy cập giao diện web
    • Có khả năng ứng dụng độc hại thay đổi quy tắc, sửa danh sách chặn hoặc vô hiệu hóa bộ lọc
  • Để ngăn điều này, có thể bật yêu cầu xác thực
    • Thiết lập chi tiết được thực hiện trong cấu hình nâng cao (Advanced configuration)

Cấu trúc bên trong

  • Sử dụng eBPF để hook vào ngăn xếp mạng của Linux
    • Chương trình eBPF giám sát các kết nối đi ra ngoài và chuyển dữ liệu đến daemon
    • Daemon đảm nhiệm việc theo dõi thống kê, xử lý quy tắc và cung cấp web UI
  • Mã nguồn của chương trình eBPF và web UI được công khai trên GitHub

Cấu hình nâng cao

  • UI mặc định chỉ hiển thị các thiết lập chính; cấu hình nâng cao được thiết lập bằng tệp văn bản
    • Sau khi thay đổi, cần khởi động lại daemon littlesnitch
  • Đường dẫn cấu hình mặc định: /var/lib/littlesnitch/config/
    • Không chỉnh sửa trực tiếp; hãy sao chép tệp cần sửa sang /var/lib/littlesnitch/overrides/config/ rồi chỉnh sửa
    • Cấu hình trong thư mục override luôn được ưu tiên áp dụng
  • Các tệp cấu hình chính
    • web_ui.toml: địa chỉ mạng, cổng, TLS, thiết lập xác thực
      • Nếu nhiều người dùng có thể truy cập, cần bật xác thực
      • Nếu mở ra ngoài loopback, cần bổ sung TLS
    • main.toml: thiết lập hành vi mặc định với các kết nối không khớp quy tắc
      • Mặc định là cho phép; có thể đổi sang từ chối nếu cần
      • Nếu cấu hình sai có thể dẫn đến nguy cơ không truy cập được hệ thống
    • executables.toml: quy tắc nhóm các tệp thực thi
      • Loại bỏ số phiên bản để hiển thị nhiều phiên bản của cùng một ứng dụng thành một
      • Định nghĩa quan hệ cha giữa shell và các tiến trình quản lý ứng dụng
      • Tiếp tục được cải thiện thông qua phản hồi từ cộng đồng
  • Chương trình eBPF và web UI có thể được thay bằng bản build của người dùng
    • Phiên bản trong thư mục override sẽ được ưu tiên áp dụng

Hạn chế

  • Được thiết kế là công cụ quyền riêng tư chứ không phải công cụ bảo mật
    • Đơn giản hơn phiên bản macOS, và có giới hạn chức năng do các ràng buộc của eBPF
  • eBPF có giới hạn về dung lượng lưu trữ và độ phức tạp chương trình, nên
    • Khi lưu lượng lớn, bảng cache có thể bị tràn, khiến việc ánh xạ giữa gói tin, tiến trình và tên DNS trở nên không hoàn chỉnh
    • Khi khôi phục hostname đã được tra cứu ban đầu từ địa chỉ IP, hệ thống sử dụng suy luận (heuristics)
    • Phiên bản macOS dùng kiểm tra gói tin sâu (DPI) để ánh xạ chính xác hơn
  • Phù hợp để giám sát và chặn giao tiếp ra ngoài của phần mềm thông thường, nhưng không phù hợp để phòng thủ hệ thống trước các tác nhân tấn công nâng cao

Giấy phép

  • Gồm 3 thành phần
    • Chương trình kernel eBPFweb UI được phát hành theo GNU GPL v2, có thể sử dụng trên GitHub
    • Daemon (littlesnitch --daemon)độc quyền (proprietary) nhưng được phép sử dụng và phân phối lại miễn phí

1 bình luận

 
Ý kiến trên Hacker News
  • Tôi không dùng Little Snitch hay Open Snitch, nhưng tôi tự hỏi liệu nó có thể chặn các yêu cầu lợi dụng chương trình đã được cho phép hay không
    Ví dụ, nếu suspicious.py gọi Firefox để tải dữ liệu lên, tôi muốn biết tường lửa có chặn được việc đó không

    • Little Snitch for Linux đánh giá quy tắc bằng cách xem xét đồng thời namespace của tiến trình và tiến trình cha
      Nếu chạy script bằng #!/bin/interpreter thì quy tắc áp dụng theo đường dẫn script, còn nếu chạy theo dạng interpreter script thì sẽ hoạt động khác
    • Chỉ với các quy tắc đơn giản thì sẽ không bị chặn
      Trong Open Snitch, có thể khớp chi tiết dựa trên việc cây cha có chứa tiến trình python hay không, v.v.
    • Nếu tính cả việc nạp thư viện hay can thiệp bộ nhớ liên tiến trình (ví dụ: OpenProcess, WriteProcessMemory, CreateRemoteThread) thì mọi thứ sẽ phức tạp hơn nhiều
      Các tường lửa Windows trước đây như Outpost hay Zone Alarm từng cung cấp tính năng Leak Control để phát hiện kiểu hành vi này
    • Có thể tận dụng chính sách MAC của SELinux để giới hạn file và cổng mà mỗi tiến trình được phép truy cập
      Hầu hết các bản phân phối đều có tính năng này, nhưng người dùng phổ thông thường không học hoặc cấu hình quy tắc
  • Tôi đã thử chạy trên Fedora 43, nó chiếm toàn bộ các lõi CPU và thất bại sau khi ghi ra 50K dòng log
    Xuất hiện lỗi BPF_PROG_LOAD syscall returned Argument list too long

    • Nhà phát triển cho biết họ chưa thử nghiệm trên Fedora
      Trên VM ARM64 thì nó tải được nhưng không nhận diện được tiến trình
      Họ đang điều tra vấn đề tương thích eBPF và nói rằng do nguồn lực hạn chế nên sẽ cần thời gian
    • Đã có issue trên GitHub
    • Theo trang tải xuống chính thức, nó không hoạt động trên hệ thống tệp Btrfs
      Fedora dùng Btrfs làm hệ thống tệp mặc định nên không thể nhận diện tiến trình, và dự kiến sẽ được sửa trong phiên bản 1.0.1
    • Tôi cũng gặp vấn đề tương tự. Nó chỉ dùng một nửa CPU, nhưng web UI không hoạt động
    • Đây đúng là trải nghiệm Linux rất đỗi bình thường. Câu nói 2026 là năm của desktop Linux nghe như một trò đùa
  • Là người dùng Linux, tôi coi trọng tính mở của mã nguồn
    Tôi hoàn toàn hài lòng với bộ đôi OpenSnitch + OpenSnitch-UI

  • Tôi từng tự hỏi mô hình công cụ trả phí trên Linux thực tế khả thi đến mức nào
    Phần lớn đều miễn phí, dựa vào tài trợ, hoặc theo mô hình open-core
    Tôi tò mò liệu việc Little Snitch phát hành bản Linux miễn phí có phải vì nhận thức rằng “trên Linux không kiếm được tiền”, hay vì lý do nào khác

    • Cộng đồng Linux có sự ngờ vực mạnh với phần mềm đóng
      Bản thân tôi cũng thấy ngại với một chương trình đóng xử lý toàn bộ lưu lượng mạng
      Thay vào đó, tôi quyên góp hàng nghìn đô mỗi năm cho các dự án FOSS
      Nhưng kiểu người dùng như vậy là thiểu số, nên rất khó tạo doanh thu chỉ bằng mã nguồn mở hoàn toàn
    • Vì OpenSnitch đã tồn tại và miễn phí nên một lựa chọn thay thế có trả phí không mấy thuyết phục
      Đặc biệt với mã có quyền cao như tường lửa thì rất khó tin tưởng nếu không phải mã nguồn mở
    • Nhà phát triển của Little Snitch for Linux cho biết: “Chúng tôi là một nhóm độc lập nhỏ, không phải được đầu tư, và quyết định lần này là lựa chọn mang tính cá nhân”
      Họ nói cũng tò mò muốn xem kết quả sẽ ra sao
    • Động lực của nhóm phát triển được giải thích rõ trong bài viết blog chính thức
  • Bài blog liên quan: Giới thiệu Little Snitch for Linux

  • Trước đây Windows từng có ZoneAlarm
    Tôi luôn tự hỏi vì sao Linux lại không có thứ như vậy

    • Ngày xưa tôi từng tự viết một chương trình tương tự ZoneAlarm cho AmigaOS
      Tìm lại mã Direwall thì vẫn còn nguyên phong cách C cổ điển ngày trước
      Nó hoạt động bằng cách vá thư viện socket, và tôi tự hỏi bây giờ còn biên dịch được không
    • Điểm mạnh của ZoneAlarm không chỉ là công nghệ mà còn là giáo dục người dùng và thiết kế UX
      Ban đầu nó hỏi khá nhiều, nhưng giải thích rõ rằng sau khi học xong thì sẽ yên tĩnh hơn
      Nhờ vậy nó tạo được niềm tin với người dùng, và đó cũng là lý do tôi từng khuyên dùng nó
    • Khi đó phần lớn là phần mềm GNU nên hầu như không có spyware
      Khi phần mềm thương mại bắt đầu xuất hiện trên Linux, nhu cầu giám sát mạng mới tăng lên
    • Tôi vẫn nhớ đã dùng ZoneAlarm vào đầu những năm 2000
    • Tôi cũng nhớ Kerio Personal Firewall. Sau đó tôi chuyển sang ZA hoặc Comodo, và tính năng chạy cô lập của chúng rất ấn tượng
      Nó rất hữu ích vì có thể hạn chế việc thực thi bừa bãi trên Windows
  • Tôi đã dùng Little Snitch rất lâu và phê duyệt thủ công mọi yêu cầu mạng
    Nhưng tôi vẫn băn khoăn có thể tin tưởng đến mức nào một chương trình có đặc quyền ở cấp kernel extension
    Tôi tò mò vì gần như không có nhiều thông tin về công ty hay nhà phát triển

    • Nhà phát triển Little Snitch for Linux đã trực tiếp trả lời
      Thành phần eBPF được phát hành dưới dạng mã nguồn mở GPLv2, có thể xem trên mã GitHub
      Tuy nhiên daemon vẫn phải chạy với quyền root, nên cần giới hạn bằng kiểm soát truy cập như SELinux
      Đây là bản phát hành đầu tiên nên họ đang xử lý các báo cáo lỗi, và họ nói rất bất ngờ trước mức độ đa dạng của môi trường Linux
    • Đây là một nhà phát triển độc lập cho Mac đã hoạt động hơn 20 năm, và Little Snitch là sản phẩm từ lâu đã được yêu thích
    • Tôi đang đồng phát triển một tường lửa FOSS cho Android lấy cảm hứng từ Little Snitch/OpenSnitch
      Trên macOS, họ không dùng kernel extension mà dùng Network Extension API
      Nếu mục đích là quan sát mạng, cũng có các GUI sniffer như Sniffnet
  • Xin chúc mừng việc phát hành bản port cho Linux
    Tôi muốn giới thiệu RustNet, một lựa chọn thay thế hoàn toàn mã nguồn mở và chạy trong terminal mà tôi đang duy trì
    Đây là công cụ giám sát gói tin thời gian thực dựa trên TUI, không phải tường lửa nhưng tự sandbox bằng Landlock

    • Trông khá thú vị, tôi sẽ thử dùng sau
  • Tôi tò mò về so sánh với OpenSnitch
    OpenSnitch GitHub

    • Tôi đã thử Little Snitch nhưng nó gần như không làm được phân giải IP→tên miền, và cũng thất bại trong việc nhận diện tiến trình
      Đây là do giới hạn kỹ thuật của phiên bản Linux
      Vì dựa trên eBPF nên nếu cache bị tràn thì không thể ánh xạ tiến trình, và cũng không thể dùng deep packet inspection như trên macOS
      Điều này được giải thích chi tiết trên trang chính thức
    • Tôi cũng đã cài OpenSnitch nhưng hiện đang tắt đi. Có lẽ là vì mệt mỏi thông báo
    • Theo blog của nhà phát triển, họ đã tự làm vì các công cụ hiện có không cung cấp khả năng “xem các kết nối theo từng tiến trình trong nháy mắt và chặn chỉ với một cú nhấp”
      Bài liên quan
    • OpenSnitch là mã nguồn mở hoàn toàn và không có đăng ký thuê bao. Phần mềm nên như vậy
  • Tôi đang dùng OpenSnitch khá hài lòng
    Tuy nhiên, sẽ hay hơn nếu có hệ thống plugin để phân tích đồng thời hành vi người dùng và kết nối mạng, rồi chỉ hiện cảnh báo cho những kết nối ngoài dự kiến
    Cũng sẽ tiện nếu có một wrapper tự động cho phép dựa trên CLI thay cho popup