Xác thực SSH: khóa SSH hoặc mật khẩu một lần


8

Tôi có một máy chủ Ubuntu 10.04 Linux mà tôi thường ssh vào (từ máy chủ của tôi) bằng cách sử dụng xác thực khóa ssh. Tuy nhiên, đôi khi tôi cần ssh từ xa từ các máy có khả năng không an toàn (như quán cà phê internet, máy tính công cộng tại thư viện, v.v.) mà mật khẩu của tôi có thể bị xâm phạm. Trong trường hợp này, tôi muốn sử dụng hệ thống mật khẩu một lần như Mật khẩu giấy hoàn hảo của OTPW hoặc Steve Gibson .

Làm cách nào tôi có thể định cấu hình máy chủ của mình để kiểm tra khóa ssh trước, sau đó sử dụng hệ thống OTPW để xác thực? (Tôi có phải làm cho hai người dùng không?)

Câu trả lời:


5

Mặc dù phương pháp này không kiểm tra 1 phương thức xác thực, nhưng nó giải quyết được vấn đề đăng nhập từ các máy không an toàn / không đáng tin cậy bằng OTP.

Để định cấu hình trình nền SSH để nghe trên nhiều cổng (một cho xác thực khóa chung và một cho xác thực OTP), chỉ cần thêm một số cổng khác vào tệp sshd_config, nghĩa là

Port 22 # For key-based auth
Port 60000 # For OTP-based auth

2-FA dựa trên công nghệ xác thực 2 bước của Google. Để cài đặt thư viện và chương trình:

$ sudo apt-get install libpam-google-authenticator

Trong khi đó, hãy cài đặt ứng dụng Google Authenticator trên điện thoại thông minh của bạn. Sau khi cài đặt, từ thiết bị đầu cuối, khởi động chương trình:

$ google-authenticator

Điều này sẽ cung cấp cho bạn một mã vạch, một bí mật và một loạt các mã số cào. GIỮ THỨ AN TOÀN !!! Nếu bạn không có quyền truy cập vào điện thoại của mình hoặc cần truy cập khẩn cấp, các mã này sẽ là cách duy nhất của bạn. Đừng đánh giá thấp tầm quan trọng của cơ chế sao lưu này. Nó có thể làm phiền bạn về lâu dài. Định cấu hình mô-đun PAM để sử dụng Google Authenticator:

$ sudo nano /etc/pam.d/sshd

Để vô hiệu hóa đăng nhập mật khẩu sau đó, hãy đặt # ở phía trước dòng @include common-auth. Ngoài ra, ở dưới cùng của tệp, thêm:

auth required pam_google_authenticator.so

Để bật xác thực OTP:

$ sudo nano /etc/ssh/sshd_config

Tìm dòng có cụm từ: ChallengeResponseAuthenticationvà thay đổi nó từ ban nọ không thành thành có.

Đặt PermitRootLogin noPasswordAuthentication no.

Ở phần cuối của tệp, hãy sử dụng tham số phù hợp với mối quan hệ của người dùng để xác định (các) cơ chế xác thực nào phải được sử dụng để truy cập vào máy từ cổng đó, ví dụ:

Match LocalPort 22
    PasswordAuthentication no
    AuthenticationMethods publickey
    PubKeyAuthentication yes
​
Match LocalPort 60000
    AuthenticationMethods keyboard-interactive:pam

Tham số bàn phím tương tác với bàn phím: pam Bắt buộc trình nền SSH đi đến trình nền mô-đun PAM (được định cấu hình bên dưới /etc/pam.d/sshd) và xác thực như được chỉ định ở đó (do đó cũng cần phải tắt mật khẩu đăng nhập từ mô-đun PAM, bằng cách băm common-authdòng) . Đừng quên khởi động lại trình nền SSH của bạn để các thay đổi có hiệu lực:

$ sudo /etc/init.d/sshd restart

Sau đó, khi ở một máy không đáng tin cậy, chỉ cần SSH vào cổng 60000 (hoặc bất cứ thứ gì bạn đặt) và sử dụng OTP để xác thực.


3

Khóa công khai - Xác thực với OTP là dự phòng (đó là ý bạn, phải không?):

  1. Khóa công khai-Xác thực với dự phòng mật khẩu là hành vi mặc định của OpenSSH
  2. Cách xác minh mật khẩu của bạn được xác định tốt nhất trong các tệp cấu hình PAM

3

Chỉnh sửa: xin lỗi vì đã trả lời câu hỏi của riêng tôi! (Hai câu trả lời khác rất hay, nhưng không trả lời hoàn toàn câu hỏi. Nhưng vẫn rất hữu ích!)

Các OTPassword Pluggable Authentication Module thực hiện hệ thống Mật khẩu Perfect Giấy Steve Gibson trong một PAM cho Linux. Khi bạn cài đặt nó, bạn sẽ có xác thực PPP. Nhưng những gì về một phím ssh bỏ qua? Câu hỏi thường gặp trên trang web của họ trả lời câu hỏi này:

Nếu bạn có một máy đáng tin cậy mà bạn thường đăng nhập vào hệ thống từ xa, hãy sử dụng các phím ssh. Tạo chúng với ssh-keygenvà sao chép mới ~ / .ssh / id_rsa.pub của bạn vào ~ / .ssh / ủy quyền trên máy tính từ xa. Khi SSH xác thực người dùng bằng các khóa, nó sẽ bỏ qua PAM.

Thuận tiện tự động!

Chỉnh sửa: Google AuthenticatorDuo Security cũng có vẻ là giải pháp tốt. Họ không cung cấp mật khẩu một lần trên giấy; thay vào đó họ sử dụng điện thoại thông minh của bạn để tạo khóa TOTP liên tục thay đổi . (Duo Security cũng hoạt động với điện thoại câm bằng cách gửi cho họ tin nhắn văn bản với một vài mật khẩu một lần. Tuy nhiên, Duo Security không phải là cục bộ; bạn phải dựa vào máy chủ của họ ...)


Ngoài ra, Barada là một giải pháp khác có vẻ đầy hứa hẹn; thay vì giấy mật khẩu một lần, nó sử dụng điện thoại thông minh để tạo mật khẩu từ mã PIN bạn cung cấp. Nếu bạn đang ở trên một hệ thống đáng tin cậy, bạn chỉ cần nhập mật khẩu tiêu chuẩn của mình.
mr_schlomo

Một dự án tích cực hơn là Google Authenticator .
mr_schlomo

Xin lỗi để thêm một nhận xét khác, nhưng tôi đã tìm thấy Duo Security cũng giống như một tùy chọn xác thực yếu tố optw / dual.
mr_schlomo

Bạn nên chỉnh sửa câu trả lời của bạn để bao gồm tất cả điều đó.
Mat

1

Điều này có thể đơn giản nhưng cũng có một vài cạm bẫy cần tránh:

Hầu hết các thay đổi cấu hình của bạn cần xảy ra trong tệp sshd_config thường nằm ở / etc / ssh / sshd_config

Bạn đã có khóa chia sẻ đang chạy nên tôi sẽ bỏ qua điều đó tại đây:

Dòng bạn muốn chú ý là:

PasswordAuthentication yes

Những lưu ý mà bạn muốn biết là hạn chế ai có thể đăng nhập và làm thế nào. Những điều này nên TẤT CẢ để hạn chế quyền truy cập vào một nhóm người dùng nhỏ nhất có thể:

PermitEmptyPasswords no
AllowUsers sshuser@192.168.*
AllowGroups sshusers

Có nhiều tùy chọn bạn có thể đặt ở đây xem lại trang man cho toàn bộ tùy chọn có sẵn.

Tôi khuyên bạn nên thiết lập một nhóm chỉ để cấp quyền ssh.

Cờ sau đây cũng được khuyến nghị mạnh mẽ :

PermitRootLogin no

Điều này sẽ nhận được daemon để yêu cầu mật khẩu nếu khóa không được gửi / cấu hình lại. Bạn có thể thêm rào cản của OTPW nếu bạn thích nhưng về mặt lý thuyết bạn đang ở trong một môi trường được mã hóa nên không cần thiết phải nghiêm túc. Nhìn vào thông tin OTPW mà bạn đã liên kết mã dường như đã được cập nhật lần cuối 2003, tôi sẽ không thích sử dụng nó, mà không nhận được một số đánh giá ngang hàng. Thực hành mã hóa an toàn và thực sự toàn bộ môi trường đã thay đổi rất nhiều kể từ đó.

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.