Việc nối chuỗi hai VPN thường được bán như lớp mã hóa thêm, nhưng đó là việc kém thú vị nhất mà nó làm. Sản phẩm thực sự là quyết định cấp quyền thứ hai, do một chủ sở hữu khác đưa ra đối với một tập tài nguyên khác. Nếu cả hai giai đoạn chấp nhận cùng một thông tin xác thực và đi tới cùng các đích, thì cổng bên trong chỉ là vật trang trí kèm thêm độ trễ. Quyết định xem quyết định thứ hai đó có đáng chi phí vận hành hay không bắt đầu bằng việc nêu rõ mỗi cổng thực sự xác minh điều gì.

Một đường hầm, rồi một quyết định thứ hai

Cổng bên ngoài trả lời một câu hỏi rộng: đây có phải thiết bị của nhân viên đã được phê duyệt, và nó có được tới mạng nội bộ chung hay không. Cổng bên trong trả lời câu hỏi hẹp hơn: danh tính này có quyền bảo trì, và có được tới các điểm cuối quản trị cụ thể này hay không. Đó là những câu hỏi khác nhau với chủ sở hữu khác nhau, và không cái nào hàm ý cái kia. Việc tồn tại một đường đi qua cả hai giai đoạn không phải là thẩm quyền dùng thứ nằm sau cái thứ hai. Tới được lối vào xa chỉ chứng minh một tuyến đường hoạt động, không hơn.

Nguyên tắc này cũ và vẫn bị bỏ qua: vị trí mạng tự nó không lập luận cho điều gì. Bản tóm tắt kiến trúc zero-trust của NIST nói rõ điều đó, bác bỏ sự tin cậy ngầm định bắt nguồn từ việc kết nối đến từ đâu hoặc ai sở hữu mạng. Áp dụng ở đây, việc tới lối vào bên trong là điều kiện tiên quyết cho tài nguyên của nó, không bao giờ là quyền được dùng chúng.

Hãy viết ra mỗi cổng xác minh điều gì

Với từng giai đoạn, ghi lại danh tính nó kiểm tra, các đích nó cho phép và các điều kiện để có thể bỏ qua nó. Cổng bên ngoài có thể hợp pháp cho phép các dịch vụ nội bộ thông thường cộng với trình lắng nghe của cổng bên trong, và không gì khác. Cổng bên trong có thể yêu cầu một tuyên bố vai trò và chỉ cho phép các địa chỉ quản trị được nêu trong bản ghi thay đổi. Ứng dụng ở đầu xa giữ tiếng nói cuối cùng về việc vai trò đó được làm những thao tác nào, nên chuỗi chỉ thêm một cổng mà không thay thế việc cấp quyền của ứng dụng.

GateIdentity it checksDestinations it permitsHow it could be skippedWhen it is removed
Outer gatewayEmployee account plus a managed device postureGeneral internal services and the inner gateway's listenerAny alternate path to the same destinations, including a public listenerOrdinary work stops and the inner stage becomes unreachable
Inner gatewayA maintenance entitlement or role claim on that identityThe named management addresses in the change recordDirect routes from the outer domain to those addressesMaintenance access ends while general access stays as it was

Hai thiếu sót phá hỏng thiết kế một cách âm thầm. Nếu miền bên ngoài đã tới trực tiếp mọi đích nhạy cảm, thì cổng bên trong là tùy chọn chứ không bắt buộc. Nếu một trình lắng nghe công khai hoặc tuyến riêng thứ hai cung cấp cùng quyền truy cập, thì đường đi dự định chỉ là một lựa chọn trong nhiều lựa chọn. Hãy gán chủ sở hữu cho từng bộ quy tắc, và để hợp đồng của họ nêu các dịch vụ đích, danh tính nguồn được phép, DNS riêng, chuyển đổi địa chỉ và ai trả lời khi việc bàn giao thất bại. Một địa chỉ được tin cậy trên mạng bên ngoài không bao giờ được thay thế việc cấp quyền của miền bên trong.

Hãy kiểm thử các trường hợp từ chối, không phải con đường thuận lợi

Một kết nối thành công qua cả hai cổng chứng minh rất ít, vì đó là trường hợp mà mọi người đã thử khi triển khai. Những trường hợp thú vị là khi một giai đoạn đi qua còn giai đoạn kia từ chối. Ba trong số đó bao phủ phần lớn rủi ro, và mỗi trường hợp có một kết quả mong đợi có thể kiểm tra chứ không phải tranh luận.

Khi quyền truy cập chung được phê duyệt và vai trò nhạy cảm vắng mặt, công việc thường ngày phải tiếp tục trong khi đích nhạy cảm bị từ chối. Hãy phê duyệt cả hai giai đoạn và tập có thể tới được phải là các điểm cuối bảo trì được nêu trong bản ghi thay đổi, không rộng hơn. Khi quyền bị thu hồi giữa phiên, chính sách phiên đã thỏa thuận phải có hiệu lực mà không phá bỏ quyền truy cập chung không liên quan. Việc thu hồi đó kết thúc phiên hiện có ngay lập tức hay ở lần xác thực lại tiếp theo là một quyết định chính sách mà hợp đồng đã phải có. Người viết các trường hợp chấp nhận không phải là người phải diễn giải chúng trong một sự cố.

curl --fail --silent --max-time 5 https://maint.corp.internal/health || echo "denied as expected"

Hãy đếm các phụ thuộc bạn đã thêm

Mỗi giai đoạn thêm vào một thành phần có thể hỏng và một tuyến phải lồng đúng vào trong đường hầm bên ngoài. Khi hỏng một phần, đường bên ngoài vẫn hoạt động trong khi đường bên trong không tới được, nên người dùng thấy biểu tượng VPN khỏe mạnh bên cạnh một dịch vụ không bao giờ phản hồi.

Hãy kiểm tra các tuyến và quy tắc chặn khi hỏng, không chỉ trong trường hợp bình thường. Tuyến mặc định do đường hầm bên ngoài đẩy xuống có thể bắt lấy chính địa chỉ của cổng bên trong, biến giai đoạn thứ hai thành một kết nối được thiết lập rồi rơi. Ghi lại điều gì phải tiếp tục bị chặn khi không có đường hầm bên trong, vì việc vô tình quay lui quanh nó tệ hơn một lần gián đoạn sạch. Dùng cùng một dạng đầu dò trên cả hai chặng, để mỗi chặng được đo chứ không phải giả định. Hai chỉ báo trạng thái đã kết nối không chứng minh việc lồng nhau hay cách ly.

Điều cổng thứ hai không thể mua cho bạn

Hãy hỏi xem hai cổng có dùng chung thông tin xác thực, một tổ chức chứng thực hay một mặt phẳng quản trị hay không. Ở nơi chúng dùng chung, chúng cũng dùng chung những chế độ hỏng quan trọng nhất, và giai đoạn thứ hai tốn kém hơn mức độc lập mà nó dường như thêm vào. Các phiên mã hóa riêng biệt không tạo ra các kiểm soát quản trị riêng biệt.

Hãy giữ cổng bên trong chừng nào nó còn thực thi một yêu cầu bạn có thể nêu ra và kiểm thử, ví dụ một vai trò mà miền bên ngoài không bao giờ kiểm tra. Hãy bỏ nó khi công việc duy nhất của nó là xác thực lại cùng một danh tính với cùng các đích. Dù thế nào, hãy ghi lại yêu cầu, chủ sở hữu và hành vi khi hỏng cùng nhau, để lần xem xét tiếp theo tranh luận về yêu cầu chứ không phải về sơ đồ.

Bài viết liên quan