Little Snitch cho Linux: Khi không có giải pháp nào đủ tốt

09 tháng 4, 2026·8 phút đọc

Sau khi chuyển sang sử dụng Linux để giảm sự phụ thuộc vào phần mềm nước ngoài, tác giả đã phát triển Little Snitch cho Linux nhằm lấp đầy khoảng trống về công cụ giám sát mạng. Ứng dụng sử dụng công nghệ eBPF và ngôn ngữ Rust để cung cấp khả năng theo dõi và chặn kết nối mạng hiệu quả, hoàn toàn miễn phí và mã nguồn mở một phần.

Little Snitch cho Linux: Khi không có giải pháp nào đủ tốt

Các sự kiện chính trị gần đây đã thúc đẩy các chính phủ và tổ chức nghiêm túc đặt câu hỏi về sự phụ thuộc của họ vào phần mềm do nước ngoài kiểm soát. Vấn đề cốt lõi rất đơn giản nhưng khó chấp nhận: thông qua các bản cập nhật tự động, nhà cung cấp có thể chạy bất kỳ mã nào, với bất kỳ quyền hạn nào, trên máy của bạn vào bất kỳ lúc nào. Hầu hết mọi người đều biết điều này nhưng thích không nghĩ về nó. Linux là ứng cử viên rõ ràng để giảm sự phụ thuộc đó: không có công ty nào kiểm soát nó, không có quốc gia nào sở hữu nó. Vì vậy, tôi quyết định tự khám phá nó.

Tôi cài đặt nó trên một số phần cứng cũ chúng tôi có. Sau đó cài đặt các ứng dụng. Hóa ra là tôi không cần nhiều: trình duyệt, ứng dụng mail, trình soạn thảo văn bản, môi trường phát triển, ứng dụng git, Signal, Wireshark và một vài cái khác. Tôi không thể phát triển Mac trên Linux, nhưng điều đó là dễ hiểu.

Rất sớm sau đó, tôi cảm thấy kinda trần trụi: đã quen với Little Snitch, cảm giác không biết máy tính của mình đang thực hiện các kết nối nào thật lạ lẫm. Tôi đã nghiên cứu một chút, tìm thấy OpenSnitch, một số công cụ dòng lệnh và các hệ thống bảo mật khác nhau được xây dựng cho máy chủ. Không cái nào trong số này cho tôi những gì tôi muốn: xem quy trình nào đang thực hiện kết nối nào, và trong trường hợp tốt nhất là chặn bằng một cú nhấp chuột.

Little Snitch rõ ràng đang thiếu vắng, vì vậy tôi bắt đầu xây dựng nó.

Giao diện Little Snitch trên LinuxGiao diện Little Snitch trên Linux

Để tóm tắt câu chuyện dài: Tôi quyết định sử dụng eBPF để chặn lưu lượng ở cấp độ nhân. Nó có hiệu suất cao và di động hơn nhiều so với các phần mở rộng nhân. Mã ứng dụng chính được viết bằng Rust, một ngôn ngữ tôi đã muốn khám phá từ lâu. Và giao diện người dùng được xây dựng như một ứng dụng web. Lựa chọn cuối cùng có thể có vẻ kỳ lạ đối với một công cụ bảo mật, nhưng điều đó có nghĩa là bạn có thể giám sát các kết nối mạng của máy chủ Linux từ xa từ bất kỳ thiết bị nào, bao gồm cả Mac của bạn. Muốn biết Nextcloud, Home Assistant hoặc Zammad thực sự đang kết nối với đâu? Hãy sử dụng Little Snitch trên máy chủ.

Như một người bạn cũ trên phần cứng mới

Bây giờ, khi có một biến thể của Little Snitch trên Linux, cảm giác thế nào? Linux có tốt hơn Mac về quyền riêng tư không?

Có hai câu hỏi cần trả lời: một là về hệ thống chính nó, hai là về các ứng dụng bạn cài đặt.

Một hệ thống đáng ngạc nhiên yên tĩnh

Tôi nhận thấy sự khác biệt ngay trong quá trình phát triển: khi thử nghiệm trên macOS, mất tối đa 5 giây trước khi một quy trình giao tiếp và tôi thấy lưu lượng mạng. Mặt khác, khi thử nghiệm trên Linux, thường mất một phút hoặc lâu hơn cho đến khi tôi có thể phát hiện ra một kết nối. Tất nhiên, tất cả phụ thuộc vào bản phân phối Linux bạn cài đặt. Tôi sử dụng Ubuntu chỉ vì nó phổ biến như vậy, và với tư cách là một nhà phát triển, việc sử dụng cùng một thiết lập với người dùng là một ý tưởng hay.

Ubuntu tương đối yên tĩnh trên mạng, nhưng vẫn gửi phản hồi cho Canonical thông qua kênh số liệu được khai báo (ubuntu-insights kết nối với metrics.ubuntu.com) và các kênh cập nhật phần mềm khác nhau. Bạn có thể từ chối các số liệu, nhưng bạn sẽ không muốn vô hiệu hóa các bản cập nhật — và lại là vấn đề quen thuộc đó. Bạn đã đánh đổi sự phụ thuộc vào công ty này lấy công ty khác. Sự khác biệt với Linux là bạn có thể lựa chọn: có nhiều bản phân phối (distro), và bạn có thể chọn người mà bạn tin tưởng. Và với tư cách là một tổ chức lớn, bạn thậm chí có thể duy trì bản phân phối của riêng mình.

Nhưng tóm lại: trên Ubuntu, tôi tìm thấy 9 quy trình hệ thống thực hiện kết nối internet trong vòng một tuần. Trên macOS, chúng tôi đếm được hơn 100.

Không phải mọi ứng dụng đều "gọi về nhà"

Ứng dụng đầu tiên được cài đặt trên mọi máy tính thường là trình duyệt web. Chỉ sau khi cài đặt trình duyệt web, bạn mới có thể tìm kiếm phần mềm khác ngoài những thứ cơ bản được cung cấp cùng với bản phân phối của bạn.

Ubuntu của tôi đi kèm với Firefox được cài sẵn, vì vậy tôi chủ yếu nói về cái đó. Điều đầu tiên tôi làm là khởi động Firefox, nhưng không sử dụng nó để duyệt web. Ngạc nhiên thay, nó ngay lập tức hiển thị quảng cáo cho tôi, và Little Snitch xác nhận rằng nó kết nối với ads.mozilla.org, incoming.telemetry.mozilla.org và nhiều nơi khác. Biết điều này, tôi đã vào phần tùy chọn và vô hiệu hóa hầu hết các quảng cáo và theo dõi. Nhưng nó vẫn kết nối với một số máy chủ này.

Lời khuyên của tôi: Nếu bạn sử dụng trình duyệt, hãy khởi động nó và để nó ở đó không sử dụng trong ít nhất một ngày. Sau đó, hãy kiểm tra lịch sử kết nối và quyết định những gì bạn có thể vô hiệu hóa trong cài đặt, những gì bạn muốn giữ và những gì bạn muốn chặn trong Little Snitch.

Tiếp theo, tôi đã duyệt web. Không cần phải nói rằng các trang tin tức sống nhờ theo dõi và quảng cáo, nếu không họ không thể cung cấp nội dung của mình miễn phí. Nhưng bạn có biết rằng một số trang web này sử dụng somewhere giữa 50 và 100 trình theo dõi không? Tôi không muốn đổ lỗi cho ai ở đây, vì vậy hãy tự thử xem.

Đối với các ứng dụng khác: mỗi ứng dụng hoạt động nhiều hay ít giống nhau trên tất cả các nền tảng được hỗ trợ. Nếu bạn cài đặt Thunderbird, Visual Studio Code hoặc bất kỳ ứng dụng lớn nào khác, hãy mong đợi cùng loại số liệu mà bạn thấy trên các nền tảng khác. Tuy nhiên, tôi tìm thấy một ngoại lệ đáng chú ý: LibreOffice. Tôi đã khởi động LibreOffice Writer chỉ để thử nghiệm, và nó không thực hiện bất kỳ kết nối mạng nào! Rất bất thường trong những ngày nay!

Miễn phí, chức năng và Mở nguồn ở những điểm quan trọng

Từ góc độ tính năng, Little Snitch cho Linux nằm ở đâu đó giữa Little Snitch Mini và Little Snitch đầy đủ: chức năng và hữu ích, nhưng không có tất cả sự hoàn thiện và chiều sâu của phiên bản macOS. Hãy coi nó như một phiên bản đầu tiên trung thực. Phiên bản Mac vẫn là nơi công việc sâu sắc nhất của chúng tôi sống, và điều đó sẽ không thay đổi.

Thành phần nhân, được viết cho eBPF, là mã nguồn mở và bạn có thể xem cách nó được triển khai, tự sửa lỗi hoặc điều chỉnh nó cho các phiên bản nhân khác nhau. Giao diện người dùng cũng là mã nguồn mở theo GPL v2, hãy tự do cải tiến. Phần phụ trợ, quản lý quy tắc, danh sách chặn và chế độ xem kết nối phân cấp, miễn phí sử dụng nhưng không phải mã nguồn mở. Phần đó mang lại hơn hai mươi năm kinh nghiệm Little Snitch, và các thuật toán và khái niệm trong đó là những thứ chúng tôi muốn giữ kín trong thời gian này.

Một lưu ý quan trọng: không giống như phiên bản macOS, Little Snitch cho Linux không phải là một công cụ bảo mật. eBPF cung cấp tài nguyên hạn chế, vì vậy luôn có thể vượt qua tường lửa ví dụ như bằng cách làm đầy bảng. Trọng tâm của nó là quyền riêng tư: cho bạn thấy những gì đang diễn ra, và khi cần, chặn các kết nối từ phần mềm hợp pháp không tích cực cố gắng né tránh nó.

Và cuối cùng một vài lời về tính tương thích: chúng tôi phát triển trên Ubuntu 25.10 với nhân 6.17 và đã xác nhận nó hoạt động trên nhân 6.12 trở lên. Trên các nhân cũ hơn, chúng tôi hiện đang đạt đến giới hạn lệnh tối đa của trình xác minh eBPF. Về lý thuyết, tính tương thích xuống nhân 5.17, nơi bpf_loop() được giới thiệu, nên có thể đạt được, điều này sẽ bao gồm Debian 12 (Bookworm) và Ubuntu 24.04 LTS (Noble). Nếu bạn có chuyên môn để giúp đỡ, đó là một trong những lĩnh vực mà sự đóng góp sẽ tạo ra sự khác biệt thực sự.

Bạn có thể tìm thấy Little Snitch cho Linux tại đây. Nó miễn phí, và sẽ mãi mãi như vậy.

Hãy tận hưởng nó.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗