Ngày đăng: 25 tháng 2 năm 2025
SSH sử dụng mật khẩu để xác thực theo mặc định và hầu hết các hướng dẫn tăng cường bảo mật SSH đều khuyên dùng SSH key thay thế. Tuy nhiên, SSH key vẫn chỉ là một yếu tố duy nhất, mặc dù là yếu tố an toàn hơn nhiều. Kênh (channel) là thiết bị đầu cuối (terminal) trên máy tính của bạn gửi dữ liệu qua đường hầm được mã hóa đến máy từ xa. Nhưng giống như tin tặc có thể đoán mật khẩu, chúng có thể đánh cắp SSH key và sau đó trong cả hai trường hợp, với dữ liệu duy nhất đó, kẻ tấn công có thể truy cập vào hệ thống từ xa của bạn.
Trong hướng dẫn này, chúng tôi sẽ thiết lập xác thực đa yếu tố để chống lại điều đó. Xác thực đa yếu tố (Multi-factor authentication- MFA) hoặc xác thực hai yếu tố (Two-factor authentication- 2FA) yêu cầu nhiều hơn một yếu tố để xác thực hoặc đăng nhập. Điều này có nghĩa là kẻ xấu sẽ phải thỏa hiệp nhiều thứ, như máy tính và điện thoại của bạn, để xâm nhập. Có một số loại yếu tố được sử dụng trong xác thực:
Một yếu tố phổ biến là ứng dụng OATH-TOTP, như Google Authenticator. OATH-TOTP (Mật khẩu một lần dựa trên thời gian xác thực mở) là một giao thức mở tạo mật khẩu dùng một lần, thường là số gồm sáu chữ số được lặp lại sau mỗi 30 giây.
Bài viết này sẽ hướng dẫn cách bật xác thực SSH bằng ứng dụng OATH-TOTP ngoài SSH key. Đăng nhập vào máy chủ của bạn qua SSH sẽ yêu cầu hai yếu tố trên hai kênh, do đó an toàn hơn so với chỉ sử dụng mật khẩu hoặc SSH key. Ngoài ra, chúng tôi sẽ hướng dẫn một số trường hợp sử dụng bổ sung cho MFA và một số mẹo và thủ thuật hữu ích.
Và nếu bạn đang tìm kiếm hướng dẫn thêm về cách bảo mật kết nối SSH, hãy xem các hướng dẫn về Hardening OpenSSH và Hardening OpenSSH Client.
Để làm theo hướng dẫn này, bạn sẽ cần:
Trong bước này, chúng ta sẽ cài đặt và định cấu hình PAM của Google.
PAM, viết tắt của Pluggable Authentication Module, là cơ sở hạ tầng xác thực được sử dụng trên các hệ thống Linux để xác thực người dùng. Vì Google đã tạo ứng dụng OATH-TOTP nên họ cũng tạo PAM tạo TOTP và hoàn toàn tương thích với bất kỳ ứng dụng OATH-TOTP nào, như Google Authenticator hoặc Authy.
Đầu tiên, hãy cập nhật bộ nhớ đệm kho lưu trữ của Ubuntu:
- sudo apt-get update
Tiếp theo, cài đặt PAM:
- sudo apt-get install libpam-google-authenticator
Sau khi cài đặt PAM, chúng ta sẽ sử dụng ứng dụng trợ giúp đi kèm với PAM để tạo khóa TOTP cho người dùng cần yếu tố thứ hai. Khóa này được tạo theo từng người dùng, không phải trên toàn hệ thống. Điều này có nghĩa là mọi người dùng muốn sử dụng ứng dụng xác thực TOTP sẽ cần phải đăng nhập và chạy ứng dụng trợ giúp để lấy khóa của họ; bạn không thể chỉ chạy một lần để bật cho tất cả mọi người (nhưng có một số mẹo ở cuối hướng dẫn này để thiết lập hoặc yêu cầu MFA cho nhiều người dùng).
Chạy ứng dụng khởi tạo:
- google-authenticator
Sau khi bạn chạy lệnh, ứng dụng sẽ hỏi một vài câu hỏi. Câu hỏi đầu tiên hỏi liệu mã thông báo xác thực có nên dựa trên thời gian hay không:
OutputDo you want authentication tokens to be time-based (y/n) y
PAM này cho phép sử dụng mã thông báo theo thời gian hoặc tuần tự. Sử dụng mã thông báo theo tuần tự có nghĩa là mã bắt đầu tại một thời điểm nhất định và sau đó tăng mã sau mỗi lần sử dụng. Sử dụng mã thông báo theo thời gian có nghĩa là mã thay đổi sau một khung thời gian nhất định. Chúng tôi sẽ sử dụng mã theo thời gian vì đó là những gì các ứng dụng như Google Authenticator dự đoán, vì vậy hãy trả lời y
cho câu trả lời là có.
Sau khi trả lời câu hỏi này, rất nhiều đầu ra sẽ cuộn qua, bao gồm cả mã QR lớn. Sử dụng ứng dụng xác thực trên điện thoại của bạn để quét mã QR hoặc nhập thủ công khóa bí mật. Nếu mã QR quá lớn để quét, bạn có thể sử dụng URL phía trên mã QR để lấy phiên bản nhỏ hơn. Sau khi thêm mã, bạn sẽ thấy mã sáu chữ số thay đổi sau mỗi 30 giây trong ứng dụng của mình.
Lưu ý: Đảm bảo bạn ghi lại khóa bí mật, mã xác minh và mã khôi phục ở nơi an toàn, như trình quản lý mật khẩu. Mã khôi phục là cách duy nhất để lấy lại quyền truy cập nếu bạn, ví dụ, mất quyền truy cập vào ứng dụng TOTP của mình.
Các câu hỏi còn lại cung cấp thông tin cho PAM về cách hoạt động. Chúng ta sẽ xem xét từng câu hỏi một:
OutputDo you want me to update your "~/.google_authenticator" file (y/n) y
Thao tác này ghi khóa và tùy chọn vào tệp .google_authenticator
. Nếu bạn nói không (n), chương trình sẽ thoát và không ghi gì cả, nghĩa là trình xác thực sẽ không hoạt động:
OutputDo you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y
Bằng cách trả lời có ở đây, bạn ngăn chặn một cuộc tấn công phát lại bằng cách làm cho mỗi mã hết hạn ngay sau khi sử dụng. Điều này ngăn chặn kẻ tấn công lấy được mã bạn vừa sử dụng và đăng nhập bằng mã đó:
OutputBy default, a new token is generated every 30 seconds by the mobile app.
In order to compensate for possible time-skew between the client and the server,
we allow an extra token before and after the current time. This allows for a
time skew of up to 30 seconds between the authentication server and client. Suppose you
experience problems with poor time synchronization. In that case, you can increase the window
from its default size of 3 permitted codes (one previous code, the current
code, the next code) to 17 permitted codes (the eight previous codes, the current
code, and the eight next codes). This will permit a time skew of up to 4 minutes
between client and server.
Do you want to do so? (y/n) n
Trả lời có ở đây cho phép tối đa 17 mã hợp lệ trong một cửa sổ bốn phút di chuyển. Bằng cách trả lời không, bạn giới hạn ở 3 mã hợp lệ trong một cửa sổ lăn 1:30 phút. Trừ khi bạn tìm thấy vấn đề với cửa sổ 1:30 phút, trả lời không là lựa chọn an toàn hơn. Bạn có thể thay đổi cài đặt này sau trong tệp .google_authenticator
được lưu trữ tại gốc thư mục gốc của bạn:
OutputIf the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than three login attempts every 30s.
Do you want to enable rate-limiting (y/n) y
Giới hạn tốc độ có nghĩa là kẻ tấn công từ xa chỉ có thể thử một số lần đoán nhất định trước khi buộc phải đợi một thời gian trước khi có thể thử lại. Nếu trước đây bạn chưa định cấu hình giới hạn tốc độ trực tiếp vào SSH, thì việc thực hiện ngay bây giờ là một kỹ thuật tăng cường bảo mật tuyệt vời.
Lưu ý: Sau khi hoàn tất thiết lập này, nếu bạn muốn sao lưu khóa bí mật của mình, bạn có thể sao chép tệp ~/.google-authenticator
vào một vị trí đáng tin cậy. Từ đó, bạn có thể triển khai tệp này trên các hệ thống bổ sung hoặc triển khai lại sau khi sao lưu.
Bây giờ PAM của Google đã được cài đặt và định cấu hình, bước tiếp theo là định cấu hình SSH để sử dụng khóa TOTP của bạn. Chúng ta sẽ cần thông báo cho SSH về PAM và sau đó định cấu hình SSH để sử dụng khóa này.
Vì chúng ta sẽ thực hiện các thay đổi SSH qua SSH, nên điều quan trọng là không bao giờ được đóng kết nối SSH ban đầu của bạn. Thay vào đó, hãy mở phiên SSH thứ hai để thực hiện thử nghiệm. Điều này nhằm tránh việc bạn bị khóa khỏi máy chủ nếu có lỗi trong cấu hình SSH của bạn. Khi mọi thứ hoạt động, bạn có thể đóng bất kỳ phiên nào một cách an toàn. Một biện pháp phòng ngừa an toàn khác là tạo bản sao lưu các tệp hệ thống mà bạn sẽ chỉnh sửa, vì vậy nếu có sự cố xảy ra, bạn có thể quay về tệp gốc và bắt đầu lại với cấu hình sạch.
Để bắt đầu, hãy sao lưu tệp cấu hình sshd
:
- sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.bak
Bây giờ hãy mở tệp bằng nano
hoặc trình soạn thảo văn bản yêu thích của bạn:
- sudo nano /etc/pam.d/sshd
Thêm dòng sau vào cuối tệp:
. . .
# Standard Un*x password updating.
@include common-password
auth required pam_google_authenticator.so nullok
auth required pam_permit.so
Từ nullok
ở cuối dòng cuối cùng cho PAM biết rằng phương thức xác thực này là tùy chọn. Điều này cho phép người dùng không có mã thông báo OATH-TOTP vẫn có thể đăng nhập chỉ bằng SSH key của họ. Khi tất cả người dùng đều có mã thông báo OATH-TOTP, bạn có thể xóa nullok
khỏi dòng này để bắt buộc sử dụng MFA. Dòng thứ hai với pam_permit.so
là bắt buộc để cho phép xác thực nếu người dùng không sử dụng mã thông báo MFA để đăng nhập. Khi đăng nhập, mỗi phương thức cần có SUCCESS để cho phép xác thực. Nếu người dùng không sử dụng công cụ xác thực MFA, việc sử dụng tùy chọn nullok
sẽ trả về IGNORE cho xác thực bàn phím tương tác. pam_permit.so
sau đó trả về SUCCESS và cho phép xác thực tiếp tục.
Lưu và đóng tệp.
Tiếp theo, chúng ta sẽ cấu hình SSH để hỗ trợ loại xác thực này.
Trước tiên, hãy sao lưu tệp:
- sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Bây giờ hãy mở tệp cấu hình SSH để chỉnh sửa:
- sudo nano /etc/ssh/sshd_config
Tìm ChallengeResponseAuthentication
và đặt giá trị của nó thành yes
:
. . .
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication yes
. . .
Lưu và đóng tệp, sau đó khởi động lại SSH để tải lại các tệp cấu hình. Khởi động lại dịch vụ sshd
sẽ không đóng các kết nối mở hiện tại của chúng ta, nghĩa là bạn sẽ không có nguy cơ bị khóa ngoài bằng lệnh này:
- sudo systemctl restart sshd.service
Để kiểm tra mọi thứ có hoạt động cho đến nay hay không, hãy mở MỘT thiết bị đầu cuối KHÁC và thử đăng nhập qua SSH. Điều rất quan trọng là bạn phải giữ phiên SSH hiện tại của mình mở và thử với một phiên bổ sung, nếu không, bạn sẽ tự khóa mình ở một thời điểm nào đó và sẽ cần sử dụng bảng điều khiển web để đăng nhập lại.
Lưu ý: Nếu bạn đã tạo SSH key trước đó và đang sử dụng khóa này, bạn sẽ nhận thấy rằng bạn không phải nhập mật khẩu người dùng hoặc mã xác minh MFA. Điều này là do SSH key ghi đè lên tất cả các tùy chọn xác thực khác theo mặc định. Nếu không, bạn sẽ nhận được lời nhắc nhập mật khẩu và mã xác minh.
Tiếp theo, để bật khóa SSH làm một yếu tố và mã xác minh làm yếu tố thứ hai, chúng ta cần cho SSH biết yếu tố nào cần sử dụng và ngăn khóa SSH ghi đè lên tất cả các loại khác.
MFA vẫn không hoạt động nếu bạn đang sử dụng SSH key. Để làm cho SSH nhận biết MFA, hãy mở lại tệp cấu hình sshd
:
- sudo nano /etc/ssh/sshd_config
Thêm dòng sau vào cuối tệp. Điều này cho SSH biết phương pháp xác thực nào là bắt buộc. Chúng tôi cho SSH biết người dùng cần SSH key và mật khẩu hoặc mã xác minh (hoặc cả ba):
. . .
AuthenticationMethods publickey,password publickey,keyboard-interactive
Lưu và đóng tệp.
Tiếp theo, mở lại tệp cấu hình PAM sshd
:
- sudo nano /etc/pam.d/sshd
Tìm dòng @include common-auth
và chú thích nó bằng cách thêm ký tự #
làm ký tự đầu tiên trên dòng. Điều này cho PAM biết không cần nhắc nhập mật khẩu:
. . .
# Standard Un*x authentication.
#@include common-auth
. . .
Lưu và đóng tệp, sau đó khởi động lại SSH:
- sudo systemctl restart sshd.service
Bây giờ hãy thử đăng nhập lại vào máy chủ bằng một phiên/cửa sổ thiết bị đầu cuối khác. Không giống như lần trước, SSH sẽ yêu cầu mã xác minh của bạn. Nhập mã đó và bạn sẽ hoàn tất quá trình đăng nhập. Mặc dù không có dấu hiệu nào cho thấy SSH key của bạn đã được sử dụng, nhưng nỗ lực đăng nhập của bạn đã sử dụng hai yếu tố. Nếu bạn muốn xác minh điều này, bạn có thể thêm -v
(để chi tiết) sau lệnh SSH.
Công tắc -v
sẽ tạo ra đầu ra như thế này:
Example SSH output\. . .
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/sammy/.ssh/id_rsa
debug1: Server accepts key: pkalg rsa-sha2-512 blen 279
Authenticated with partial success.
debug1: Authentications that can continue: password,keyboard-interactive
debug1: Next authentication method: keyboard-interactive
Verification code:
Gần cuối đầu ra, bạn sẽ thấy SSH sử dụng SSH key của bạn rồi yêu cầu mã xác minh. Bây giờ bạn có thể đăng nhập qua SSH bằng SSH key và mật khẩu một lần. Nếu bạn muốn áp dụng cả ba loại xác thực, bạn có thể làm theo bước tiếp theo.
Xin chúc mừng, bạn đã thêm thành công yếu tố thứ hai khi đăng nhập từ xa vào máy chủ của mình qua SSH. Nếu đây là điều bạn muốn — sử dụng SSH key và mã thông báo TOTP để bật MFA cho SSH (đối với hầu hết mọi người, đây là cấu hình tối ưu) — thì bạn đã hoàn tất.
Sau đây là một số mẹo và thủ thuật để khôi phục, sử dụng tự động, v.v.
Trong Bước 3, chúng tôi đã liệt kê các loại xác thực được chấp thuận trong tệp sshd_config
:
publickey
(SSH key)password publickey
(mật khẩu)key-interactive
(mã xác minh)Mặc dù chúng tôi đã liệt kê ba yếu tố khác nhau, các tùy chọn chúng tôi đã chọn cho đến nay chỉ cho phép SSH key và mã xác minh. Nếu bạn muốn có cả ba yếu tố (SSH key, mật khẩu và mã xác minh), một thay đổi nhanh sẽ kích hoạt cả ba.
Mở tệp cấu hình sshd
của PAM:
- sudo nano /etc/pam.d/sshd
Xác định vị trí dòng bạn đã chú thích trước đó, #@include common-auth
, và bỏ chú thích dòng bằng cách xóa ký tự #
. Lưu và đóng tệp. Bây giờ, khởi động lại SSH một lần nữa:
- sudo systemctl restart sshd.service
Bằng cách bật tùy chọn @include common-auth, PAM hiện sẽ nhắc nhập mật khẩu ngoài việc kiểm tra khóa SSH và yêu cầu mã xác minh, mà chúng tôi đã làm việc trước đó. Bây giờ chúng ta có thể sử dụng thứ chúng ta biết (mật khẩu) và hai loại thứ khác nhau mà chúng ta có (khóa SSH và mã xác minh) qua hai kênh khác nhau (máy tính của bạn cho khóa SSH và điện thoại của bạn cho mã thông báo TOTP).
Cũng như với bất kỳ hệ thống nào mà bạn củng cố và bảo mật, bạn sẽ chịu trách nhiệm quản lý bảo mật đó. Trong trường hợp này, điều đó có nghĩa là không làm mất SSH key hoặc khóa bí mật TOTP của bạn và đảm bảo bạn có quyền truy cập vào ứng dụng TOTP của mình. Tuy nhiên, đôi khi có sự cố xảy ra và bạn có thể mất quyền kiểm soát các khóa hoặc ứng dụng mà bạn cần để truy cập.
Nếu bạn làm mất khóa bí mật TOTP, bạn có thể chia quá trình khôi phục thành một vài bước. Bước đầu tiên là đăng nhập lại mà không biết mã xác minh và bước thứ hai là tìm khóa bí mật hoặc tạo lại khóa để đăng nhập MFA thông thường. Điều này thường xảy ra nếu bạn mua điện thoại mới và không chuyển bí mật của mình sang ứng dụng xác thực mới.
Để vào sau khi mất khóa bí mật TOTP trên Droplet, bạn có thể sử dụng bảng điều khiển ảo từ bảng điều khiển để đăng nhập bằng tên người dùng và mật khẩu của mình. Điều này hiệu quả vì chúng tôi chỉ bảo vệ tài khoản người dùng của bạn bằng MFA cho các kết nối SSH. Các kết nối không phải ssh, chẳng hạn như đăng nhập bằng bảng điều khiển, không sử dụng mô-đun PAM của Google Authenticator.
Nếu bạn đang sử dụng hệ thống không phải Droplet, thì bạn có hai tùy chọn để lấy lại quyền truy cập:
Tùy chọn thứ hai kém an toàn hơn vì mục đích sử dụng MFA là để bảo vệ tất cả các kết nối SSH, nhưng đây là một biện pháp an toàn nếu bạn mất quyền truy cập vào ứng dụng xác thực MFA của mình.
Sau khi bạn đã đăng nhập, có hai cách để giúp lấy được bí mật TOTP:
Trong thư mục gốc của mỗi người dùng, khóa bí mật và cài đặt Google Authenticator được lưu trong tệp ~/.google-authenticator
. Dòng đầu tiên của tệp này là khóa bí mật. Một cách nhanh chóng để lấy khóa là thực hiện lệnh sau, lệnh này sẽ hiển thị dòng đầu tiên của tệp google-authenticator
(tức là khóa bí mật). Sau đó, lấy khóa bí mật đó và nhập thủ công vào ứng dụng TOTP:
- head -n 1 /home/sammy/.google_authenticator
Sau khi khôi phục được khóa hiện tại, bạn có thể nhập thủ công vào ứng dụng xác thực hoặc điền thông tin chi tiết có liên quan vào URL bên dưới và yêu cầu Google tạo mã QR để bạn quét. Bạn sẽ cần thêm tên người dùng, tên máy chủ, khóa bí mật từ tệp .google-authenticator
và sau đó là bất kỳ tên nào bạn chọn cho 'entry-name-in-auth-app' để dễ dàng xác định khóa này so với mã thông báo TOTP khác:
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/username@hostname%3Fsecret%3D16-char-secret%26issuer%3Dentry-name-in-auth-app
Nếu có lý do không sử dụng khóa hiện tại (ví dụ: không thể dễ dàng chia sẻ khóa bí mật với người dùng bị ảnh hưởng một cách an toàn), bạn có thể xóa tệp ~/.google-authenticator
ngay lập tức. Thao tác này sẽ cho phép người dùng đăng nhập lại chỉ bằng một yếu tố duy nhất, giả sử bạn chưa thực thi MFA bằng cách xóa tùy chọn nullok
. Sau đó, họ có thể chạy google-authenticator
để tạo khóa mới.
Nếu bạn cần đăng nhập vào máy chủ nhưng không có quyền truy cập vào ứng dụng TOTP để lấy mã xác minh, bạn vẫn có thể đăng nhập bằng mã khôi phục được hiển thị khi bạn tạo khóa bí mật lần đầu và là năm dòng cuối cùng của tệp .google-authenticator
. Lưu ý rằng các mã khôi phục này chỉ sử dụng một lần. Tuy nhiên, để thực hiện thao tác này, bạn cần cung cấp mã khôi phục khi không có quyền truy cập vào ứng dụng TOTP.
Nếu bạn muốn thay đổi cài đặt MFA sau khi cấu hình ban đầu, thay vì tạo cấu hình mới với cài đặt đã cập nhật, bạn chỉ cần chỉnh sửa tệp ~/.google-authenticator
. Các tùy chọn trong tệp này xuất hiện theo cách sau:
<secret key>
<options>
<recovery codes>
Các tùy chọn được đặt trong tệp này có một dòng trong phần tùy chọn; nếu bạn trả lời "no" cho một tùy chọn cụ thể trong quá trình thiết lập ban đầu, chương trình sẽ loại trừ tùy chọn tương ứng.
Sau đây là một số thay đổi bạn có thể thực hiện đối với tệp này:
"TOTP_AUTH
thành "HOTP_COUNTER 1
."DISALLOW_REUSE
."WINDOW_SIZE 17
."RATE_LIMIT 3 30
."RATE_LIMIT 3 30
và điều chỉnh các số. Số 3
trong bản gốc biểu thị số lần thử trong một khoảng thời gian và số 30
biểu thị thời gian tính bằng giây.Có thể có trường hợp một người dùng hoặc một vài tài khoản dịch vụ (tức là tài khoản do ứng dụng sử dụng, không phải con người) cần quyền truy cập SSH mà không bật MFA. Ví dụ: một số ứng dụng sử dụng SSH, như một số máy khách FTP, có thể không hỗ trợ MFA. Nếu ứng dụng không có cách nào để yêu cầu mã xác minh, yêu cầu có thể bị kẹt cho đến khi kết nối SSH hết thời gian chờ.
Để kiểm soát các yếu tố nào sẽ sử dụng cho người dùng, bạn có thể chỉnh sửa tệp /etc/pam.d/sshd
.
Để cho phép MFA cho một số tài khoản và chỉ SSH cho những tài khoản khác, hãy đảm bảo các cài đặt sau trong /etc/pam.d/sshd
đang hoạt động:
# PAM configuration for the Secure Shell service
# Standard Un*x authentication.
#@include common-auth
. . .
# Standard Un*x password updating.
@include common-password
auth required pam_google_authenticator.so nullok
Ở đây, @include common-auth
được chú thích vì cần phải tắt mật khẩu. Bạn không thể buộc MFA nếu một số tài khoản đã tắt MFA, vì vậy hãy để tùy chọn nullok
ở dòng cuối cùng.
Sau khi thiết lập cấu hình này, hãy chạy google-authenticator
với tư cách là bất kỳ người dùng nào cần MFA và không chạy nó cho những người dùng chỉ sử dụng SSH key.
Nhiều quản trị viên hệ thống sử dụng các công cụ quản lý cấu hình, như Puppet, Chef hoặc Ansible, để quản lý hệ thống của họ. Bạn có thể sử dụng một hệ thống như thế này để cài đặt và thiết lập khóa bí mật bất cứ khi nào người dùng mới tạo tài khoản.
google-authenticator
hỗ trợ các công tắc dòng lệnh để thiết lập tất cả các tùy chọn trong một lệnh duy nhất, không tương tác. Để xem tất cả các tùy chọn, bạn có thể nhập google-authenticator --help
. Dưới đây là lệnh sẽ thiết lập mọi thứ như đã nêu trong Bước 1:
- google-authenticator -t -d -f -r 3 -R 30 -w 3
Các tùy chọn được tham chiếu ở trên như sau:
Điều này cấu hình đầy đủ trình xác thực, lưu vào tệp và sau đó xuất khóa bí mật, mã QR và mã khôi phục. (Nếu bạn thêm cờ -q
, thì sẽ không có bất kỳ đầu ra nào.) Nếu bạn sử dụng lệnh này theo cách tự động, hãy đảm bảo rằng tập lệnh của bạn nắm bắt khóa bí mật và/hoặc mã khôi phục và cung cấp chúng cho người dùng.
Nếu bạn muốn buộc MFA cho tất cả người dùng, ngay cả khi đăng nhập lần đầu hoặc không muốn dựa vào người dùng để tạo khóa của họ, thì có một cách nhanh chóng để xử lý việc này. Bạn có thể sử dụng cùng một tệp .google-authenticator
cho mỗi người dùng vì không có dữ liệu cụ thể của người dùng nào được lưu trữ trong tệp.
Để thực hiện việc này, sau khi tạo tệp cấu hình, người dùng có đặc quyền cần sao chép tệp vào thư mục gốc của mọi thư mục gốc và thay đổi quyền của tệp đó thành người dùng phù hợp. Bạn cũng có thể sao chép tệp vào /etc/skel/
, tự động sao chép tệp vào thư mục gốc của mọi người dùng mới khi tạo.
Cảnh báo: Điều này có thể gây ra rủi ro bảo mật vì mọi người đều chia sẻ cùng một yếu tố thứ hai. Điều này có nghĩa là nếu tệp bị rò rỉ, thì giống như mọi người dùng chỉ có một yếu tố. Hãy cân nhắc điều này nếu bạn muốn sử dụng phương pháp này.
Một phương pháp khác để buộc tạo khóa bí mật của người dùng là sử dụng tập lệnh bash:
google-authenticator
cho họ sau khi kiểm tra xem tệp .google-authenticator
đã tồn tại chưa.Để đảm bảo tập lệnh chạy khi người dùng đăng nhập, bạn có thể đặt tên là .bash_login
và đặt ở gốc thư mục gốc của họ.
Trong hướng dẫn này, bạn đã thêm hai yếu tố (SSH key + mã thông báo MFA) trên hai kênh (máy tính + điện thoại) vào máy chủ của mình. Bạn đã khiến tác nhân bên ngoài rất khó có thể tấn công bằng cách dùng vũ lực để xâm nhập vào máy của bạn thông qua SSH và tăng đáng kể tính bảo mật của máy.