SSH: Xác thực hai yếu tố


30

Tôi hiện có Ubuntu Server 12.04 chạy OpenSSH cùng với Samba và một vài dịch vụ khác. Tại thời điểm hiện tại tôi đã thiết lập xác thực khóa công khai và tôi tự hỏi liệu có thể thiết lập xác thực hai yếu tố không? Tôi đã xem Google Authenticator mà tôi hiện đang sử dụng với tài khoản Gmail của mình.

Tôi đã tìm thấy một mô-đun PAM có vẻ như nó sẽ tương thích tuy nhiên có vẻ như bạn buộc phải sử dụng mật khẩu và mã được tạo.

Tôi tự hỏi liệu có cách nào để sử dụng Ứng dụng Google Authenticator (hoặc một cái gì đó tương tự) cùng với khóa công khai của tôi để xác thực vào máy chủ SSH của tôi không?


Hầu hết các ý kiến ​​dường như là các báo cáo lỗi đề cập rằng không thể sử dụng PAM và xác thực khóa chung với OpenSSH. Tôi cũng đã tìm thấy các phần đề cập đến nó dư thừa khi tôi đang sử dụng một cụm từ với khóa của mình. Với tất cả các giải pháp dường như chỉ cho phép Google Authenticator và mật khẩu không phải là khóa chung. Tôi có thể thiếu nó hoàn toàn, nhưng tôi không thấy cách thực hiện cả hai.
lừa bê tông

Không chắc tại sao điều này có -1, đây là một câu hỏi rất thú vị và tôi cũng muốn biết câu trả lời (không phải là tôi có khả năng sử dụng nó, nhưng ngay cả như vậy, rất tốt để cất giấu trong các ngân hàng tri thức)
Mark Henderson

@Pierre Bạn đang cố gắng yêu cầu cả xác thực khóa công khai và Google OTP?
mgorven

@mgorven Có, tôi đã cố gắng thiết lập cả khóa công khai và Google OTP. Tôi đã nghe một số người nói rằng việc sử dụng cụm mật khẩu trên khóa được coi là hai yếu tố nhưng tôi lo ngại về việc phần mềm độc hại đánh cắp khóa không được mã hóa khỏi bộ nhớ. Tôi muốn có hai thiết bị hoàn toàn riêng biệt được sử dụng để xác thực, tôi hơi hoang tưởng.
lừa bê tông

Điều này dự định sẽ được triển khai chính thức vào 6.2: bugzilla.mindrot.org/show_orms.cgi?id=983#c59
Tobias Kienzler 8/213

Câu trả lời:


8

Red Hat đã thêm một bản vá vào OpenSSH trong RHEL (và do đó là CentOS) 6.3 để yêu cầu nhiều cơ chế xác thực, vì vậy bạn có thể làm một cái gì đó như thế này:

RequiredAuthentications2 publickey,keyboard-interactive

Xem ghi chú phát hành để không chi tiết hơn nhiều.

Thật không may, tính năng này dường như không có trong OpenSSH ngược dòng hay Ubuntu 12.04, vì vậy trừ khi bạn muốn tìm bản vá và biên dịch lại OpenSSH, tôi sợ bạn không gặp may.


Tôi phải nói rằng tôi đánh giá cao nỗ lực mà bạn đã bỏ ra để tìm cho tôi một câu trả lời, tôi chắc chắn đã thử xem qua một vài trang kết quả của Google nhưng tất cả đều ngụ ý những gì bạn đề cập tôi chỉ sử dụng mật khẩu và OTP. Tôi có thể sẽ tạo một máy ảo CentOS để chơi xung quanh với tính năng này.
lừa bê tông

@Pierre Không nhiều nỗ lực, tôi đã biết về tính năng này trước đây ;-)
mgorven

Tôi đã tìm thấy lỗi tương ứngmột số ghi chú thêm . Các lỗi bao gồm các bản vá như một tập tin đính kèm.
Robie Basak

Và đây là một lỗi opensh ngược dòng . Có vẻ như chức năng tương tự sẽ sớm được cập nhật trong openssh.
Robie Basak

openssh 6.2 đã hạ cánh trong bản phát hành phát triển của Ubuntu, vì vậy hãy tiết kiệm cho mọi thảm họa mà sự hỗ trợ này sẽ có trong bản phát hành 13.10 dự kiến. Nó sử dụng ngược dòng AuthenticationMethodsđể chỉ định nhiều phương thức cần thiết, do đó bạn có thể yêu cầu cả khóa ssh và PAM, với PAM thực hiện kết thúc Google Authenticator.
Robie Basak

8

Bạn đang tìm kiếm Bảo mật Duo


1
Điều này. Vâng. Tôi thích điều này!
LVLAaron

Chắc chắn - Duo dễ dàng thiết lập cho Unix / Linux (liên kết trong câu trả lời), OpenVPN ( duosecurity.com/docs/openvpn_as ) hoặc bất kỳ dịch vụ hai yếu tố dựa trên OATH TOTP hoặc quản lý mật khẩu LastPass nào. Bất kỳ dịch vụ nào tương thích với Google Authenticator (sử dụng TOTP) đều có thể được sử dụng với ứng dụng di động của Duo hoặc mã thông báo phần cứng hỗ trợ TOTP.
RichVel

5

Bạn có thể sử dụng cả mô-đun PAM của Google Authenticator và các khóa chung, nhưng chỉ có một mô-đun tại thời điểm đó sẽ được sử dụng cho một xác thực nhất định. Đó là, nếu người dùng đăng nhập bằng khóa chung được ủy quyền, sẽ không yêu cầu mã thông báo.

Hoặc, nói cách khác: mã thông báo chỉ được yêu cầu để xác thực mật khẩu, không phải khóa SSH.

Tuy nhiên, hạn chế này không đến từ mô-đun Google Authenticator, mà từ SSH, chỉ thực hiện xác thực hai yếu tố (thông qua ChallengeResponseAuthentication) cho PAM, nhưng không gọi PAM khi cung cấp khóa công khai hợp lệ.


Điều này là chính xác, nhưng bây giờ đã thay đổi. openssh 6.2 thêm một AuthenticationMethodsparamaeter cấu hình có thể lật này. Bây giờ bạn có thể yêu cầu cả hai.
Robie Basak

3

Câu hỏi này là từ năm 2012. Kể từ đó, SSH đã thay đổi và giao thức SSH2 đã được triển khai.

Trên các phiên bản gần đây hơn của SSH (> = 6.2), man sshd_config đề cập:

AuthenticationMethods
       Specifies the authentication methods that must be successfully completed for a user to be
       granted access.  This option must be followed by one or more comma-separated lists of
       authentication method names.  Successful authentication requires completion of every method
       in at least one of these lists.

       For example, an argument of ``publickey,password publickey,keyboard-interactive'' would
       require the user to complete public key authentication, followed by either password or key-
       board interactive authentication.  Only methods that are next in one or more lists are
       offered at each stage, so for this example, it would not be possible to attempt password or
       keyboard-interactive authentication before public key.

       This option is only available for SSH protocol 2 and will yield a fatal error if enabled if
       protocol 1 is also enabled.  Note that each authentication method listed should also be
       explicitly enabled in the configuration.  The default is not to require multiple authentica-
       tion; successful completion of a single authentication method is sufficient.

Trang này http://lwn.net/Articles/544640/ cũng đề cập đến khả năng sử dụng khóa công khai và xác thực PAM cùng một lúc.


2

Tôi biết câu hỏi này hơi cũ, nhưng vì lợi ích của những người trong tương lai (bao gồm cả tôi) đang tìm giải pháp, cũng có nói về việc sử dụng tùy chọn ForceCommand trong tệp sshd_config để chạy tập lệnh sau đó thực hiện xác thực. Có một kịch bản ví dụ ở đây, bạn có thể sửa đổi một chút theo nhu cầu của mình, mặc dù trong ví dụ đó, anh ta gọi nó từ tệp ủy quyền thay vì làm cho nó toàn hệ thống với ForceCommand của sshd_config.


1

Nhận một YubiKey và làm theo hướng dẫn này http://berrange.com/posts/2011/12/18/multi-factor-ssh-authentication-USE-yubikey-and-ssh-public-keys-together/

AFAIK, đây là cách tốt nhất để triển khai Yubikey trên máy chủ của bạn để truy cập SSH. Hướng dẫn trên cho phép bạn sử dụng khóa công khai + yubikey trong khi nếu bạn đi với hướng dẫn chính thức ( http://code.google.com.vn/p/yubico-pam/wiki/YubikeyAndSSHViaPAM ), nó không hoạt động với công khai- Chìa khóa.

Trân trọng, Vip


0

Nếu bạn đặt cụm mật khẩu trên khóa riêng thì bạn đã xác thực hai yếu tố. Để đăng nhập mọi người sẽ cần:

  1. một cái gì đó bạn có - khóa riêng của bạn
  2. một cái gì đó bạn biết - cụm mật khẩu cho khóa riêng của bạn

3
Hai mật khẩu không thực hiện xác thực hai yếu tố. Bản thân chìa khóa không phải là "thứ bạn có" hợp lệ bởi vì nó không phải là một thứ, chỉ là một phần thông tin. Điều này phải không thể đồng bộ hóa, hoặc ít nhất là không thể biến đổi thành tầm thường, để được sử dụng như một yếu tố xác thực.
MadHatter hỗ trợ Monica

2
Tôi hoàn toàn không đồng ý. Nếu khóa và chứng chỉ không phải là "thứ bạn có" thì chúng là gì? Chúng chắc chắn không phải là "thứ bạn biết" (bạn có thói quen tìm hiểu khóa SSH của mình không?) Và hoàn toàn không phải là "thứ gì đó bạn là". Đó là ba lựa chọn duy nhất, do đó, qua một quá trình loại bỏ, chúng chắc chắn là "thứ bạn có".
Bart B

1
Tôi đồng ý; đối với tôi, vấn đề nằm ở câu châm ngôn (điều mà bạn có | biết | là). Ý tưởng của xác thực hai yếu tố là yêu cầu các thành viên của hai lớp có các thuộc tính khác nhau; một cái gì đó bạn biết là dễ dàng mang theo, nhưng nó có thể được người khác biết cùng lúc với bạn biết nó; Vì vậy, chúng tôi thêm một yếu tố thứ hai, khác nhau. "Thứ bạn có" chỉ khác nếu không thể sao chép (hoặc khó sao chép). Mặt khác, chắc chắn, đó không phải là thứ bạn biết, nhưng nó không khác biệt về chất với những gì bạn biết , bởi vì người khác có thể có nó cùng lúc với bạn.
MadHatter hỗ trợ Monica

2
Tôi chắc chắn đồng ý rằng một cặp khóa được bảo vệ bằng mật khẩu là một cải tiến lớn về bảo mật so với tên người dùng + mật khẩu thẳng. Đáng buồn là tôi không đồng ý rằng một cặp như vậy được coi là hai yếu tố và có lẽ chúng ta sẽ phải đồng ý không đồng ý về điều đó.
MadHatter hỗ trợ Monica

3
Nếu bạn có khóa riêng được mã hóa mật khẩu, bạn chỉ chứng minh một điều với máy chủ: khách hàng của bạn biết khóa riêng. Nó không chứng minh cho máy chủ rằng bạn biết cụm mật khẩu của mình; máy chủ thậm chí không biết về sự tồn tại của cụm mật khẩu của bạn. Do đó, đây chỉ là "thứ bạn biết" (vì khách hàng của bạn biết điều đó) và chỉ có một yếu tố. Nếu kẻ tấn công bị giữ chỉ một thứ (khóa riêng của bạn) thì bạn đã bị xâm phạm. Đó là một yếu tố. Lập luận rằng cụm mật khẩu và khóa riêng của bạn được tính là hai yếu tố chỉ là một bài tập trong ngụy biện. Những gì được tính là những gì xảy ra trên dây.
Robie Basak
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.