Có thể yêu cầu OpenSSH đăng nhập khóa công khai đã được sử dụng trong xác thực không?


27

Tôi có một hệ thống sản xuất nơi một số người khác nhau được phép đăng nhập vào một tài khoản - tài khoản dành cho ứng dụng chứ không phải cho người đó vì chúng tôi không có tài khoản cá nhân trên các máy chủ sản xuất.

Đối với mục đích kiểm toán, tôi muốn có thể cho biết ai đã đăng nhập vào thời gian nào và khi chúng tôi sử dụng các khóa SSH để đăng nhập thì có vẻ hợp lý để theo dõi điều đó (vì không có định danh nào khác để theo dõi).

Khi SSH xác thực người dùng, nó sẽ ghi tên người dùng vào nhật ký bảo mật của hệ thống, nhưng nó không ghi nhật ký khóa công khai được ủy quyền nào được sử dụng trong nhật ký. Có thể yêu cầu OpenSSH báo cáo khóa công khai nào đã được sử dụng, hoặc có thể chỉ là nhận xét liên quan đến khóa đó?

Hệ điều hành đang được sử dụng là CentOS 5.6, nhưng tôi cũng muốn nghe nếu có thể trên các hệ điều hành khác.

Câu trả lời:


33

Nếu bạn nâng LogLevel thành ĐỘNG TỪ trong / etc / sshd / sshd_config, nó sẽ ghi lại dấu vân tay của khóa chung được sử dụng để xác thực người dùng.

LogLevel VERBOSE

sau đó bạn nhận được tin nhắn như thế này

Jul 19 11:23:13 centos sshd[13431]: Connection from 192.168.1.104 port 63529
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13432]: Postponed publickey for user from 192.168.1.104 port 63529 ssh2
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13431]: Accepted publickey for user from 192.168.1.104 port 63529 ssh2

Bạn có thể dùng

 ssh-keygen -lf /path/to/public_key_file

để lấy dấu vân tay của một khóa công khai cụ thể.


2
Cảm ơn! Tôi cần xác nhận dấu vân tay của khóa đối với authorized_keystệp, vì vậy tôi đã tạo tập lệnh nhỏ này để in dấu vân tay của các khóa được ủy quyền:(p="$(mktemp)";cat ~/.ssh/authorized_keys|while IFS="$(printf "\n")" read key; do echo $key > $p; ssh-keygen -lf $p; done; rm -f $p)
Guss

Tôi nhận thấy rằng SSH hiện ghi nhật ký khóa hai lần cho mỗi lần đăng nhập - bạn có biết tại sao và / hoặc làm thế nào để lấy nó để đăng nhập một lần không?
Guss

Tại sao, đó là một mức độ chi tiết tôi không quen thuộc. Bạn có thể dừng nó, có lẽ không phải là không chọc vào mã nguồn.
user9517 hỗ trợ GoFundMonica

2
Chủ đề này có vẻ có liên quan. Nó tìm thấy khóa khớp hai lần: một lần để xác định xem khóa có được chấp nhận hay không, sau đó lần thứ hai để kiểm tra chữ ký mà khách hàng cung cấp.
mpontillo

3

Nếu người của bạn đang sử dụng ssh-agent, bạn có thể đặt cái này vào .bashrc:

SSH_KEY_NAME=$(ssh-add -L | cut -d' ' -f 3 || 'unknown')
if [[ ! $SSH_KEY_NAME ]]; then SSH_KEY_NAME="no agent"; fi
echo `/bin/date` $SSH_KEY_NAME >> ~/.login.log

Thật không may, thật không may, một trong những lý do tôi muốn đăng nhập này là tôi đang sử dụng các lệnh ủy quyền cho người dùng mà tôi muốn đăng nhập và họ thường không nhận được bash shell.
Guss

0

Hãy thử chơi xung quanh với LogLeveltham số trong sshd_config. Để biết chi tiết, tham khảo man sshd_config


0

3
Chào mừng bạn đến với Lỗi Máy chủ! Nói chung, chúng tôi thích câu trả lời trên trang web để có thể tự đứng vững - Liên kết rất tuyệt, nhưng nếu liên kết đó bị hỏng, câu trả lời sẽ có đủ thông tin để vẫn hữu ích. Vui lòng xem xét chỉnh sửa câu trả lời của bạn để bao gồm chi tiết hơn. Xem Câu hỏi thường gặp để biết thêm.
slm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.