Thực thi mật khẩu SSH?


9

Tôi đang tìm cách xóa thông tin đăng nhập dựa trên mật khẩu cho SSH. Tuy nhiên, tôi không muốn cho phép các khóa ssh không mật khẩu, vì điều đó sẽ còn tồi tệ hơn.

Làm cách nào để đảm bảo rằng chỉ các khóa SSH có mật khẩu mới có thể kết nối?

Nếu điều này không thể được thực hiện, có những lựa chọn thay thế, như quản lý tập trung tạo khóa SSH và ngăn người dùng tạo và / hoặc sử dụng khóa riêng của họ không? Một cái gì đó giống như PKI, tôi cho rằng.

Câu trả lời:


20

Cụm mật khẩu có thể được đặt trên khóa riêng không liên quan đến máy chủ SSH hoặc kết nối với nó. Đặt cụm mật khẩu cho khóa riêng chỉ là biện pháp bảo mật mà chủ sở hữu khóa có thể thực hiện để ngăn chặn bên thứ ba truy cập vào vỏ từ xa của mình trong trường hợp khóa riêng bị đánh cắp.

Thật không may, bạn không thể buộc người dùng bảo mật khóa riêng của họ bằng cụm mật khẩu. Đôi khi, các khóa riêng không được bảo vệ được yêu cầu để tự động truy cập vào máy chủ SSH từ xa. Một thói quen tốt tôi khuyên đối với trường hợp như vậy là để tư vấn cho người sử dụng để băm các known_hosts tập tin (bảo quản ở ~ / .ssh / known_hosts ), mà giữ thông tin về máy chủ từ xa sẽ kết nối người sử dụng, sử dụng lệnh sau:

ssh-keygen -H -f ~/.ssh/known_hosts

Bằng cách này, ngay cả khi bên thứ ba có quyền truy cập vào khóa riêng không được bảo vệ, sẽ rất khó để tìm ra máy chủ từ xa nào khóa này là hợp lệ. Tất nhiên, xóa lịch sử shell là bắt buộc để kỹ thuật này có giá trị bất kỳ.

Ngoài ra, một điều bạn nên luôn luôn ghi nhớ, đó là không cho phép root đăng nhập từ xa bằng cách thêm vào phần sau trong cấu hình máy chủ SSH của bạn (sshd_config):

PermitRootLogin no

Mặt khác, nếu bạn muốn ngăn người dùng sử dụng khóa để xác thực, nhưng thay vào đó sử dụng mật khẩu, bạn nên thêm các mục sau vào sshd_config :

PasswordAuthentication yes
PubkeyAuthentication no

8

Điều đó là không thể.

Người dùng có thể làm bất cứ điều gì với keyfiles của họ, chuyển đổi thành mật khẩu ngay cả khi bạn tạo nó chẳng hạn.


3

Bạn không thể. Khi người dùng có dữ liệu chính mà họ sở hữu, bạn không thể ngăn họ xóa cụm mật khẩu. Bạn sẽ cần tìm những cách khác để xác thực.


2

Để giành quyền kiểm soát các khóa người dùng, tất cả các khóa phải được chuyển đến một thư mục thuộc sở hữu gốc, nơi các khóa có thể đọc được nhưng không thể sửa đổi bởi người dùng cuối. Điều này có thể được thực hiện bằng cách cập nhật sshd_config.

Khi các tệp chính nằm ở vị trí được kiểm soát, bạn sẽ cần một giao diện quản lý để cập nhật (và thực thi chính sách mật khẩu), sau đó là phân phối các khóa cho các máy chủ được yêu cầu. Hoặc tự cuộn một cái hoặc xem các sản phẩm như FoxT / Tectia, v.v.


... phá vỡ lợi ích của khóa công khai
Patwie

0

Một giảm thiểu sẽ là sử dụng plugin mô-đun PAM của Google xác thực. Thường có sẵn trong các gói chính thức.

Điều này sẽ cung cấp 2FA thông qua mã 6 chữ số trên điện thoại thông minh của bạn.

Hướng dẫn tại đây: Cách thiết lập xác thực nhiều yếu tố cho SSH trên Ubuntu 16.04


1
Bạn nên lưu ý rằng điều này không trả lời trực tiếp câu hỏi, nhưng là một thay thế (tốt).
ceejayoz

1
@ceejayoz Bạn nói đúng. Tôi đã thêm "Một giảm thiểu sẽ là sử dụng .." vào đầu câu trả lời ngay bây giờ để làm rõ rằng đây là một giải pháp thay thế.
Basil A

-1

SIMPLE, bạn chỉ cần mở rộng giao thức SSH để máy khách SSH hoặc tác nhân SSH báo cáo / đặt cờ để cho biết khóa riêng ban đầu có được mã hóa hay không (có lẽ phía máy chủ thậm chí có thể đặt ra một truy vấn) - vì phía máy khách có thể nhìn thấy của khóa riêng và thậm chí nhắc nhở cho cụm mật khẩu khi khóa được mã hóa.

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.