Trước hết, RedHat (và các biến thể) có một bản vá được hỗ trợ cho OpenSSH có thêm các tùy chọn AuthorizedKeysCommand
và AuthorizedKeysCommandRunAs
. Bản vá đã được hợp nhất ngược dòng trong openssh 6.2. Để trích dẫn từ trang người đàn ông :
AuthorizedKeysCommand
Chỉ định chương trình được sử dụng để tra cứu các khóa công khai của người dùng. Chương trình sẽ được gọi với đối số đầu tiên là tên của người dùng được ủy quyền và sẽ tạo ra các dòng AuthorizedKeys đầu ra tiêu chuẩn (xem AUTHORIZED_KEYS trong sshd (8)). Theo mặc định (hoặc khi được đặt thành chuỗi trống), không có AuthorizedKeysCommand chạy. Nếu AuthorizedKeysCommand không ủy quyền thành công cho người dùng, ủy quyền sẽ thuộc về AuthorizedKeysFile. Lưu ý rằng tùy chọn này chỉ có hiệu lực khi bật PubkeyAuthentication.
AuthorizedKeysCommandRunAs
Chỉ định người dùng trong tài khoản mà AuthorizedKeysCommand đang chạy. Chuỗi rỗng (giá trị mặc định) có nghĩa là người dùng được ủy quyền được sử dụng.
Trong các thử nghiệm của tôi tối nay, tôi thấy rằng ngoài hộp, điều này không hoạt động do các chính sách Selinux mặc định. Bạn có thể khắc phục điều này bằng cách tắt thực thi SELinux với setenforce 0
. Vì việc chuyển sang Selinux có lẽ là một ý tưởng tồi , thay vào đó bạn có thể tạo chính sách chính xác. Trong trường hợp của tôi, điều đó đơn giản như cố gắng đăng nhập với AuthorizedKeysCommand
tùy chọn được thiết lập /etc/ssh/sshd_config
và sau đó sử dụng audit2allow -a -M local && semodule -i local.pp
. Điều này về cơ bản xem qua nhật ký kiểm toán và tìm thấy những thứ bị ngăn chặn và tạo ra ngoại lệ cho chúng. Nếu bạn có thể có những thứ khác trong đó có thể được đưa vào danh sách trắng, có lẽ bạn nên tìm hiểu thêm về audit2allow
để đảm bảo bạn có được các chính sách mới vừa phải.