Giữ mọi tài khoản có thể đăng nhập bình thường, nhưng chỉ cho phép một nhóm dùng VPN. PAM có thể diễn đạt sự khác biệt đó mà không cần kho mật khẩu thứ hai, và plugin OpenVPN có thể được trỏ đến một dịch vụ chỉ chứa các kiểm tra bạn định dùng. Mẹo là xây dựng dịch vụ đó mà không vô tình thừa hưởng một ngăn xếp toàn hệ thống.

Phần hướng dẫn ở đây bắt đầu từ tên dịch vụ của plugin, xây dựng một chính sách, rồi kiểm tra ba kết quả quan trọng: một thành viên, một người ngoài có mật khẩu hợp lệ và một thông tin xác thực sai.

Vì sao cần một dịch vụ PAM riêng

Plugin auth-pam nhận tên dịch vụ làm đối số. Tên đó chọn một tệp dưới /etc/pam.d, và ngăn xếp trong tệp đó là thứ chạy trong một lần đăng nhập VPN. Nếu bạn truyền cùng tên mà một lần đăng nhập toàn hệ thống dùng, bạn thừa hưởng mọi quyết định trong ngăn xếp đó, kể cả những quyết định được thêm sau này vì lý do không liên quan.

Thay vào đó hãy tạo một dịch vụ riêng. Bắt đầu từ một ngăn xếp đang hoạt động đã xác thực với backend dự định, chẳng hạn tệp mật khẩu cục bộ, SSSD hoặc dịch vụ thư mục, rồi thêm quy tắc đủ điều kiện. Sao chép hai dòng vào một tệp trống là lỗi phổ biến: hết hạn mật khẩu, khóa tài khoản và các kiểm tra khác có thể nằm trong ngăn xếp bạn không sao chép.

Tách riêng dịch vụ cũng giới hạn phạm vi thiệt hại. Một quy tắc chỉ dành cho VPN trong ngăn xếp dùng chung có thể từ chối quyền truy cập SSH hoặc console cho mọi người, biến một thay đổi quyền truy cập thành sự cố.

Viết quy tắc nhóm

Việc kiểm tra đủ điều kiện thuộc giai đoạn tài khoản, sau khi thông tin xác thực đã được xác minh. Một quy tắc như account required pam_succeed_if.so user ingroup vpnusers chỉ cho phép xử lý tiếp tục khi người dùng đã xác thực là thành viên của nhóm đó.

Dòng đó là một mảnh, không phải dịch vụ hoàn chỉnh. Tích hợp nó ở nơi mọi đường dẫn được chấp nhận đều đi tới, và kiểm tra các cờ điều khiển xung quanh nó. Một điều khiển sufficient hoặc nhảy sớm hơn trong ngăn xếp có thể kết thúc xử lý trước khi quy tắc của bạn chạy, biến hạn chế thành một đề xuất.

Đừng thêm use_uid theo thói quen. Không có nó, mô-đun đánh giá người dùng đang được xác thực; có nó, mô-đun đánh giá tài khoản mà tiến trình OpenVPN chạy dưới, thường là root hoặc một tài khoản dịch vụ và do đó không phải người đang đăng nhập.

Tư cách thành viên nhóm đến từ việc phân giải danh tính của hệ thống, không phải từ một cái tên bạn nhận ra. Với người dùng thư mục, hãy xác nhận rằng cùng backend đó trả lời các truy vấn nhóm cho người dùng ấy, vì một nhóm cục bộ với tên quen thuộc là một đối tượng khác với nhóm thư mục cùng tên.

Bẫy thứ tự và danh tính

Đặt quy tắc nhóm sau ngăn xếp xác thực và sau mọi kiểm tra vẫn phải áp dụng, nhưng trước hoặc bên cạnh các kiểm tra tài khoản bạn giữ lại. PAM đánh giá các mô-đun theo thứ tự tệp, và giá trị điều khiển trên mỗi dòng quyết định liệu một lỗi có phải là cuối cùng.

Coi chừng các ngăn xếp trùng lặp. Một mẫu phổ biến là một include đã chứa quy tắc tài khoản, tiếp theo là quy tắc nhóm của riêng bạn, tạo ra hai quyết định ở nơi bạn mong đợi một. Đọc tệp được bao gồm, không chỉ tệp bạn đã sửa. Một cách nhanh để thấy thứ tự thực tế là đọc tệp từ trên xuống dưới và ghi lại từng giá trị điều khiển.

Giữ nguyên các yêu cầu tiếp nhận khác. Mật khẩu đúng không thay thế kiểm tra chứng chỉ, yếu tố thứ hai hoặc ủy quyền sau khi kết nối, và chính sách này không thay thế bất kỳ điều nào trong số đó. Nó chỉ quyết định tài khoản có đủ điều kiện để được xem xét truy cập VPN hay không.

Kiểm tra thành viên, người ngoài và mật khẩu sai

Kiểm tra ba trường hợp trước khi coi chính sách là xong. Một thành viên kết nối thành công. Một tài khoản hợp lệ ngoài nhóm xác thực được mật khẩu nhưng bị từ chối truy cập VPN. Mật khẩu sai cho một trong hai tài khoản bị từ chối ở giai đoạn xác thực, không phải bởi quy tắc nhóm.

Xem lỗi mà máy khách nhìn thấy và nhật ký máy chủ cùng nhau, vì cả hai lỗi có thể trông giống nhau với người đang kết nối. Sự phân biệt quan trọng cho hỗ trợ: người ngoài có mật khẩu đúng cần thay đổi nhóm, còn mật khẩu sai cần đặt lại thông tin xác thực.

Giữ một phiên thứ hai mở trong khi sửa PAM, và kiểm tra cả đăng nhập SSH thông thường sau thay đổi. Mục đích của dịch vụ riêng là đăng nhập hệ thống phải không bị ảnh hưởng, và cách duy nhất để biết là kiểm tra.

Nếu có gì hỏng, khôi phục tệp dịch vụ trước đó từ một bản sao. Quy tắc bạn muốn rất dễ nói: tư cách thành viên khiến một tài khoản đủ điều kiện truy cập VPN, và mọi kiểm tra bắt buộc khác vẫn áp dụng.

Bài viết liên quan