Điểm:0

Vô hiệu hóa một số khóa OpenSSH nhất định trên OpenBSD: tại sao các mục 'sshd_config' tương ứng bị bỏ qua và tại sao 'ssh-keygen -A' tạo ra các khóa bị cấm?

lá cờ cn

Tôi đang cố gắng đạt được những điều sau trên máy chủ OpenBSD 6.9 của mình:

  1. Cấm sử dụng tất cả các phím trừ ssh-ed25519 một trên cả hai NGƯỜI PHỤC VỤKHÁCH HÀNG hai bên.
  2. giới hạn ssh-keygen -A chỉ tạo khóa bởi người được ủy quyền ssh-ed25519 thuật toán và không có gì khác.

Để đạt được những điều này, tôi đã thêm các dòng sau vào sshd_config:

Khóa máy chủ /etc/ssh/ssh_host_ed25519_key
Thuật toán CASignature ssh-ed25519
HostbasedAcceptedKeyTypes ssh-ed25519
Thuật toán HostKey ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed25519

Tôi cũng đã thêm các dòng sau vào ssh_config:

Thuật toán CASignature ssh-ed25519
HostbasedAcceptedKeyTypes ssh-ed25519
Thuật toán HostKey ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed25519

Tôi đã xóa tất cả các khóa trừ khóa được ủy quyền.

Đã khởi động lại sshd:

# rcctl khởi động lại sshd                                                                            
sshd (được)
sshd (được)

Sau khi xác minh xem cài đặt của tôi có được sử dụng hay không bằng cách chạy các lệnh sau:

# ssh -Q Thuật toán dựa trên máy chủ được chấp nhận
# ssh -Q Thuật toán HostKey
# ssh -Q Thuật toán PubkeyAccepted

Đối với sự ngạc nhiên của tôi, đây là những gì tất cả họ trở lại với:

ssh-ed25519
[email protected]
[email protected]
[email protected]
ssh-rsa
rsa-sha2-256
rsa-sha2-512
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

Nói cách khác, các hạn chế chính bị bỏ qua.

Để đảm bảo an toàn, tôi thậm chí đã khởi động lại máy chủ, nhưng không có gì khác biệt.

Một giải pháp thay thế tiềm năng là xóa tất cả các tệp chính trừ tệp được ủy quyền. Tuy nhiên, tập lệnh init /etc/rc có một dòng, ssh-keygen -A, sẽ tạo lại tất cả các khóa ssh bị thiếu sau mỗi lần khởi động lại hệ thống, trước khi daemon sshd khởi động, bao gồm cả những thuật toán bị cấm!

Vì vậy, loại bỏ các phím không giải quyết được vấn đề.

Như một giải pháp thay thế bổ sung, tôi có thể xóa ssh-keygen -A dòng từ tập lệnh init hoặc thay thế nó bằng thuật toán tạo khóa tùy chỉnh của tôi, nhưng điều đó sẽ dẫn trở lại nơi nó đã bắt đầu: phải xử lý vấn đề này nhiều lần, ví dụ: sau mỗi lần cập nhật hệ thống, bất cứ khi nào nhóm OpenBSD phát hành phiên bản mới của /etc/rc. Việc tự động loại bỏ đường dây đó và thử nghiệm một giải pháp thay thế cẩu thả như vậy trên một số lượng lớn máy chủ là rất khó và có thể dẫn đến lỗi mạng lớn nếu xảy ra sự cố.

Do đó, tôi tiếp tục điều tra và tìm hiểu mã nguồn của ssh-keygen. Tôi đã phát hiện ra rằng không thể hạn chế hành vi của -MỘT chuyển đổi từ bên ngoài, v.d. thông qua tập tin cấu hình. Nó thậm chí không thực hiện kiểm tra sơ bộ xem các khóa có được cấp phép hay không, nó chỉ tạo ra các khóa, theo danh sách các thuật toán từ một mảng được mã hóa cứng. Cách duy nhất để tránh điều này là chỉnh sửa, biên dịch lại và sử dụng một nhánh tùy chỉnh của ssh-keygen, nhưng sau đó tôi sẽ phải xử lý nó sau mỗi lần cập nhật OpenSSH...

Tôi đã tìm thấy một phần giải pháp cho các hệ điều hành khác nhưng không phải cho OpenBSD.

Ai đó có thể vui lòng chỉ cho tôi một giải pháp thích hợp? Tại sao của tôi sshd_configssh_config hạn chế quan trọng được bỏ qua và làm thế nào để có được ssh-keygen -A ngừng tạo khóa với các thuật toán bị cấm?

Trước khi bất kỳ ai hỏi: tất cả các cài đặt khác được OpenSSH sử dụng trong cả hai tệp cấu hình, vì vậy các tệp cấu hình này thực sự là những tệp thực tế đang được tải.

Rất cám ơn cho tất cả các câu trả lời hữu ích.

Michael Hampton avatar
lá cờ cz
Đối với ssh-keygen, bạn nên nói chuyện với các nhà phát triển OpenSSH thông qua bất kỳ hệ thống theo dõi vấn đề nào họ sử dụng.
Michael Hampton avatar
lá cờ cz
Ngoài ra, tôi cũng phàn nàn với những người bảo trì OpenBSD về việc họ sử dụng ssh-keygen -A trong các tập lệnh khởi động. Trên Linux, tất cả các khóa được tạo riêng biệt và việc tạo từng khóa (ví dụ: rsa, ecdsa, ed25519) có thể được bật hoặc tắt theo ý muốn độc lập với các khóa khác.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.