- 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ối và theo 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 Blocklists và Rules, 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ên và kernel 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 eBPF và web UI được phát hành theo GNU GPL v2, có thể sử dụng trên GitHub
- Daemon (
littlesnitch --daemon) là độ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.pygọ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ôngNếu chạy script bằng
#!/bin/interpreterthì quy tắc áp dụng theo đường dẫn script, còn nếu chạy theo dạnginterpreter scriptthì sẽ hoạt động khácTrong 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.
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
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 longTrê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
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
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
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
Đặ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ở
Họ nói cũng tò mò muốn xem kết quả sẽ ra sao
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
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
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 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
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
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
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
Tôi tò mò về so sánh với OpenSnitch
OpenSnitch GitHub
Đâ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
Bài liên quan
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