Vì sao phản hồi DNS thất bại tại tường lửa biên VPN không trạng thái
Phản hồi vào cho truy vấn DNS của máy chủ VPN mang cổng nguồn 53, không phải cổng đích 53. Giới hạn quy tắc trong bộ phân giải thực và biên trên đường đi.
Đường hầm đã lên, máy khách đến được máy chủ VPN, nhưng máy chủ không phân giải được gì. Các truy vấn đi ra của chính nó rời giao diện một cách sạch sẽ, vậy lỗi nằm trên đường về: tại một biên phía trên lọc lưu lượng vào mà không ghi nhớ điều máy chủ vừa gửi. Cho phép cổng của đường hầm không mô tả chút nào sự trao đổi đó. Phản hồi cho một truy vấn DNS là một luồng riêng, và nếu biên không trạng thái, không gì đã cho phép nó quay lại.
Hai trao đổi không phải cùng một trao đổi
Ghi các bộ tuple ra và lỗi trở nên rõ ràng. Cổng đích của yêu cầu trở thành cổng nguồn của phản hồi, tức là ngược với điều hầu hết mọi người hình dung khi thêm quy tắc vào cho cổng 53:
query: 203.0.113.10:53018 -> 198.51.100.53:53
reply: 198.51.100.53:53 -> 203.0.113.10:53018Một quy tắc vào đòi cổng đích 53 mô tả lưu lượng hướng tới một trình lắng nghe DNS chạy trên máy chủ, và đó là một dịch vụ hoàn toàn khác. Những địa chỉ đó là ví dụ tài liệu, và cổng nguồn do máy khách chọn cho từng truy vấn, nên đó không phải giá trị bạn có thể sao chép vào quy tắc rồi mong nó tiếp tục hoạt động.
Biên không trạng thái so với tường lửa máy chủ có trạng thái
Bộ lọc biên không trạng thái đánh giá từng gói vào theo danh sách quy tắc của nó mà không có bảng kết nối phía sau. Một truy vấn đi ra đã rời đi thành công không tạo ra quyền nào cho phản hồi vào của nó, vì thiết bị không có bản ghi rằng đã từng có truy vấn. Tường lửa máy chủ có trạng thái thì ngược lại: việc theo dõi kết nối của nó nhận ra lưu lượng quay về của một trao đổi được phép và cho qua mà không cần quy tắc cho phản hồi. Cả hai ranh giới đều tồn tại trên một đường đi điển hình, và cả hai đều phải cho phép gói dự định.
Việc so sánh có ý nghĩa vì hai thiết bị thất bại khác nhau. Một tường lửa có trạng thái từ chối phản hồi sẽ ghi nhận việc bỏ; biên không trạng thái từ chối nó một cách im lặng, nên máy chủ chỉ đơn giản hết thời gian chờ.
Xây quyền cho phép quanh giao thức, không phải quanh số cổng
Giới hạn quy tắc trong địa chỉ thực của bộ phân giải, máy chủ đích và chính sách cổng nhận mà sản phẩm hỗ trợ. Cũng nhớ đường TCP của DNS, vì một phản hồi lớn hoặc việc lùi về do bị cắt ngắn sẽ chuyển trao đổi sang TCP và quy tắc chỉ cho UDP sẽ không bao phủ nó. Nếu biên hỗ trợ kiểm tra có trạng thái cho một luồng xác định, hãy ưu tiên nó hơn một quy tắc phản hồi viết tay, vì đường có trạng thái tự động theo các cổng mà máy khách chọn.
Sau đó xác nhận sản phẩm nào trên đường đi thực sự lọc lưu lượng. Một phạm vi biên IPv4 được ghi trong tài liệu không thiết lập chính sách IPv6, và lưu lượng nội bộ của nhà cung cấp có thể không bao giờ đi qua cùng bộ lọc đó.
Vì sao cho phép bất kỳ cổng nguồn 53 nào không phải là cách sửa
Một quy tắc chấp nhận mọi thứ tự nhận có cổng nguồn 53 là quy tắc chấp nhận điều người gửi ghi trong trường tiêu đề. Số cổng không xác thực người gửi và không chứng minh phần tải là phản hồi hợp lệ, nên quy tắc mở rộng mức phơi bày của máy chủ mà không làm việc phân giải đáng tin cậy hơn. Hãy giữ các hạn chế nguồn và giữ các kiểm tra phản hồi của chính máy khách, bao gồm việc ngẫu nhiên hóa cổng nguồn, thay vì tắt chúng để đơn giản hóa danh sách truy cập.
Nếu bộ phân giải là một dịch vụ bạn kiểm soát, giới hạn trong địa chỉ của nó là đủ. Nếu đó là bộ phân giải công cộng, hãy giới hạn trong các địa chỉ bạn đã phê duyệt và ghi chúng trong chú thích của quy tắc.
Xác minh tại đúng ranh giới, theo đúng hướng
Bắt gói tại máy chủ và tại biên cho cùng một truy vấn, và so sánh các bộ tuple thay vì số lượng gói. Một truy vấn thấy ở cả hai phía mà không thấy phản hồi ở phía máy chủ chỉ vào bộ lọc vào; một truy vấn chỉ thấy ở phía máy chủ chỉ vào việc định tuyến hoặc chính bộ phân giải. Lặp lại với một truy vấn TCP nếu bạn chỉ có quyền cho UDP, vì đó chính là khoảng trống mà bài kiểm tra đầu tiên không thể thấy.
Sửa điều này hoàn tất một trao đổi DNS mà máy chủ thực sự cần. Nó không biến máy chủ thành bộ phân giải công cộng, không cho phép các luồng VPN được chuyển tiếp và không chứng minh rằng DNS là nguyên nhân của một sự cố đường hầm không liên quan.