Làm cách nào để xác định xem khóa SSH của ai đó có chứa cụm mật khẩu trống không?


44

Một số hệ thống Linux & FreeBSD của tôi có hàng tá người dùng. Nhân viên sẽ sử dụng các nút "ssh gateway" này để SSH vào các máy chủ nội bộ khác.

Chúng tôi lo ngại rằng một số người này sử dụng khóa SSH riêng không được mã hóa (Khóa không có cụm mật khẩu . Điều này thật tệ , bởi vì nếu một kẻ bẻ khóa đã có quyền truy cập vào tài khoản của họ trên máy này, họ có thể đánh cắp khóa riêng và hiện có quyền truy cập cho bất kỳ máy nào sử dụng cùng khóa này. Vì lý do bảo mật, chúng tôi yêu cầu tất cả người dùng mã hóa các khóa SSH riêng tư của họ bằng cụm mật khẩu.

Làm cách nào để biết khóa riêng không được mã hóa (ví dụ: Không chứa cụm mật khẩu)? Có một phương pháp khác để thực hiện việc này trên khóa bọc thép ASCII so với khóa không bọc thép ASCII không?

Cập nhật:

Để làm rõ, giả sử tôi có quyền truy cập siêu người dùng trên máy và tôi có thể đọc các khóa riêng của mọi người.


2
càu nhàu ssh-agent càu nhàu Không nên có bất kỳ khóa riêng nào trên cổng.
derobert

Một vài lưu ý về phạm vi: - Người dùng thường có cụm mật khẩu kém . - Người dùng có thể thay đổi cụm mật khẩu. - Người dùng có thể lưu trữ chìa khóa của họ ở nhiều nơi. - Người dùng có khả năng sử dụng tác nhân ssh để họ có thể mở khóa một lần, nói trên máy tính xách tay của họ.
Ben Hyde

Câu trả lời:


59

Chà, khóa riêng OpenSSH với cụm mật khẩu trống thực sự không được mã hóa.

Mã hóa khóa riêng được khai báo như vậy trong file private key. Ví dụ:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,7BD2F97F977F71FC

BT8CqbQa7nUrtrmMfK2okQLtspAsZJu0ql5LFMnLdTvTj5Sgow7rlGmee5wVuqCI
/clilpIuXtVDH4picQlMcR+pV5Qjkx7BztMscx4RCmcvuWhGeANYgPnav97Tn/zp
...
-----END RSA PRIVATE KEY-----

Vì vậy, một cái gì đó như

# grep -L ENCRYPTED /home/*/.ssh/id_[rd]sa

nên làm thủ thuật.


3
@ jmanning2k: Tôi vừa tạo khóa riêng RSA không có cụm mật khẩu và nó không chứa chuỗi 'Mã hóa: không'.
Stefan Lasiewski

@ jmanning2k: -Lcờ chỉ liệt kê các tên tệp không khớp với mẫu. Vì vậy, câu trả lời này là chính xác.
bahamat

Tôi đứng sửa, bình luận gỡ cho rõ. Đối với bản ghi, tôi có một vài tệp khóa riêng tư Putty được sao chép, có ghi 'Mã hóa: không'.
jmanning2k

2
hoặc chuỗi OPENSSH: xem tedunangst.com/flak/post/ Kẻ
Jack Wasey

10

Tôi đã xem xét tất cả về điều này và không bao giờ tìm thấy một câu trả lời thỏa mãn, nhưng tôi đã xoay sở để xây dựng một câu trả lời, vì vậy ...

Lưu ý rằng điều này sẽ cập nhật tệp nếu nó hoạt động, vì vậy nếu bạn đang cố gắng không bị người dùng có khóa đang kiểm tra, bạn có thể muốn sao chép khóa trước. OTOH, vì bạn vừa bắt người dùng của mình bằng khóa không mật khẩu, có thể bạn không quan tâm nếu họ nhận thấy. :CƯỜI MỞ MIỆNG

$ ssh-keygen -p -P '' -N '' -f ~/.ssh/KEYTEST
Key has comment '/home/rlpowell/.ssh/KEYTEST'
Your identification has been saved with the new passphrase.
$ echo $?
0

$ ssh-keygen -p -P '' -N '' -f ~/.ssh/KEYTEST
Bad passphrase.
$ echo $?
1

3
Tại sao không -N ''thay vào đó để cụm mật khẩu luôn được giữ nguyên?
đối xử tốt với các mod của bạn vào

facepalm Thật hoàn hảo, cảm ơn bạn rất nhiều.
rlpowell

+1 vì giải pháp này thậm chí hoạt động với định dạng khóa riêng mới của SSH.
Sebastian Krysmanski

8

Nếu bạn có quyền truy cập vào khóa riêng, tôi cho rằng, bạn có thể sử dụng nó mà không cần cụm mật khẩu để xác thực với khóa chung. Nếu điều này hoạt động bạn biết nó không có cụm mật khẩu. Nếu có, nó sẽ cung cấp cho bạn một thông báo lỗi.

Nếu bạn không có quyền truy cập vào khóa riêng, tôi nghi ngờ bạn có thể phát hiện ra điều này. Mục đích của cụm mật khẩu là "mở khóa" khóa riêng, nó không có chức năng liên quan đến khóa chung.

Trong thực tế, nếu có, nó sẽ làm cho hệ thống kém an toàn hơn. Người ta có thể sử dụng khóa chung, có sẵn để cố gắn vũ lực hoặc các cuộc tấn công khác cố gắng bẻ khóa cụm mật khẩu.

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.