Khóa chứng minh cổng kết nối của bạn chính là nó và thông tin đăng nhập cho biết một người được phép tham gia đều là bí mật, và sự giống nhau kết thúc ở đó. Một cái nhận diện một dịch vụ trước mọi máy khách; cái kia nhận diện một người dùng trước dịch vụ đó. Trộn lẫn hai thứ sẽ tiết kiệm một bước khi thiết lập và tốn cả một buổi chiều khi có sự cố, vì cách khôi phục của mỗi loại không phải cùng một thao tác. Việc tách riêng thì nhàm chán lúc thiết lập và đáng nhớ khi bị bỏ qua.

Hai bí mật, hai chủ sở hữu khác nhau

Cổng kết nối giữ một khóa riêng hoặc chứng chỉ mà công việc duy nhất của nó là chứng minh danh tính trong lúc bắt tay. Máy khách cần phần công khai tương ứng để xác minh nó, và chúng không bao giờ cần nửa riêng tư. Chính sự bất đối xứng đó khiến việc xác thực máy chủ trở nên khả thi mà không trao cho mọi người dùng khả năng mạo danh máy chủ.

Vật liệu của người dùng đi theo hướng ngược lại. Khóa riêng của máy khách, chứng chỉ máy khách hoặc mật khẩu chứng tỏ người hoặc thiết bị cụ thể này đã được cấp quyền truy cập. Nó được kỳ vọng là sẽ được phân phát, sao chép giữa các thiết bị và cuối cùng bị thu hồi.

WireGuard khiến việc tách riêng trở nên rõ ràng vì mọi bên tham gia đều có một cặp khóa: khóa riêng của máy chủ ở lại trên máy chủ, còn tệp cấu hình bạn đưa cho người dùng chứa khóa riêng của chính họ cùng khóa công khai của máy chủ. Một hồ sơ chứa khóa riêng của máy chủ không phải là lối tắt, mà là một sự thỏa hiệp đang chờ được chia sẻ tệp.

Ba câu hỏi quyết định việc tách riêng

Hãy hỏi ai phải có khả năng đọc bí mật, việc lộ nó sẽ cho kẻ tấn công làm được gì, và cách khắc phục là một lần thu hồi hay phải xây dựng lại dịch vụ.

Nếu người dùng đọc được nó và nó chứng minh danh tính của cổng kết nối, câu trả lời cho câu hỏi thứ hai là kẻ tấn công có thể mạo danh máy chủ của bạn trước mọi máy khách — kết cục tệ nhất, vì máy khách được thiết kế để tin vào danh tính đó. Nếu nó chỉ chứng minh một người dùng, việc lộ chỉ trao quyền truy cập của người đó tới một đối tác, và thu hồi là thao tác thường ngày. Nếu đó là khóa của tổ chức phát hành chứng chỉ, việc lộ còn tệ hơn cả hai, vì kẻ tấn công có thể tạo ra những danh tính mà mọi điểm cuối đều tin.

Ba câu trả lời đó tạo ra quy tắc lưu trữ: khóa CA sống ngoại tuyến hoặc trong két, khóa của cổng kết nối sống trên cổng kết nối, và khóa người dùng sống cùng người dùng. Bất kỳ cách bố trí nào đặt cả ba vào một thư mục cho tiện đã biến một quyết định thành một tai nạn.

Điều máy khách thực sự cần

Máy khách cần chứng chỉ công khai hoặc khóa đối tác công khai, vật liệu hoặc dấu vân tay CA mà nó phải tin, khóa riêng của chính nó và thông tin điểm cuối. Danh sách đó không chứa gì thuộc danh tính riêng của cổng kết nối.

Tài liệu là nơi rò rỉ điều này. Một hướng dẫn bảo sao chép thư mục máy chủ rồi xóa những gì bạn không cần đã dạy mô hình sai, vì tệp còn lại sau bước xóa hiếm khi được ai kiểm tra.

Thu hồi một người dùng mà không chạm vào cổng kết nối

Vì danh tính người dùng được cấp riêng, chúng có thể được rút lại riêng. Một triển khai dựa trên chứng chỉ thu hồi chứng chỉ máy khách và công bố danh sách thu hồi đã cập nhật; một triển khai WireGuard xóa mục đối tác khỏi cấu hình máy chủ. Không thao tác nào trong số đó thay đổi khóa riêng của cổng kết nối.

Hãy giữ hồ sơ cấp phát, nếu không bạn sẽ không biết danh tính nào cần rút lại. Một bảng tính là đủ, miễn là nó ghi tên người, thiết bị, số sê-ri hoặc khóa công khai và ngày tháng, và miễn là có ai đó sở hữu nó sau khi người tạo ra nó rời đi.

Các lệnh dưới đây kiểm tra chứng chỉ máy khách rồi thu hồi nó qua một tổ chức kiểu OpenSSL, đúng là quy trình mà easy-rsa bọc lại:

openssl x509 -in client.crt -noout -subject -serial
openssl ca -config openssl.cnf -revoke client.crt
openssl ca -config openssl.cnf -gencrl -out crl.pem

Hãy công bố danh sách mới ở mọi nơi máy khách kiểm tra nó, nếu không việc thu hồi chỉ là một ghi chú trong tệp không thay đổi gì. Nếu cổng kết nối của bạn chấp nhận chứng chỉ máy khách mà không tra danh sách thu hồi, hãy nói thẳng điều đó thay vì ngụ ý rằng việc thu hồi có tác dụng.

Giữ bản sao lưu tách biệt như chính các bí mật

Một kho lưu trữ để xây dựng lại đương nhiên chứa khóa của cổng kết nối và vật liệu CA, vì không có chúng thì việc khôi phục không thể tái tạo dịch vụ. Gói thiết lập cho máy khách thì không được chứa, và hai thứ đó không được lưu cùng nhau. Hãy dán nhãn mỗi kho lưu trữ theo người được phép giữ nó, không theo ngày nó được tạo. Nhãn đó là thứ một quản trị viên mệt mỏi đọc lúc hai giờ sáng.

Sự phân biệt đó cũng quyết định ai được lấy từng thứ. Quản trị cổng kết nối, cấp danh tính người dùng và đọc bản sao lưu là ba quyền khác nhau, và người cần một quyền không đương nhiên cần các quyền còn lại. Hãy ghi các quyền đó ra, rồi đối chiếu với những gì hệ thống lưu trữ của bạn thực sự cho phép, vì sự kế thừa thư mục âm thầm cấp nhiều hơn chính sách dự định.

Bài viết liên quan