DNS Firewall với BIND9 RPZ: Chặn Malware và Phishing từ “trứng nước”

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

Tại sao bạn cần một DNS Firewall?

Dân quản trị mạng thường mải mê với Firewall Layer 4 hay WAF mà quên mất một “tử huyệt”: Tầng DNS. Theo báo cáo từ Cisco, gần 92% mã độc sử dụng DNS để nhận lệnh từ máy chủ điều khiển (C2) hoặc đánh cắp dữ liệu.

Hãy tưởng tượng một máy tính trong mạng bị dính Ransomware. Việc đầu tiên nó làm là “gọi điện về nhà” qua một tên miền lạ để lấy khóa mã hóa. Nếu bạn chặn đứng truy vấn này ngay tại DNS Server nội bộ, mã độc sẽ bị tê liệt hoàn toàn trước khi kịp gây hại.

BIND9 RPZ (Response Policy Zones) chính là công cụ giúp bạn thực hiện điều này. Thay vì trả về IP thật của trang web lừa đảo, DNS Server sẽ trả về lỗi NXDOMAIN hoặc trỏ về một Sinkhole IP (trang cảnh báo nội bộ). Đây là cách bảo vệ chủ động, nhẹ nhàng và cực kỳ hiệu quả.

Cài đặt BIND9

Ubuntu Server là lựa chọn tốt nhất nhờ kho package ổn định. Bạn chỉ cần vài lệnh cơ bản để bắt đầu:

sudo apt update
sudo apt install bind9 bind9utils bind9-doc -y

Kiểm tra trạng thái để chắc chắn dịch vụ đã sẵn sàng:

sudo systemctl enable bind9
sudo systemctl start bind9

Cấu hình DNS Firewall với RPZ

Quy trình triển khai gồm hai phần: Khai báo chính sách và định nghĩa danh sách đen.

Bước 1: Khai báo trong named.conf.options

Mở file /etc/bind/named.conf.options. Bạn cần thêm khối response-policy vào trong block options để kích hoạt tính năng lọc.

options {
    directory "/var/cache/bind";

    # Chỉ cho phép dải IP nội bộ truy vấn
    allow-query { localhost; 192.168.1.0/24; };

    forwarders {
        8.8.8.8;
        1.1.1.1;
    };

    # Kích hoạt RPZ
    response-policy { 
        zone "rpz.blacklist"; 
    };
};

Bước 2: Khai báo Zone trong named.conf.local

Tiếp theo, hãy định nghĩa zone rpz.blacklist. Lưu ý: đây là zone chính sách, không phải zone phân giải tên miền thông thường.

zone "rpz.blacklist" {
    type master;
    file "/etc/bind/db.rpz.blacklist";
    allow-query { none; };
};

Bước 3: Tạo file dữ liệu danh sách đen

Đây là nơi bạn liệt kê các domain độc hại. Tạo file /etc/bind/db.rpz.blacklist với nội dung sau:

$TTL 60
@            IN  SOA  localhost. root.localhost. (
                          2023102701 ; serial
                          3H         ; refresh
                          1H         ; retry
                          1W         ; expire
                          1H )       ; minimum
             IN  NS   localhost.

; --- CHẶN TÊN MIỀN ---

; Trả về NXDOMAIN (Domain không tồn tại)
evil-malware.com     IN  CNAME  .
*.evil-malware.com   IN  CNAME  .

; Trỏ về trang cảnh báo (Sinkhole)
phishing-site.net    IN  A      192.168.1.100
*.phishing-site.net  IN  A      192.168.1.100

Dùng CNAME . là cách xử lý thông minh nhất. Nó khiến trình duyệt ngắt kết nối ngay lập tức thay vì bắt người dùng chờ đợi timeout đến 30 giây.

Kiểm tra và Giám sát

Trước khi khởi động lại, hãy kiểm tra lỗi cú pháp để tránh làm gián đoạn mạng:

sudo named-checkconf
sudo systemctl restart bind9

Xác nhận kết quả

Sử dụng lệnh dig từ một máy trạm để kiểm tra xem rule đã ăn khớp chưa:

dig @192.168.1.10 evil-malware.com

Nếu dòng status hiển thị NXDOMAIN, hệ thống của bạn đã được bảo vệ.

Truy tìm dấu vết mã độc

Điểm hay nhất của RPZ là khả năng phát hiện máy bị nhiễm. Khi một client truy cập web bẩn, BIND9 sẽ ghi lại log chi tiết. Bạn có thể theo dõi thời gian thực bằng lệnh:

tail -f /var/log/syslog | grep "rpz"

Nếu thấy một IP liên tục query đến domain malware, đó là lúc bạn cần cầm USB boot đi “cấp cứu” máy tính đó ngay.

Tự động hóa danh sách chặn

Việc nhập tay hàng nghìn domain là bất khả thi. Bạn nên sử dụng script Bash để crawl dữ liệu từ URLHaus hoặc Spamhaus định kỳ mỗi 24 giờ. Sau khi cập nhật file zone, chỉ cần chạy rndc reload để áp dụng cấu hình mới mà không làm gián đoạn dịch vụ.

Nhiều doanh nghiệp hiện nay còn cấu hình BIND9 làm Slave Zone để tự động đồng bộ danh sách RPZ từ các nhà cung cấp bảo mật chuyên nghiệp. Cách này giúp hệ thống luôn cập nhật các mẫu malware mới nhất chỉ sau vài phút xuất hiện.

Tổng kết

Triển khai DNS Firewall với BIND9 RPZ là phương án “ngon – bổ – rẻ” cho mọi hệ thống mạng. Nó không đòi hỏi phần cứng khủng như Proxy nhưng vẫn mang lại lớp phòng thủ chiều sâu cực kỳ tin cậy. Hãy dành 15 phút cấu hình hôm nay để giảm bớt rủi ro bị Ransomware tấn công vào ngày mai.

Share: