SSL VPN hay lớp bọc TLS? So sánh ranh giới đã thất bại
Hai thiết kế có thể đặt TLS trên 443 và mang ý nghĩa khác nhau. Bốn kiểm tra: đường đã cấu hình, backend, lưu lượng được mang và ranh giới thất bại.
Hai thiết kế có thể chạy TLS trên cổng 443 và mang ý nghĩa hoàn toàn khác nhau. Một lớp bọc bảo vệ một kết nối đã cấu hình giữa một cổng cục bộ và một backend từ xa. Một thiết kế truy cập mạng mang lưu lượng được chọn và thay đổi những gì máy khách có thể chạm tới. Hãy làm bốn kiểm tra dưới đây theo thứ tự và bạn sẽ biết mình đang nhìn cái nào, điều đó thường đủ để biết tầng nào đã thất bại.
Bắt đầu với kết nối bạn thực sự đã cấu hình
Ghi lại phía trước và phía sau trước khi so sánh sản phẩm. Một lớp bọc lắng nghe trên một địa chỉ cục bộ và chuyển tiếp tới một địa chỉ từ xa, hoặc khởi động một chương trình ở phía xa, và cặp đó là toàn bộ hợp đồng của nó. Các ứng dụng khác của máy khách không biết gì về nó trừ khi bạn hướng chúng tới đó. Đây không phải là khiếm khuyết của công cụ, công cụ sinh ra để làm việc này.
Hợp đồng của một thiết kế mạng thì khác, và nó được diễn đạt bằng tuyến đường và chính sách, không phải bằng một cặp cổng.
Hãy để ý mô tả nào trong hai mô tả khớp với sơ đồ của bạn. Nếu câu trả lời là một ánh xạ cổng với chứng chỉ ở giữa, bạn có một lớp bọc kể cả khi tên sản phẩm ghi VPN. Nếu câu trả lời là một giao diện đường hầm và các thay đổi tuyến đường, bạn có một thiết kế mạng kể cả khi nó chạy trên 443.
Kiểm tra lớp bọc kết nối tới đâu
Đọc các thiết lập lắng nghe và kết nối rồi lần theo chúng tới backend thật. Một lớp bọc chuyển tiếp tới cổng cơ sở dữ liệu không mở một ứng dụng web, và một lớp bọc chạy một chương trình thì khởi động chính chương trình đó thay vì công bố mọi thứ khác mà máy chủ đang chạy. Backend là thứ duy nhất mà lớp bọc biết.
Sau đó quyết định xem dòng được chuyển tiếp có phải văn bản thuần khi TLS kết thúc hay không. Một kết nối được bọc bảo vệ đoạn giữa hai lớp bọc, và điều gì xảy ra sau lớp bọc xa là một câu hỏi riêng. Đó là lý do việc bọc một thứ vốn đã mang bảo vệ riêng đôi khi hợp lý và đôi khi chỉ là thêm các bộ phận chuyển động. Hãy kiểm tra bước nhảy tiếp theo thay vì giả định một trong hai câu trả lời.
openssl s_client -connect wrapper.lab.example:443 -servername wrapper.lab.example -verify_return_error
sudo ss -ltnp | grep 443Lệnh thứ nhất cho thấy chứng chỉ thực sự được cấp cho máy khách, và lệnh thứ hai cho thấy thứ gì đang lắng nghe trên máy chủ. Hãy so sánh tên chứng chỉ đó với tên bạn mong đợi trước khi đọc bất cứ điều gì khác.
Kiểm tra thiết kế mang lưu lượng nào
Các thiết kế truy cập mạng mang lưu lượng được chọn và tích hợp với định tuyến và chính sách truy cập của máy khách. Việc được nhận vào không phải là cấp quyền, nên một kết nối đã xác thực vẫn cần một quyết định về việc nó được chạm tới những tài nguyên nào. Cổng không cần máy khách là mô hình thứ ba, đóng vai trò đại lý cho các thao tác được hỗ trợ mà không bao giờ xuất hiện như một giao diện tun.
Nhãn sản phẩm không cho bạn biết bạn đã mua mô hình nào trong số đó, và số cổng còn cho biết ít hơn nữa.
Việc xếp lớp là có thể và không nên làm rối phép so sánh. Bản thân một giao thức đường hầm có thể được bọc trong TLS theo một cách sắp xếp TCP được hỗ trợ, điều này thêm một lớp quanh đường hầm mà không biến lớp bọc thành đường hầm. Đó là một lựa chọn thiết kế với hành vi hiệu năng và lỗi riêng, và nó xứng đáng một dòng trong sơ đồ. Hãy ghi lại rồi so sánh các mô hình nền tảng chứ không phải lớp bọc bên ngoài.
Kiểm tra ranh giới đã thất bại, không phải nhãn
Ghi lại sự thật của một lần thử thất bại: địa chỉ phía trước, trình lắng nghe, danh tính mà máy khách đã xác minh, đích backend và thao tác được yêu cầu. Một cái bắt tay thành công chứng minh TLS bên ngoài đã hoàn tất và không nói gì về backend. Việc backend từ chối là một sự kiện khác với lỗi danh tính ở phía trước, và không cái nào tốt hơn khi bỏ -verify_return_error khỏi máy khách. Hãy so sánh những thứ tương đương, vì thành công qua một tên máy chủ hay cổng khác không cho thấy các điều kiện là như nhau.
Cổng 443 là một quy ước cho phép TLS đi qua các hộp trung gian. Nó không làm cho lưu lượng tùy ý giống một yêu cầu web đối với một thiết bị chính sách.
Kết thúc bằng một câu nêu tên cặp đầu cuối, những gì được mang, ứng dụng nào dùng nó và quyền nào mà đích thực thi. Một thiết kế không điền được bốn chỗ trống đó thì chưa hoàn chỉnh, bất kể nhãn của nó nói gì. Câu đó cũng là cách nhanh nhất để giải thích thiết kế cho người sở hữu tường lửa.