Tên VPN riêng không hoạt động? Nghi phạm là biện pháp chống DNS rebinding
Trình phân giải từ chối câu trả lời thuộc không gian riêng sẽ làm hỏng tên nội bộ, không phải đường hầm. Đọc câu trả lời, thu hẹp ngoại lệ, giữ bảo vệ ở nơi khác.
Trên LAN văn phòng, tên nội bộ trả lời ngay lập tức. Khoảnh khắc VPN được bật, nó ngừng hoạt động, ứng dụng báo hết thời gian chờ, còn đường hầm thì vẫn truyền lưu lượng mà không phàn nàn. Thứ đã thay đổi là trình phân giải, và trình phân giải đó có quan điểm riêng về địa chỉ riêng.
Biện pháp chống rebinding tồn tại để chặn một thủ thuật cụ thể. Một tên riêng được công bố có chủ đích trông đủ giống để biện pháp phòng vệ kích hoạt.
Đọc câu trả lời trước khi đọc chính sách
Hỏi tên từ trình phân giải mà VPN thực sự đẩy xuống, không phải cái laptop của bạn dùng ở nhà. So sánh câu trả lời với bản ghi bạn mong đợi, và ghi lại xem câu trả lời trống, bị từ chối, hay đầy địa chỉ công cộng mà không ai dự tính.
Các triệu chứng chồng lấn, nên hình dạng câu trả lời quyết định chẩn đoán. NXDOMAIN là bản ghi thiếu, REFUSED là quy tắc truy cập, địa chỉ công cộng cho tên nội bộ là lỗi chính sách hoặc split-DNS, còn địa chỉ riêng đúng mà máy khách không dùng được là vấn đề hoàn toàn khác. Một kết nối bị từ chối hay một yêu cầu bị treo tự nó không chứng minh gì, vì vậy lệnh đầu tiên trong những phiếu như thế nên là truy vấn chứ không phải khởi động lại. Ghi lại câu trả lời trước khi thay đổi bất cứ điều gì.
Biện pháp phòng vệ thực sự chặn gì
DNS rebinding hoạt động bằng cách thay đổi tên phân giải thành địa chỉ nào sau khi máy khách đã tin tưởng nó. Trang được tải từ một tên do kẻ tấn công kiểm soát, câu trả lời chuyển sang địa chỉ riêng, và trình duyệt bị lừa nói chuyện với thứ gì đó trên mạng cục bộ mà nó sẽ không bao giờ chấp nhận kết nối trực tiếp. Phòng vệ là từ chối những câu trả lời trỏ vào không gian riêng khi trình phân giải chưa từng được yêu cầu phục vụ một không gian tên riêng. Chính sự bất đối xứng đó là toàn bộ cuộc tấn công.
dnsmasq ghi lại chính xác hành vi đó, cùng với ngoại lệ theo từng miền. Trong hướng dẫn của nó, rebind-domain-ok được mô tả là cách đặt tên cho những miền có thể trả về hợp pháp các địa chỉ như vậy. Hãy đọc đó như dấu hiệu rằng bản sửa dự kiến là một sự cho phép có phạm vi, không phải công tắc toàn cục.
Thu hẹp ngoại lệ vào không gian tên
Sửa không gian tên trước, rồi đến ngoại lệ. Xác nhận rằng tên đang hỏng thuộc một miền mà tổ chức kiểm soát và bản ghi được duy trì có chủ đích. Một địa chỉ bất ngờ chỉ hơi giống dải LAN quen thuộc đáng bị nghi ngờ chứ không phải được hưởng ngoại lệ, nên hãy kiểm tra chủ sở hữu vùng trước khi viết bất kỳ sự cho phép nào.
# ask the resolver the VPN pushed, and show the full answer
dig +noall +answer db.corp.example @10.40.0.1
dig +short db.corp.example @10.40.0.1
# dnsmasq: what does the running configuration already allow?
grep -R 'rebind' /etc/dnsmasq.d /etc/dnsmasq.conf
Sau đó thêm sự cho phép hẹp nhất bao phủ các tên dự kiến: một miền, hoặc một miền con được ủy quyền, trong cấu hình trình phân giải mà máy khách VPN truy vấn. Tắt bảo vệ cho mọi tên trên trình phân giải đó sẽ gỡ bỏ phòng vệ cho tất cả cùng một lúc, kể cả những tên chưa từng cần đến nó.
Split DNS thuộc cùng quyết định đó. Nếu không gian tên riêng chỉ nên được trả lời trên trình phân giải nội bộ, hãy công bố nó ở đó và ngừng để nó rò rỉ sang các trình phân giải công cộng, để ngoại lệ bao phủ một đường thay vì mọi đường.
Kiểm tra lại tài nguyên và phòng vệ
Truy vấn lại, rồi kết nối tới dịch vụ và xem máy khách thấy gì. Câu trả lời riêng đúng với phiên hoạt động nghĩa là ngoại lệ đã có hiệu lực. Câu trả lời đúng nhưng phiên bị treo nghĩa là nghi phạm tiếp theo là tuyến đường hoặc danh tính của dịch vụ.
# the internal name and the public control should behave differently
dig +short db.corp.example @10.40.0.1
dig +short www.example.com @10.40.0.1
# and the service itself, with the certificate it presents
curl -sS -o /dev/null -w '%{http_code}\n' https://db.corp.example/health
Cũng hãy thử một tên công cộng qua cùng trình phân giải. Biện pháp bảo vệ vẫn phải xử lý đúng với những tên ngoài ngoại lệ, và nếu lần kiểm tra đó thất bại thì thay đổi đã rộng hơn dự kiến. Đừng động vào việc xác thực chứng chỉ trong suốt quá trình, vì một tên phân giải đúng vẫn phải khớp với chứng chỉ mà dịch vụ trình bày.
Ghi vào phiếu câu trả lời bị từ chối, miền, trình phân giải và ai sở hữu chính sách. Chính bản ghi đó biến một sự cố nội bộ bí ẩn thành một thay đổi cấu hình mà ai đó có thể xem lại.