Chặn đứng kết nối “lén lút” trên Linux với OpenSnitch: Firewall cấp ứng dụng cực chất

Security tutorial - IT technology blog
Security tutorial - IT technology blog

Tại sao Firewall truyền thống là chưa đủ?

Sau khi trực tiếp audit bảo mật cho hơn 10 server và hàng chục máy trạm Linux, mình nhận ra một lỗ hổng lớn trong tư duy của nhiều anh em: chúng ta quá tập trung chặn “đầu vào” (Inbound) mà bỏ quên “đầu ra” (Outbound).

UFW hay iptables thường mặc định thả cửa cho mọi kết nối đi ra. Hãy thử tưởng tượng: một script Python lạ hoặc một extension trình duyệt âm thầm nén dữ liệu cá nhân rồi gửi về server của hacker qua port 443. Lúc này, UFW hoàn toàn vô dụng vì nó thấy port 443 là hợp lệ.

OpenSnitch giải quyết bài toán này tương tự như Little Snitch trên macOS. Bất cứ khi nào một ứng dụng đòi truy cập internet, một popup sẽ hiện ra hỏi ý kiến bạn ngay lập tức. Bạn nắm quyền sinh sát trong tay, không một byte dữ liệu nào được thoát ra mà chưa có sự đồng ý của bạn.

Cài đặt OpenSnitch trong 5 phút

Để bắt đầu trên các bản phân phối Debian/Ubuntu, bạn nên dùng file .deb trực tiếp từ GitHub để đảm bảo có các tính năng mới nhất (như hỗ trợ eBPF).

Bước 1: Tải bộ cài

Truy cập OpenSnitch Releases. Bạn cần tải hai file: opensnitch_*.deb (daemon xử lý ngầm) và python3-opensnitch-ui_*.deb (giao diện người dùng).

# Tải phiên bản mới nhất (ví dụ 1.6.x)
wget https://github.com/evilsocket/opensnitch/releases/download/v1.6.0/opensnitch_1.6.0-1_amd64.deb
wget https://github.com/evilsocket/opensnitch/releases/download/v1.6.0/python3-opensnitch-ui_1.6.0-1_all.deb

Bước 2: Cài đặt và kích hoạt

sudo apt update
sudo apt install ./opensnitch*.deb ./python3-opensnitch-ui*.deb
sudo systemctl enable --now opensnitch

Sau khi cài xong, hãy tìm “OpenSnitch” trong Menu ứng dụng và khởi chạy. Một icon hình con mắt sẽ xuất hiện trên thanh taskbar, sẵn sàng tóm gọn mọi kết nối khả nghi.

Cơ chế hoạt động: Không chỉ là chặn Port

Khác với Firewall tầng Network chỉ nhìn thấy IP và Port, OpenSnitch can thiệp sâu vào tầng Application. Khi một tiến trình (process) gọi hàm hệ thống để kết nối mạng, OpenSnitch sẽ tạm dừng (intercept) nó lại.

Hệ thống sẽ bóc tách thông tin: Tiến trình nào đang gọi (ví dụ: /usr/bin/spotify)? Ai thực thi? Nó đang cố kết nối tới domain nào? Nếu chưa có luật (rule) định sẵn, bạn sẽ nhận được thông báo với các tùy chọn:

  • Allow: Cho phép ngay lập tức.
  • Deny: Chặn đứng kết nối.
  • Duration: Tùy chỉnh thời gian hiệu lực (30 giây, đến khi khởi động lại, hoặc vĩnh viễn).

Mình từng phát hiện một phần mềm chỉnh sửa ảnh miễn phí liên tục gửi hơn 200 requests telemetry mỗi giờ về một server lạ tại Nga nhờ chính cơ chế cảnh báo thời gian thực này.

Mẹo cấu hình để không bị “ngập” trong thông báo

Mới sử dụng OpenSnitch, bạn sẽ thấy popup hiện lên liên tục khá phiền phức. Đừng nản lòng, hãy áp dụng 2 quy tắc sau để tối ưu:

1. Ưu tiên chặn theo Domain thay vì IP

Các dịch vụ lớn như Google, AWS hay Cloudflare sử dụng hàng dải IP động. Nếu bạn chặn theo IP, popup sẽ hiện lại mỗi khi IP thay đổi. Trong cửa sổ cảnh báo, hãy chọn mục “to this domain”. Điều này giúp rule của bạn bền vững hơn và giảm 80% số lượng thông báo lặp lại.

2. Xử lý khi lỡ tay chặn nhầm

Nếu bỗng dưng không update được hệ thống, khả năng cao bạn đã lỡ tay chặn apt hoặc dnf. Hãy mở UI, vào tab Rules, tìm kiếm tên ứng dụng và chuyển trạng thái từ Deny sang Allow. Mọi thứ sẽ hoạt động bình thường trở lại ngay lập tức.

Kinh nghiệm thực tế: Những thứ không nên chặn

Qua quá trình sử dụng trên máy làm việc, mình rút ra vài lưu ý quan trọng cho anh em:

  • Tiến trình hệ thống: Hãy cực kỳ cẩn trọng với systemd-resolved (xử lý DNS) hoặc ntp (đồng bộ giờ). Chặn nhầm những thứ này sẽ khiến máy tính của bạn không thể truy cập bất cứ trang web nào dù mạng vẫn căng vạch.
  • Giám sát Malware/Backdoor: Nếu bạn đang test một script tải từ GitHub, hãy bật OpenSnitch. Nếu thấy nó cố kết nối tới một IP lạ qua port 4444 hoặc 1337, đó chính là dấu hiệu của một reverse shell (mã độc chiếm quyền điều khiển).
  • Lọc quảng cáo hệ thống: Bạn có thể nạp danh sách chặn (Lists) vào OpenSnitch để chặn toàn bộ domain quảng cáo/tracking ở mức hệ thống, nhẹ hơn nhiều so với việc cài extension nặng nề trên trình duyệt.

Khắc phục sự cố nhanh

Nếu icon con mắt biến mất hoặc không thấy popup, hãy kiểm tra nhanh bằng lệnh:

sudo journalctl -u opensnitch -f

Nếu log báo lỗi NFQUEUE, có thể kernel của bạn đang thiếu module hoặc có xung đột với một firewall khác. Tuy nhiên, với các bản phân phối hiện đại như Ubuntu 22.04+, OpenSnitch chạy cực kỳ ổn định.

OpenSnitch là công cụ không thể thiếu nếu bạn muốn thực sự làm chủ chiếc máy tính của mình. Nó giúp bạn hiểu rõ ứng dụng đang làm gì sau lưng mình, từ đó nâng cao tính riêng tư và bảo mật lên một tầm cao mới.

Share: