Tại sao xác thực khóa SSH tốt hơn xác thực mật khẩu?


45

Đây không phải là một câu hỏi kỹ thuật nhiều vì nó là khái niệm. Tôi hiểu mật mã được sử dụng trong khóa SSH mạnh hơn mật khẩu thông thường, nhưng tôi không hiểu tại sao nó được coi là an toàn hơn.

Hầu hết các hướng dẫn tôi đọc đều đề xuất sử dụng xác thực khóa SSH thay vì xác thực mật khẩu. Nhưng tôi hiểu rằng bất cứ ai sau đó có quyền truy cập vào máy khách được chấp thuận trước đều có thể kết nối với máy chủ, nghĩa là mức độ bảo mật được cung cấp bởi khóa SSH chỉ mạnh bằng mức độ bảo mật của vật lý máy khách.

Ví dụ: nếu tôi thiết lập khóa SSH trên điện thoại để kết nối với máy tại nhà, nếu tôi mất điện thoại và ai đó quản lý để mở khóa, họ sẽ có thể kết nối với máy tại nhà của tôi. Tôi biết sau đó tôi có thể rút chìa khóa cho điện thoại khỏi máy ở nhà, nhưng tôi dễ bị tổn thương cho đến khi tôi nhận ra thiết bị khách đã bị mất / vi phạm.

Tôi đã hiểu lầm điều gì đó, hoặc là những mối quan tâm hợp lệ?


10
Làm cả hai - một khóa yêu cầu mật khẩu. Bằng cách đó bạn cần hai thứ để được xác định, không chỉ một. Bạn cũng có thể vô hiệu hóa các khóa bị mất khá dễ dàng và có nhiều khóa được ủy quyền để kiểm soát nhiều hơn, v.v.
Phoshi

2
Điều này có lẽ nên được chuyển đến an ninh.

10
@DKGasser: Không, không nên. Đây là một câu hỏi hoàn toàn hợp lệ ở đây. Chỉ vì một cái gì đó có thể được chuyển đến một trang SE khác không có nghĩa là nó nên .
Wuffers

4
@DKGasser: Nó có thể vào trang web đó, đó là một câu hỏi hoàn toàn hợp lệ ở đó. Nhưng nó cũng là một câu hỏi hợp lệ ở đây, vì vậy không có lý do gì để di chuyển nó. Nếu câu hỏi này được đưa ra khỏi chủ đề ở đây, thì có, nó có thể được di chuyển đến đó. Nhưng nó hoàn toàn thuộc chủ đề trên trang web này và do đó không nên di chuyển.
Wuffers

3
VÀ đừng quên, khóa SSH không bao giờ đi qua mạng. Máy chủ từ xa KHÔNG BAO GIỜ nhận được khóa, trái ngược với mật khẩu, không chỉ được gửi qua mạng mà còn được gửi đến máy chủ từ xa. Hãy nghĩ về điều đó vào lần tới khi bạn không chắc chắn nên sử dụng mật khẩu nào và thử một vài ... có thể được sử dụng trên các tài khoản khác! Mật khẩu nào bạn đã gửi đến máy chủ đó ???
9mjb

Câu trả lời:


40

Nếu dịch vụ SSH của bạn cho phép xác thực dựa trên mật khẩu, thì máy chủ SSH được kết nối Internet của bạn sẽ bị tấn công cả ngày lẫn đêm bởi các mạng bot cố gắng đoán tên người dùng và mật khẩu. Mạng bot không cần thông tin, nó chỉ có thể thử tên phổ biến và mật khẩu phổ biến. Có rất nhiều người tên là john với mật khẩu là qwerty123. Ngoài bất cứ điều gì khác, điều này làm tắc nghẽn nhật ký của bạn.

Nếu dịch vụ SSH của bạn chỉ cho phép xác thực khóa chung, kẻ tấn công cần một bản sao của khóa riêng tương ứng với khóa chung được lưu trữ trên máy chủ. Họ không thể thực hiện các cuộc tấn công ngẫu nhiên, họ phải có kiến ​​thức trước về người dùng của bạn và phải có thể đánh cắp khóa riêng từ PC của người dùng được ủy quyền của máy chủ SSH của bạn.

Việc các khóa riêng thường được bảo vệ bởi một cụm từ dài có ý nghĩa thứ yếu.

Cập nhật:

Như các bình luận chỉ ra, và như tôi đã trải nghiệm, việc chuyển dịch vụ SSH của bạn từ cổng 22 sang một cổng được đánh số cao sẽ tạo ra sự khác biệt lớn về số lần thử đăng nhập trái phép xuất hiện trong nhật ký của bạn. Điều này đáng để làm nhưng tôi coi nó như một hình thức bảo mật bằng cách che khuất (một cảm giác an toàn sai lầm) - sớm hay muộn bot sẽ thực hiện quét cổng lén lút chậm hoặc bạn sẽ bị nhắm mục tiêu một cách có chủ ý. Tốt hơn để được chuẩn bị.

Tôi luôn sử dụng một cụm từ dài để bảo vệ khóa riêng của mình, tôi đoán điều này có tầm quan trọng đặc biệt trên các thiết bị di động có thể dễ dàng bị mất hoặc bị đánh cắp hơn.

Ngoài ra, http://xkcd.com/538/

Bảo vệ


7
+1 ngoại trừ việc xác thực khóa công khai sẽ không làm gì cho nhật ký của bạn bị tắc với các bot cố gắng kết nối. Để ngăn chặn điều đó, hãy chạy máy chủ SSH của bạn trên một cổng cao (tức là 9876 thay vì 22). Sau đó, nếu họ muốn đánh bạn, họ phải đưa bạn đến trước và các bot thường không lãng phí nhiều thời gian đó ... có rất nhiều máy chủ SSH vào ngày 22.
Ex Umbris

3
Bạn không đùa về kích thước nhật ký - my / var / log / safe đã chuyển từ megabyte số lần đăng nhập, sang kilobyte (chỉ với hồ sơ đăng nhập của tôi).
John C

2
Thật thú vị, tôi đã chạy với auth dựa trên mật khẩu trong 10 năm nay .. lol .. Được cấp, các cổng ssh được hiển thị công khai của tôi không bao giờ là cổng 22. Hãy nghĩ rằng các botnet sẽ quét tôi và cố gắng truy cập vào mỗi cổng họ có thể ?? Thông tin tốt, cảm ơn.
James T Snell

2
@ExUmbris thay vì thay đổi cổng, bạn nên xem xét sử dụng fwknop: Ủy quyền gói đơn và gõ cổng . Lợi ích ở đây là rõ ràng: khi bạn không cho phép bất kỳ ai thậm chí thấy rằng cổng được mở ở bất cứ đâu trừ khi họ được cấp quyền truy cập vào cổng thông qua việc gõ cửa với SPA, sau đó họ thậm chí không thể tìm thấy nó bằng nmap và khai thác nó Điều đó tốt hơn nhiều so với bảo mật đơn giản thông qua che khuất.
aculich

@aculich Thay đổi cổng không phải là "bảo mật thông qua che khuất". Tất cả những gì tôi đang làm là ngăn chặn các bản ghi chứa đầy các cảnh báo. Tuy nhiên, bạn có một điểm hợp lệ về việc cải thiện bảo mật với SPA.
Ex Umbris

8

Logic là có nhiều tổ hợp khóa SSH hơn mật khẩu nên khó đoán hơn rất nhiều. Sử dụng các khóa SSH cũng cho phép bạn vô hiệu hóa xác thực mật khẩu có nghĩa là hầu hết các cuộc tấn công tự động diễn ra trên internet sẽ vô dụng.

Về bảo mật vật lý, không có sự khác biệt giữa việc lưu mật khẩu và có khóa SSH không được mã hóa trên thiết bị của bạn nếu bị mất hoặc bị đánh cắp. Ưu điểm duy nhất bạn có là không ai có mật khẩu của bạn và về mặt lý thuyết bạn có thể đảm bảo rằng tất cả các thiết bị đều có chứng chỉ SSH khác nhau để bạn có thể vô hiệu hóa mật khẩu cho điện thoại của mình.

Tôi tin rằng cũng có thể mật khẩu bảo vệ các khóa SSH.


Tuy nhiên, điều đáng chú ý là các nỗ lực cưỡng bức mật khẩu chống lại sshd có thể được phát hiện và bảo vệ chống lại (ví dụ: fail2ban), trong khi ai đó đã đánh cắp khóa riêng của bạn có thể thử mật khẩu trên nó nhanh như máy tính (hoặc cụm) của họ sẽ cho phép họ Đây vẫn không phải là một cuộc tấn công tuyệt vời , nhưng họ đã cải thiện đáng kể tỷ lệ cược của họ so với chính sách fail2ban hợp lý.
Xiong Chiamiov


1

Mật khẩu cũng có thể bị xâm phạm do bàn phím của bạn bị theo dõi "qua vai". Ngoài ra, sử dụng mật khẩu tương tự ở nhiều nơi là một điểm yếu, đặc biệt là nếu mật khẩu đôi khi được sử dụng trên một máy tính kém an toàn hơn với các keylogger tiềm năng.

Bạn có quyền rằng một khóa không được mã hóa có thể được đọc khỏi đĩa cứng nếu máy tính bị đánh cắp - vì vậy hãy mã hóa nó bằng mật khẩu.

Nếu máy tính của bạn bị phần mềm độc hại xâm nhập, bạn sẽ bị nhồi bất kể .. - ai đó có thể lấy khóa được mã hóa và khóa mật khẩu của bạn.


1
Lưu ý: nhưng bạn không thể mã hóa khóa của mình bằng mật khẩu nếu nó được sử dụng theo chương trình (ví dụ: trong tập lệnh).
TheStoryCoder
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.