CA dùng chung, cửa riêng: một dịch vụ cho mỗi tệp chấp nhận
Chứng chỉ vượt qua kiểm tra của tổ chức dùng chung không phải vé vào mọi dịch vụ. Việc chấp nhận phải nằm trong tệp riêng của từng dịch vụ mà daemon yêu cầu.
Một chứng chỉ được xác thực với tổ chức dùng chung đã vượt qua bài kiểm tra tin cậy, không phải bài kiểm tra tư cách thành viên. Hai quyết định này thường bị gộp lại vì cả hai đều xảy ra lúc kết nối, và sự gộp đó vẫn vô hình cho đến khi một người không nên có mặt trong dịch vụ được chấp nhận vào đó. Cách khắc phục không phải tổ chức thứ hai; mà là quyết định thứ hai, được đưa ra cho từng dịch vụ và ghi lại nơi daemon đọc nó. Hãy tách hai thứ đó ra và phần lớn sự nhầm lẫn trong lĩnh vực này biến mất.
Một chuỗi tin cậy không nói gì về tư cách thành viên của dịch vụ
Hai dịch vụ có thể chấp nhận cùng một hệ thống cấp phát và vẫn có những nhóm người dùng khác nhau. Một máy tính xách tay thuộc về dịch vụ thứ nhất và không được chạm tới dịch vụ thứ hai, trong khi các máy khách khác của cùng hệ thống đó thực sự thuộc về nơi ấy. Việc bỏ tổ chức khỏi dịch vụ đó sẽ khóa tất cả những ai đang dùng nó một cách hợp pháp, nên công việc là chấp nhận, không phải tin cậy.
Sẽ dễ hình dung hơn nếu nghĩ tới hai ổ khóa trên một cánh cửa. Chứng chỉ mở ổ khóa ngoài, và quyết định theo từng dịch vụ mở ổ khóa trong; không cái nào thay thế cái kia. Một dịch vụ chỉ có ổ khóa ngoài thì hoàn toàn không thực thi tư cách thành viên, nó chỉ xác thực danh tính. Hãy ghi cả hai quyết định trước khi thay đổi bất cứ điều gì, vì một chính sách chỉ tồn tại dưới dạng một kết nối đang hoạt động thì không thể kiểm toán. Những gì tiếp theo liên quan tới ổ khóa trong.
Biến các ghi đè tùy chọn thành cổng chấp nhận
Thư mục cấu hình máy khách thường là một tiện ích: các tệp trong đó ghi đè cài đặt của những máy khách mà chúng nêu tên, và một máy khách không có tệp chỉ đơn giản chạy với giá trị mặc định của máy chủ. Một chỉ thị biến tiện ích đó thành một cổng, để rằng thiếu tệp nghĩa là kết nối bị từ chối.
client-config-dir /etc/openvpn/service-a/clients
ccd-exclusive
Bản cộng đồng của OpenVPN 2.6 ccd-exclusive ghi lại trên trang hướng dẫn của nó đúng điều kiện này, và việc tra cứu tệp được nêu tên phụ thuộc vào danh tính hiệu lực của máy khách. Các bản dựng khác và máy chủ do sản phẩm quản lý có thể khác, nên hãy xác nhận phiên bản đã cài trước khi dựa vào cùng ngữ nghĩa đó ở nơi khác.
Coi đường dẫn ở trên là ví dụ và kiểm tra bố cục thực tế đã triển khai thay vì tạo một thư mục do hướng dẫn bịa ra. Hãy để nguyên các kiểm tra chứng chỉ, kiểm tra danh tính máy chủ và xác thực tài khoản như chúng vốn có, vì đoạn này thêm một điều kiện và không bỏ đi gì. Chuẩn bị thay đổi trước khi đưa vào sản xuất, vì một lời từ chối xuất hiện ở điểm sai trông giống lỗi chứng chỉ và đẩy cuộc điều tra về phía tổ chức. Sau đó xác nhận rằng dòng nhật ký cho máy khách bị từ chối nêu tên tệp cấu hình còn thiếu chứ không phải chuỗi tin cậy.
Một thư mục cho mỗi dịch vụ, không phải một danh sách dùng chung
Tư cách thành viên thuộc về dịch vụ thực thi nó, nên mỗi dịch vụ giữ thư mục riêng và các tệp riêng. Trỏ hai dịch vụ vào một danh sách khiến chúng chia sẻ tư cách thành viên bất kể có ai đó định làm vậy hay không, và thay đổi phát sinh rất khó truy ngược về một quyết định. Tổ chức dùng chung có thể vẫn dùng chung; các tệp chấp nhận thì không. Giữ chúng tách biệt cũng có nghĩa là một sai sót trong dịch vụ này không thể âm thầm mở rộng dịch vụ khác.
Một mục DEFAULT là trường hợp đánh lừa mọi người. Nó cung cấp cài đặt dự phòng khi không tìm thấy tệp được nêu tên, nhưng nó không phải tệp được nêu tên mà cổng yêu cầu, nên tự nó không thể chấp nhận một máy khách. Hãy thử một máy khách hoàn toàn không có mục nào và xác nhận bị từ chối; nếu máy khách đó được chấp nhận thì cài đặt dự phòng đang được áp dụng và ccd-exclusive không có hiệu lực trong phiên bản đó.
Danh tính hiệu lực quyết định đọc tệp nào
Việc tra cứu dùng danh tính mà máy khách thực sự đã xác thực, thường là tên chung của chứng chỉ. Khi máy chủ cũng xác minh tên người dùng và mật khẩu rồi ánh xạ tên đó vào tên chung, tệp phải khớp với tên người dùng đã xác thực thay vào đó. Sự không khớp để lại một thư mục đầy những tên tệp có vẻ hợp lý mà không bao giờ được chọn.
Đọc là nửa còn lại. Daemon thường từ bỏ đặc quyền sau khi khởi động, nên tài khoản bị giảm quyền cần quyền đọc thư mục và mọi mục trong đó. Máy khách không được phép tạo mục của riêng chúng qua bất kỳ đường dẫn nào có thể ghi, vì việc tự phục vụ chấp nhận làm vô hiệu hóa hoàn toàn cơ chế. Hãy kiểm tra quyền gắn kết và chia sẻ chứ không chỉ chế độ tệp, vì một thư mục trông đóng với tài khoản này có thể mở với tài khoản khác. Sau đó xác nhận tài khoản nào mà tiến trình đang chạy thực sự dùng, chứ không phải tài khoản mà tệp unit nhắc tới. Hai thứ đó chỉ giống nhau khi không có gì khác thay đổi chúng.
Quan sát riêng biệt việc từ chối, chấp nhận và thu hồi
Thử một danh tính thuộc về dịch vụ và xác nhận nó kết nối được. Thử một chứng chỉ hợp lệ không có mục nào và xác nhận nó bị từ chối. Thử một danh tính được chấp nhận ở dịch vụ kia và xác nhận nó không được chấp nhận ở đây. Ghi lại phiên bản dịch vụ và danh tính hiệu lực bên cạnh mỗi kết quả, vì một kết quả không có ngữ cảnh đó thì không ai khác tái tạo được.
Việc rút lại là một thao tác tách biệt với việc thu hồi. Sửa một tệp chấp nhận sẽ gỡ bỏ quyền của một dịch vụ trong khi danh tính vẫn hợp lệ ở mọi nơi khác, còn một khóa bị xâm phạm cần phản ứng thu hồi của tổ chức. Hãy quyết định trước điều gì xảy ra với các phiên đã thiết lập, vì cả việc sửa thư mục lẫn danh sách thu hồi đều không tự kết thúc chúng.
Chấp nhận cũng chỉ là cổng đầu tiên. Việc tham gia một dịch vụ không nói gì về các mạng con, cơ sở dữ liệu hay giao diện quản trị phía sau, và chính sách tài nguyên đó phải được viết và kiểm thử riêng.