SSH Key Exchange có an toàn hơn xác thực mật khẩu không?


9

Người dùng từ xa kết nối với một số dịch vụ tại văn phòng chính của chúng tôi qua internet bằng SSH. Mật khẩu SSH được đồng bộ hóa với tài khoản LAN A / D của họ.

Người dùng có mang một bản sao của khóa SSH về nhà bằng cách sử dụng thứ gì đó như CD hoặc một mảnh giấy sẽ an toàn hơn so với việc người dùng nhập mật khẩu của họ không? Hay tôi nên yêu cầu cả hai?

Câu hỏi của tôi có thể được đặt lại như sau: có lỗ hổng nào trong giao thức xác thực mật khẩu của SSH không?

Đó là thông điệp này khiến tôi nghi ngờ:

The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:.
Are you sure you want to continue connecting (yes/no)?

Câu trả lời:


22

Thông điệp bạn đang thấy là một vấn đề riêng biệt. Đó là yêu cầu bạn xác nhận rằng máy chủ bạn đang kết nối thực sự là máy chủ mà bạn mong đợi. Từ máy chủ, bạn có thể lấy dấu vân tay bằng cách chạy ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub. Sau đó, khi bạn kết nối từ xa lần đầu tiên, bạn có thể chắc chắn rằng dấu vân tay khớp với nhau.

Các khóa máy chủ, được thấy trong hành động ở đây, giải quyết vấn đề của con người trong các cuộc tấn công ở giữa - có lẽ DNS đã bị phá hủy và bạn đang kết nối với máy của đối thủ thay vì của chính bạn. Máy đó thu thập thông tin đăng nhập của bạn và chuyển tiếp kết nối của bạn đến máy chủ thực, đánh cắp thông tin của bạn mà bạn không biết. Đảm bảo khớp khóa máy chủ ngăn chặn điều này xảy ra trừ khi kẻ tấn công thực sự đã đánh cắp khóa công khai của máy chủ của bạn.

Tuy nhiên, vẫn còn một vấn đề - làm thế nào để bạn biết khóa nào đúng? Sau kết nối đầu tiên, khóa chung được lưu trong ~/.ssh/known_hoststệp của bạn , vì vậy các kết nối tiếp theo sẽ ổn. Nhưng lần đầu tiên, bạn cần một số cách để lấy dấu vân tay, hoặc nếu không bạn theo mô hình "TOFU": tin tưởng khi sử dụng lần đầu.

Nhưng không ai trong số này có liên quan đến mật khẩu so với khóa, ngoại trừ cả khóa và mật khẩu đều có thể bị đánh cắp thông qua cuộc tấn công này - theo một nghĩa nào đó, đó là lỗ hổng mà bạn yêu cầu.

Có (ít nhất) ba lý do mật khẩu tệ hơn khóa:

  1. Họ có thể bị ép buộc. Mật khẩu 8 ký tự thông thường do người dùng chọn có khoảng 30 bit đoán-entropy. Một cặp khóa công khai / riêng ssh là 1024 bit hoặc lớn hơn. Thật sự không thể bắt buộc sử dụng khóa ssh, nhưng việc đoán mật khẩu tự động luôn xảy ra.
  2. Họ có thể bị câm. Người dùng thường xuyên chọn mật khẩu khủng khiếp, thậm chí có những hạn chế tại chỗ và họ có xu hướng sử dụng mật khẩu khó hơn ở nhiều nơi. Điều này rõ ràng làm cho các cuộc tấn công dễ dàng hơn.
  3. Mật khẩu có thể bị đánh cắp từ xa. Khi bạn đang sử dụng SSH, mật khẩu được mã hóa trên dây, nhưng rất phổ biến khi máy chủ ssh được thay thế trên các hệ thống bị xâm nhập bằng mật khẩu ghi lại tất cả mật khẩu. Với các khóa, khóa riêng vẫn nằm trên hệ thống cục bộ và không bao giờ được gửi, và do đó, nó không thể bị đánh cắp mà không thực sự xâm phạm máy khách.

Ngoài ra, các khóa ssh cung cấp sự tiện lợi khi được sử dụng với một cái gì đó như ssh-agent- bạn có được hoạt động kết nối không gặp rắc rối mà không cần xác thực lại mỗi lần, trong khi vẫn duy trì mức độ bảo mật hợp lý.

Không có lợi thế đáng kể trong việc yêu cầu cả hai, vì ai đó có đủ quyền truy cập để đánh cắp khóa riêng cũng có thể dễ dàng đánh cắp mật khẩu của người dùng. Nếu bạn cần bảo mật nhiều hơn mức này, hãy xem xét xem xét một hệ thống xác thực hai yếu tố như RSA SecurID hoặc WiKID .


Câu trả lời chính xác. Chính xác những gì tôi đang tìm kiếm. Cảm ơn!
srmark

liên quan đến số 3) Nếu bạn đang đăng nhập vào một máy chủ đã bị bắt buộc ... tại sao ai đó muốn mật khẩu của bạn? Chỉ có lý do tôi có thể nghĩ là nếu bạn sử dụng cùng một mật khẩu ở mọi nơi.
Sirex

Sirex - phải; họ đánh cắp mật khẩu của bạn và sử dụng nó trên các hệ thống khác. Lưu ý trong câu hỏi rằng mật khẩu được sử dụng là "LAN A / D". Vì vậy, họ đánh cắp mật khẩu của bạn từ máy chủ đăng nhập ssh và sau đó cũng có quyền truy cập vào máy chủ Windows. Ngoài ra, bây giờ, bất cứ khi nào hệ thống bị xâm nhập, bạn phải trải qua "khoan, mọi người thay đổi lại mật khẩu của bạn".
mattdm

Ngoài ra, như đã lưu ý trong số 2, người dùng đang sử dụng cùng một mật khẩu ở mọi nơi. Thở dài.
mattdm

xuống với người dùng pesky! :(
Sirex

1

điều bạn thực sự hỏi là "là một yếu tố tốt hơn so với người khác", chủ đề là xác thực đa yếu tố và thực sự bạn sẽ được khuyên nên xem xét chủ đề.

Thông thường, "yếu tố" là thứ bạn biết (mật khẩu), thứ bạn có (tệp ssh hoặc thẻ quẹt phím) hoặc thứ gì đó bạn là (dấu vân tay).

Một là không tốt hơn so với mỗi người, họ là miễn phí. Mất cd với keyfile cũng tệ như việc tiết lộ mật khẩu của bạn nếu đó là tất cả những gì bạn yêu cầu. Đối với môi trường an toàn, xác thực hai yếu tố là phổ biến.


Vâng, tôi hiểu những gì bạn đang nói. Trong trường hợp này, tuy nhiên tôi chỉ đang cố gắng tìm hiểu xem liệu xác thực mật khẩu có thể bị hack bằng cách sử dụng thứ gì đó giống như người đàn ông ở giữa không.
srmark

đối với ssh là một ví dụ cụ thể, không, vì phần cung cấp mật khẩu cũng được mã hóa và các khóa thay đổi trong phiên (tôi tin là 30 giây). Tuy nhiên, đó không phải là sự phản ánh của mật khẩu so với mật mã
Sirex
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.