Một VPN không đáng tin là ba ranh giới riêng biệt, không phải một
Các đồng đẳng từ xa, nhà vận hành trên đường đi và ứng dụng khách trên máy của bạn là ba mối đe dọa khác nhau. Một quy tắc tường lửa chỉ trả lời mối đe dọa thứ nhất.
«Tôi không tin VPN này» thường là ba phát biểu mặc chung một câu. Các đồng đẳng từ xa trên mạng đó có thể chạm tới các dịch vụ trên máy của bạn, nhà vận hành điều hành đường hầm có thể quan sát lưu lượng đi qua nó, và phần mềm khách bạn đã cài có thể thay đổi chính sách mạng của máy bạn. Niềm tin đáng được sửa là một quy tắc tường lửa, một máy ảo hay một lựa chọn hệ điều hành cẩn thận trả lời cả ba. Mỗi biện pháp chỉ trả lời đúng một trong số đó.
Huyền thoại: một biện pháp kiểm soát bao trùm toàn bộ rủi ro
Giả định phổ biến là việc gia nhập một mạng không đáng tin là một quyết định với một biện pháp giảm thiểu. Người ta chọn biện pháp kiểm soát họ đã tin, áp dụng nó và coi rủi ro đã được xử lý: tường lửa đang bật, không gian làm việc dùng một lần, ứng dụng khách đến từ nhà cung cấp có uy tín.
Các biện pháp kiểm soát đó không chồng lên nhau như giả định ngụ ý. Tường lửa trên máy giới hạn những gì đồng đẳng từ xa chạm tới được, và nó không làm gì với nhà vận hành kết thúc TLS của bạn. Máy ảo tách không gian làm việc khỏi các tệp trên máy của bạn, và nó không làm gì với thành phần khách được phép cấu hình lại ngăn xếp mạng bên dưới cả hai. Gọi tên ranh giới mà mỗi biện pháp thực sự tạo ra chính là toàn bộ bài tập.
Tách chúng ra cũng cho bạn biết bạn đã chọn chấp nhận rủi ro nào. Hầu hết các quyết định thực tế giảm nhẹ một ranh giới và chịu đựng một ranh giới khác, điều đó ổn miễn là hồ sơ thay đổi nói rõ cái nào là cái nào.
Đồng đẳng từ xa thực sự chạm tới được gì
Bắt đầu với các dịch vụ đang lắng nghe. Giao diện đường hầm được coi là đáng tin rộng rãi vì các gói của nó đến đã mã hóa là sai lầm thường gặp, và nó biến mọi trình lắng nghe cục bộ thành mục tiêu tiềm năng cho bất kỳ ai khác trên mạng đó. Mã hóa bảo vệ sợi dây giữa hai đầu; nó không nói gì về ý định của đồng đẳng ở đầu bên kia.
ss -tulpn sudo nft list ruleset ip -br addr
Gắn dịch vụ vào địa chỉ chúng cần thay vì vào mọi giao diện, và chỉ cho phép những thao tác mà nhiệm vụ đã được phê duyệt yêu cầu. Giữ chuyển tiếp, bắc cầu và proxy ứng dụng một cách tường minh, vì hai kết nối mạng tự chúng không tạo ra đường trung chuyển, nhưng một quy tắc proxy thì chắc chắn có thể.
Một không gian làm việc dùng một lần đã được phê duyệt làm giảm những gì mạng từ xa chạm tới được, nhưng chỉ khi cấu hình chia sẻ của nó khớp với tuyên bố. Thư mục chia sẻ, tích hợp bảng tạm, tác nhân thông tin xác thực và kênh quản lý đều vượt qua ranh giới mà không gian làm việc lẽ ra phải tạo ra. Nhãn của không gian làm việc không chứng minh gì về việc cái nào trong số đó đang mở.
Kiến trúc không tin cậy của NIST nêu nguyên tắc đằng sau tất cả điều này: chỉ vị trí mạng không ban cho sự tin cậy ngầm định. Xác thực tài nguyên vẫn còn việc phải làm sau khi đường hầm được chấp nhận, và câu hỏi ai khác chia sẻ mạng đó cũng vậy.
Nhà vận hành trên đường đi thấy được gì
Một VPN di chuyển lưu lượng của bạn đến một nơi khác trên đường đi; nó không thêm mã hóa ứng dụng. Nếu nhà cung cấp kết thúc TLS của bạn, họ có thể đọc những gì trình duyệt của bạn lẽ ra đã bảo vệ, và không quy tắc tường lửa cục bộ nào thay đổi điều đó.
Giữ việc xác thực chứng chỉ thông thường cho đích thực sự và hiểu đường đi của trình phân giải và siêu dữ liệu, vì một truy vấn DNS có thể tiết lộ nhiều hơn tải trọng đứng trước nó. Chỉ siêu dữ liệu, nghĩa là bạn đã liên hệ địa chỉ nào và khi nào, thường trả lời câu hỏi của nhà vận hành mà không cần đọc nội dung. Đó là lý do «lưu lượng được mã hóa» và «lưu lượng là riêng tư» là hai tuyên bố khác nhau.
Nếu khả năng hiển thị đó không thể chấp nhận cho nhiệm vụ, câu trả lời là một kiến trúc đã được phê duyệt khác chứ không phải lọc cục bộ nhiều hơn. Lọc cục bộ không thể loại bỏ một quan sát viên khỏi con đường mà nó vẫn còn ngồi trên đó.
Ứng dụng khách cục bộ được phép thay đổi gì
Đây là ranh giới mà người ta bỏ qua, và nó là ranh giới khiến hai cái kia trở nên vô nghĩa. Trên Linux, CAP_NET_ADMIN bao gồm cấu hình giao diện, quản trị tường lửa và thay đổi tuyến trong ngữ cảnh mạng của nó. Phần mềm có năng lực đó có thể viết lại chính sách bạn vừa viết.
getcap /usr/sbin/openvpn systemd-analyze security vpn-client.service ip netns list
Không gian tên mạng là ranh giới thực cho trạng thái mạng và là ranh giới kém cho mọi thứ khác: nó không cô lập hệ thống tệp hay kho thông tin xác thực. Hãy coi nó là một lớp chứ không phải vật chứa cho toàn bộ vấn đề.
Lấy ứng dụng khách và cấu hình của nó từ một nguồn được duy trì, xem lại quyền hạn nó yêu cầu, và giữ các thành phần đặc quyền dưới sự kiểm soát của quản trị viên. Một máy ảo có thể là một phần của ranh giới đánh giá đủ tiêu chuẩn mà không trở thành sự cho phép chạy một trình cài đặt không giải thích bên cạnh thông tin xác thực có giá trị. Trình cài đặt chạy với bất kỳ quyền hạn nào bạn cấp, và quyền hạn đó là ranh giới.
Viết ra bạn đã chấp nhận ranh giới nào
Kết thúc bằng một câu nêu bốn điều: mã cục bộ đáng tin, quyền truy cập từ xa được phép, dữ liệu ứng dụng được bảo vệ và mối quan hệ với nhà vận hành còn lại. Câu đó đáng giá hơn một tuyên bố chung rằng một VM, một hệ điều hành hay một sản phẩm diệt virus đã làm cho một mạng thù địch trở nên an toàn.
Sau đó xác nhận thao tác hẹp hoạt động và việc từ chối được yêu cầu vẫn giữ, kể cả sau khi đường hầm sụp. Một ranh giới chỉ tồn tại khi đường hầm dựng lên không phải là ranh giới bạn đã ghi lại.
Không thử nghiệm nào chứng minh mọi lỗ hổng đều vắng mặt, và một bài đánh giá tuyên bố ngược lại là nói quá. Kết quả trung thực nêu tên rủi ro còn lại và người đã chấp nhận nó.