Cấu hình bảo mật SSH: Sử dụng 2 Factor Authentication trên Ubuntu 22.04

4197
15-06-2023
Cấu hình bảo mật SSH: Sử dụng 2 Factor Authentication trên Ubuntu 22.04

Giới thiệu

SSH mặc định dùng mật khẩu để xác minh người dùng, nhưng nhiều người thường khuyên dùng SSH key thay vì mật khẩu vì nó an toàn hơn. Tuy nhiên, SSH key chỉ là một hình thức xác minh duy nhất. Người tấn công có thể ăn cắp SSH key giống như họ có thể đoán được mật khẩu của bạn. Khi có SSH key hoặc mật khẩu, họ có thể truy cập vào hệ thống của bạn từ xa.

Trong bài viết này, chúng ta sẽ học cách thiết lập xác thực đa yếu tố để tăng cường bảo mật. Xác thực đa yếu tố (MFA) hoặc xác thực hai yếu tố (2FA) yêu cầu nhiều hơn một hình thức xác minh khi đăng nhập. Điều này có nghĩa là người tấn công phải vượt qua nhiều rào cản hơn, như việc lấy được máy tính và điện thoại của bạn.

Có nhiều hình thức xác minh khác nhau, bao gồm:

  • Ví dụ như mật khẩu hoặc câu trả lời cho câu hỏi bảo mật. 
  • Hay là một ứng dụng xác thực hoặc mã token bảo mật. 
  • Cũng có thể là dấu vân tay hoặc giọng nói của bạn.

Một hình thức xác minh phổ biến là sử dụng ứng dụng OATH-TOTP, ví dụ như Google Authenticator. OATH-TOTP (Open Authentication Time-Based One-Time Password) là một tiêu chuẩn mở tạo ra mật khẩu dùng một lần, thường là một số gồm sáu chữ số, và được cập nhật sau mỗi 30 giây.

Bài viết này sẽ hướng dẫn cách kích hoạt xác thực SSH bằng ứng dụng OATH-TOTP kết hợp với SSH key. Đăng nhập vào máy chủ của bạn qua SSH sẽ yêu cầu hai hình thức xác minh trên hai kênh khác nhau, giúp tăng cường an ninh hơn so với chỉ sử dụng mật khẩu hoặc SSH key.

>> Tìm hiểu thêm: SSH Key là gì? Hướng dẫn cách tạo và sử dụng SSH Key đơn giản

Điều kiện

Để thực hiện theo hướng dẫn này, bạn sẽ cần có:

  • Một máy chủ Ubuntu 22.04 và non-root user có đặc quyền sudo. 
  • Điện thoại thông minh hoặc máy tính bảng đã cài đặt ứng dụng OATH-TOTP, chẳng hạn như Google Authenticator. 
  • Ngoài ra, bạn cũng có thể sử dụng ứng dụng dòng lệnh Linux có tên 'oathtool' để tạo mã OATH-TOTP. Nó có sẵn trong các kho phân phối khác nhau  

Bước 1 — Cài đặt PAM của Google

Trong bước này, chúng ta sẽ cài đặt và 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ớ cache của kho lưu trữ Ubuntu:

$ sudo apt-get update

Tiếp theo, cài đặt PAM:

$ sudo apt-get install libpam-google-authenticator

Với PAM được cài đặt, chúng tôi 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 xác thực hai yếu tố. Khóa này được tạo trên cơ sở 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ước tiếp theo chạy ứng dụng google-authenticator:

$ google-authenticator

Sau khi bạn chạy lệnh thì ứng dụng sẽ hỏi một số câu hỏi:

Output

Do 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 dựa trên thời gian hoặc tuần tự. Sử dụng mã thông báo tuần tự có nghĩa là mã bắt đầu từ một điểm nhất định và sau đó tăng dần mã sau mỗi lần sử dụng. Sử dụng mã thông báo dựa trên thời gian có nghĩa là mã thay đổi sau một khung thời gian nhất định. Chúng ta sẽ dùng mã dựa trên thời gian vì đó là những gì mà các ứng dụng như Google Authenticator đang sử dụng, vì vậy hãy trả lời y cho câu hỏi này.

Sau khi trả lời câu hỏi này, nhiều thông tin sẽ hiển thị, bao gồm một 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 trên mã QR để nhận phiên bản nhỏ hơn. Một khi nó được thêm vào, bạn sẽ thấy một mã gồm sáu chữ số thay đổi mỗi 30 giây trong ứng dụng của bạn.

Lưu ý: Hãy chắc chắn bạn ghi lại khóa bí mật, mã xác minh, và mã phục hồi ở một nơi an toàn, như trình quản lý mật khẩu. Các mã phục hồi là cách duy nhất để lấy lại quyền truy cập.

Các câu hỏi còn lại giúp PAM hiểu cách hoạt động:

Output

Do you want me to update your "~/.google_authenticator" file (y/n)y

Câu hỏi là bạn có muốn ghi khóa và các tùy chọn vào tệp ~/.google_authenticator. Nếu bạn nói không, chương trình sẽ thoát và không có gì được ghi vào, điều đó có nghĩa là trình xác thực sẽ không hoạt động:

Output

Do 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 lặp 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 kẻ tấn công lấy mã bạn vừa sử dụng và đăng nhập bằng mã đó:

Output

By 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

Nếu trả lời có ở đây nghĩa cho phép tối đa 17 mã hợp lệ trong khoảng thời gian bốn phút đang di chuyển. Còn trả lời không, bạn giới hạn ở 3 mã hợp lệ trong khoảng thời gian kéo dài 1 phút 30 giây. Trừ khi bạn tìm thấy vấn đề với cửa sổ 1 phút 30 giây, 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ữ ở thư mục gốc của thư mục chính của bạn:

Output

If 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

Rate limiting nghĩa là một kẻ tấn công từ xa chỉ có thể thử đoán một số lần nhất định trước khi bị buộc phải chờ một khoảng thời gian trước khi có thể thử lại. Nếu bạn chưa từng cấu hình rate limiting trực tiếp vào SSH trước đó, việc thực hiện nó ngay bây giờ là một kỹ thuật tăng cường bảo mật hiệu quả.

💡Lưu ý: Khi bạn hoàn tất quá trình 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 sang một vị trí đáng tin cậy. Từ đó, bạn có thể triển khai nó trên các hệ thống khác hoặc triển khai lại sau khi sao lưu.

Bây giờ khi PAM của Google đã được cài đặt và cấu hình, bước tiếp theo là 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 đó cấu hình SSH để sử dụng.

Bước 2 — Cấu hình OpenSSH để dùng MFA/2FA

Khi chúng ta tiến hành thay đổi SSH thông qua SSH, điều rất quan trọng là không bao giờ đóng kết nối SSH ban đầu. Thay vì đóng, hãy mở một phiên SSH khác để thử nghiệm. Lý do là để tránh tình trạng tự khóa mình ra khỏi máy chủ nếu có lỗi xảy ra trong quá trình cấu hình SSH. Khi mọi thứ hoạt động tốt, bạn có thể an tâm đóng các phiên làm việc. Một biện pháp an toàn khác là tạo một bản sao lưu của các tệp hệ thống mà bạn sẽ chỉnh sửa, vì vậy nếu có vấn đề gì xảy ra, bạn có thể quay trở lại tệp gốc và bắt đầu lại với cấu hình mới từ đầu.

Đầu tiên, hãy tạo một bản sao lưu của tệp cấu hình sshd:

$ sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.bak

Bây giờ mở file lên dùng vim hoặc trình chỉnh sửa văn bản yêu thích của bạn:

$ sudo vim /etc/pam.d/sshd 

Thêm dòng sau vào cuối tệp:

Cấu hình bảo mật SSH: Sử dụng 2 Factor Authentication trên Ubuntu 22.04 - Ảnh 11.

Từ "nullok" ở cuối dòng cho PAM biết rằng phương pháp xác thực này không bắt buộc. Điều này cho phép người dùng không sử dụng mã thông báo OATH-TOTP vẫn có thể đăng nhập chỉ bằng cách sử dụng khóa SSH 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 để làm cho MFA trở nên bắt buộc. Dòng thứ hai với pam_permit.so cần thiết để 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 pháp cần một thành công (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" trả về một bỏ qua (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 quá trình 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.

Đầu tiên, hãy tạo một bản sao lưu của tệp:

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 

Bây giờ mở file cấu hình SSH để chỉnh sửa:

$ sudo vim /etc/ssh/sshd_config 

Tìm kiếm KbdInteractiveAuthentication và đặt giá trị thành yes:

. . . 

# Change to yes to enable challenge-response passwords (beware issues with  

# some PAM modules and threads) 

KbdInteractiveAuthentication yes

. . .

Lưu và đóng file, sau đó khởi động lại SSH để reload file cấu hình. Việc khởi động lại dịch vụ sshd sẽ không đóng các kết nối đang mở hiện tại , nghĩa là bạn sẽ không gặp rủi ro khi dùng lệnh này:

$ sudo systemctl restart sshd.service 

Để kiểm tra xem có hoạt động hay không thì 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ữ cho phiên SSH hiện tại của mình luôn mở và thử nghiệm một phiên bổ sung, nếu không bạn sẽ tự lock và sẽ cần sử dụng bảng điều khiển web để quay lại.

💡 Lưu ý: Nếu bạn đã từng tạo một khóa SSH và đang sử dụng nó, bạn sẽ thấy rằng bạn không phải nhập mật khẩu của người dùng hoặc mã xác minh MFA. Điều này là do mặc định, khóa SSH sẽ ghi đè lên tất cả các tùy chọn xác thực khác. Ngược lại, bạn nên 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 sẽ sử dụng ngăn khóa SSH ghi đè tất cả các loại khác.

Bước 3 — Làm cho SSH nhận biết MFA

MFA vẫn không hoạt động nếu bạn đang sử dụng và khóa SSH. Để SSH nhận biết MFA, hãy mở lại tệp cấu hình sshd :

$ sudo vim /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 thức xác thực nào được yêu cầu. Chúng tôi nói với SSH rằng người dùng cần có khóa SSH và mật khẩu hoặc mã xác minh (hoặc cả ba):

Cấu hình bảo mật SSH: Sử dụng 2 Factor Authentication trên Ubuntu 22.04 - Ảnh 13.

Lưu và đóng file.

Tiếp theo mở file cấu hình PAM sshd :

$ sudo nano /etc/pam.d/sshd 

Tìm dòng @include common-auth và nhận xét nó bằng cách thêm một ký tự # làm ký tự đầu tiên trên dòng. Điều này yêu cầu PAM không 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 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ào bạn sẽ hoàn thành việc đăng nhập. Mặc dù không có dấu hiệu cho thấy khóa SSH của bạn đã được sử dụng nhưng lần đă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 sau lệnh SSH.

Option -v sẽ cho hiển thị như sau:

Cấu hình bảo mật SSH: Sử dụng 2 Factor Authentication trên Ubuntu 22.04 - Ảnh 14.

Ở cuối đầu ra, bạn sẽ thấy nơi SSH sử dụng khóa SSH của bạn và sau đó yêu cầu mã xác minh.Giờ đây, bạn có thể đăng nhập qua SSH bằng khóa SSH và mật khẩu dùng một lần. Nếu bạn muốn thực thi cả ba loại xác thực, bạn có thể làm theo bước tiếp theo.

Vậy là 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.

Sau đây là một số mẹo và thủ thuật để khôi phục, sử dụng tự động, v.v.

Bước 4 — Thêm yếu tố thứ ba (Tùy chọn)

Ở bước 3, chúng ta đã liệt kê các loại xác thực được phê duyệt trong tệp sshd_config:
  1. publickey (SSH key) 
  2. password publickey (password) 
  3. keyboard-interactive (verification code)

Nếu bạn muốn có cả ba yếu tố (khóa SSH, mật khẩu và mã xác thực), một thay đổi nhanh sẽ kích hoạt cả ba.

Mở file cầu hình PAM sshd :

$ sudo vim /etc/pam.d/sshd 

Xác định vị trí dòng bạn đã comment trước đó, #@include common-auth và bỏ ghi chú dòng bằng cách xóa ký tự #. Lưu và đóng tập tin. Bây giờ một lần nữa, khởi động lại SSH:

sudo systemctl restart sshd.service 

Bằng cách bật tùy chọn @include common-auth, giờ đây PAM 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.Giờ đây, chúng ta có thể sử dụng mật khẩu, SSH và mã xác minh trên 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).

Bước 5 — Khôi phục quyền truy cập vào Google MFA (tùy chọn)

Mất khóa bí mật TOTP

Nếu bạn mất khóa bí mật TOTP của mình, bạn có thể chia quá trình khôi phục thành vài bước. Bước đầu tiên là truy cập lại mà không cần biết mã xác minh, và bước thứ hai là tìm kiếm khóa bí mật hoặc tạo lại nó cho việc đăng nhập MFA thông thường. Điều này thường xảy ra khi bạn có điện thoại mới và không chuyển các khóa bí mật sang ứng dụng xác thực mới.

Nếu bạn đang sử dụng hệ thống không phải Droplet, thì bạn có hai lựa chọn để lấy lại quyền truy cập:

Truy cập Console (cục bộ/không qua SSH) vào hệ thống (thông thường là trực tiếp hoặc thông qua hệ thống như iDrac) Có một người dùng khác không bật MFA

Lựa chọn thứ hai là lựa chọn kém an toàn hơn vì mục đích của việc sử dụng MFA là tăng cường tất cả các kết nối SSH, nhưng đây là một biện pháp dự phòng 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.

Một khi bạn đã đăng nhập, có hai cách để lấy lại khóa bí mật TOTP:

Khôi phục khóa hiện tại Tạo một khóa mới

Trong thư mục home của mỗi người dùng, khóa bí mật và các cài đặt Google Authenticator được lưu trong một tệp có tên ~/.google-authenticator. Dòng đầu tiên của tệp này chính 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, 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 nó vào ứng dụng TOTP:

$ head -n 1 /home/sammy/.google_authenticator 

Sau khi bạn đã khôi phục khóa hiện tại của mình, bạn có thể nhập thủ công nó vào ứng dụng xác thực của mình hoặc điền các thông tin liên quan vào URL dưới đây và để Google tạo ra một mã QR cho 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 đó bất kỳ tên nào của bạn chọn cho 'entry-name-in-auth-app' để dễ dàng phân biệt khóa này so với một mã token TOTP khác:

🔗 https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/`username`@`hostname`%3Fsecret%3D`16-char-secret`%26issuer%3D`entry-name-in-auth-app`

Nếu có lý do không sử dụng khóa hiện hữu (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 hẳn tệp ~/.google-authenticator. Điều này sẽ cho phép người dùng đăng nhập lại chỉ chỉ cần xác thực một yếu tố, giả sử bạn chưa áp dụng MFA bằng cách loại bỏ tùy chọn nullok. Sau đó, bạn có thể chạy google-authenticator để tạo ra một khóa mới.

Mất Quyền Truy Cập vào Ứng Dụng TOTP

Nếu bạn cần đăng nhập vào máy chủ của mình nhưng không có quyền truy cập vào ứng dụng TOTP để lấy mã xác minh của mình, bạn vẫn có thể đăng nhập bằng cách sử dụng các mã khôi phục được hiển thị khi bạn lần đầu tiên tạo khóa bí mật của mình, và là năm dòng cuối cùng của tệp ~/.google-authenticator. Lưu ý rằng những mã khôi phục này chỉ sử dụng một lần. Tuy nhiên, để điều này hoạt động, bạn cần phải có các mã khôi phục khi bạn không có quyền truy cập vào ứng dụng TOTP.

Bước 6 — Thay Đổi Cài Đặt Xác Thực (tùy chọn)

Nếu bạn muốn thay đổi cài đặt MFA sau khi cấu hình ban đầu, thay vì tạo ra một cấu hình mới với các 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:

Cấu hình bảo mật SSH: Sử dụng 2 Factor Authentication trên Ubuntu 22.04 - Ảnh 16.

Các tùy chọn được đặt trong tệp này sẽ có một dòng trong phần tùy chọn; nếu bạn trả lời “không” 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ương ứng.

Dưới đây là một số thay đổi bạn có thể thực hiện với tệp này:

Để kích hoạt các mã tuần tự thay vì mã dựa trên thời gian, thay đổi dòng "TOTP_AUTH" thành "HOTP_COUNTER 1".

Để cho phép sử dụng nhiều lần single code, hãy xóa dòng "DISALLOW_REUSE"

Để tăng thời gian hết hạn mã lên 4 phút, thêm dòng "WINDOW_SIZE 17"

Để vô hiệu hóa nhiều lần đăng nhập thất bại (giới hạn tốc độ), xóa dòng "RATE_LIMIT 3 30"

Để thay đổi ngưỡng giới hạn tốc độ, tìm dòng "RATE_LIMIT 3 30" và điều chỉnh các số. Số 3 trong bản gốc chỉ số lần thử trong một khoảng thời gian, và số 30 chỉ thời gian tính bằng giây. 

 Để vô hiệu hóa việc sử dụng mã khôi phục, hãy xóa năm mã tám chữ số ở phía dưới cùng của tệp.  

Bước 7 — Tránh MFA cho Một Số Tài Khoản (tùy chọn)

Có thể có tình huống mà một người dùng duy nhất hoặc một số tài khoản dịch vụ (tức là, các tài khoản được sử dụng bởi các ứng dụng, không phải con người) cần quyền truy cập SSH mà không cần kích hoạt MFA. Ví dụ, một số ứng dụng sử dụng SSH, như một số khách hàng FTP, có thể không hỗ trợ MFA. Nếu một ứng dụng không có cách yêu cầu mã xác minh, yêu cầu có thể bị mắc kẹt cho đến khi kết nối SSH hết thời gian.

Để cho phép MFA cho một số tài khoản và SSH chỉ cho những người khác, hãy đảm bảo các cài đặt sau trong /etc/pam.d/sshd đang hoạt động:

Cấu hình bảo mật SSH: Sử dụng 2 Factor Authentication trên Ubuntu 22.04 - Ảnh 17.

Trong trường hợp này, @include common-auth bị ghi chú lại vì cần phải vô hiệu hóa mật khẩu. Bạn không thể buộc sử dụng xác thực đa yếu tố (MFA) nếu một số tài khoản đã tắt MFA, vì thế hãy để tùy chọn nullok ở dòng cuối.

Sau khi thiết lập cấu hình này, hãy thực thi google-authenticator với bất kỳ người dùng nào cần MFA và không thực thi nó với những người dùng chỉ sử dụng khóa SSH.

Bước 8 — Tự động hóa cài đặt với Quản lý Cấu hình (tùy chọn)

Nhiều quản trị 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 hệ thống như vậy để cài đặt và thiết lập một khóa bí mật mỗi khi có người dùng mới tạo tài khoản.

google-authenticator hỗ trợ các chuyển đổi dòng lệnh để thiết lập tất cả các tùy chọn trong một lệnh không tương tác. Để xem tất cả các tùy chọn, bạn có thể gõ google-authenticator --help. Dưới đây là lệnh sẽ thiết lập mọi thứ như đã mô tả trong Bước 1:

$ google-authenticator -t -d -f -r 3 -R 30 -w 3 

Các tùy chọn được đề cập ở trên như sau:

  • t => Bộ đếm dựa trên thời gian 
  • -d => Không cho phép sử dụng lại mã token 
  • -f => Bắt buộc ghi cài đặt vào tệp mà không cần hỏi người dùng 
  • -r => Số lần thử nhập mã đúng 
  • -R => Thời gian (tính bằng giây) mà người dùng có thể thử nhập mã đúng 
  • -w => Số lượng mã hợp lệ tại một thời điểm (điều này liên quan đến khoảng thời gian từ 1:30 phút đến 4 phút có mã hợp lệ)

Điều này hoàn toàn cấu hình bộ xác thực, lưu nó vào một tệp, sau đó xuất khóa bí mật, mã QR và mã khôi phục. (Nếu bạn thêm flag -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 script 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.

Bước 9 — Buộc MFA cho Tất cả Người Dùng (tùy chọn)

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 tiên, hoặc không muốn dựa vào người dùng để tạo khóa của họ, có một cách nhanh chóng để xử lý điều 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 được lưu trong tệp.

Để làm điều này, sau khi tạo tệp cấu hình, người dùng có quyền cần phải sao chép tệp đến gốc của mỗi thư mục nhà và thay đổi quyền của nó cho người dùng thích hợp. Bạn cũng có thể sao chép tệp đến /etc/skel/, tự động sao chép tệp đến thư mục nhà của mỗi người dùng mới khi tạo.

⛔ Cảnh báo: Đây có thể là một rủi ro về 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 nó bị rò rỉ, nó giống như mọi người dùng chỉ có một yếu tố. Hãy xem xét điều này nếu bạn muốn sử dụng cách tiếp cận 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 một script bash :

  • Tạo một mã token TOTP, 
  • Nhắc họ tải ứng dụng Google Authenticator và quét mã QR sẽ được hiển thị. 
  • Chạy ứng dụng google-authenticator cho họ sau khi kiểm tra xem tệp .google-authenticator đã tồn tại hay chưa. 
  • Để đảm bảo script chạy khi người dùng đăng nhập, bạn có thể đặt tên cho nó là .bash_login và đặt nó ở gốc thư mục nhà của họ. 

Kết luận

Trong hướng dẫn này, bạn đã thêm hai yếu tố (khóa SSH + mã token MFA) trên hai kênh (máy tính của bạn + điện thoại của bạn) vào máy chủ của bạn. Bạn đã khiến việc xâm nhập bằng cách dùng sức mạnh vào máy của bạn qua SSH trở nên rất khó khăn và tăng đáng kể độ bảo mật của máy của bạn.

>> Có thể bạn quan tâm: 4 cách cấu hình để bảo mật cho SSH

SHARE