Cài đặt xác minh 2 bước khi SSH trên Ubuntu 20.04-22.04

Tác giả: 30/12/2023

Hướng dẫn này sẽ chỉ cho bạn cách thiết lập xác thực hai yếu tố SSH trên máy chủ Ubuntu bằng Google Authenticator nổi tiếng. Nó sẽ cải thiện đáng kể tính bảo mật của dịch vụ SSH trên máy chủ Ubuntu của bạn.

1 – Cài đặt và định cấu hình Google Authenticator trên Ubuntu Server

Đăng nhập vào máy chủ Ubuntu của bạn và chạy lệnh sau để cài đặt Google Authenticator từ kho lưu trữ gói Ubuntu mặc định.

apt update && apt upgrade -y
apt install -y libpam-google-authenticator

Sau đó chạy lệnh để tạo khóa bí mật mới trong thư mục chính của bạn

google-authenticator

Khi được hỏi “Bạn có muốn mã thông báo xác thực dựa trên thời gian không?” Trả lời y

Sau đó, bạn sẽ thấy mã QR mà bạn có thể quét bằng ứng dụng TOTP trên điện thoại của mình. Có hai ứng dụng mà tôi khuyên bạn nên:

  • Google Authenticator là ứng dụng di động TOTP nổi tiếng nhất. Bạn có thể cài đặt nó thông qua Google Play hoặc cửa hàng ứng dụng Apple trên điện thoại di động của mình.

Quét mã QR bằng Google Authenticator hoặc FreeOTP trên điện thoại di động của bạn. Lưu ý rằng bạn cần phóng to cửa sổ thiết bị đầu cuối để quét mã QR đầy đủ.

Mã QR đại diện cho khóa bí mật, chỉ được biết bởi máy chủ SSH và ứng dụng di động TOTP của bạn. Sau khi quét mã QR, bạn có thể thấy mật khẩu dùng một lần gồm sáu chữ số trên điện thoại của mình. Theo mặc định, nó thay đổi cứ sau 30 giây. Bạn sẽ cần nhập mật khẩu một lần này sau đó để đăng nhập vào máy chủ Ubuntu thông qua SSH.

Sau khi quét QR liên kết với app, bạn hãy lấy mã hiện và nhập vào , ở đây mã của mình là 946603

y-y-y-y

2 – Định cấu hình SSH Daemon để sử dụng Google Authenticator

  • Xác thực mật khẩu với 2FA
  • Xác thực khóa công khai với 2FA

Xác thực mật khẩu với 2FA

Nếu bạn không sử dụng khóa SSH, hãy làm theo hướng dẫn bên dưới.

Mở tệp cấu hình máy chủ SSH.

nano /etc/ssh/sshd_config

Tìm hai tham số sau trong tệp và đảm bảo cả hai tham số đều được đặt thành .

UsePAM yes

ChallengeResponseAuthentication yes

Lưu ý: Trên Ubuntu 22.04, bạn nên sử dụng hai dòng sau để thay thế. được đổi thành .ChallengeResponseAuthenticationKbdInteractiveAuthentication

UsePAM yes 

KbdInteractiveAuthentication yes

PAM là viết tắt của mô-đun xác thực có thể cắm được. Nó cung cấp một cách dễ dàng để cắm phương thức xác thực khác nhau vào hệ thống Linux của bạn. Để bật Google Authenticator với SSH, xác thực PAM và Challenge-Response phải được bật.

Nếu bạn muốn cho phép người dùng root sử dụng 2FA:

PermitRootLogin yes

Lưu và đóng tệp. Tiếp theo, chỉnh sửa tệp quy tắc PAM cho SSH daemon.

nano /etc/pam.d/sshd

Ở đầu tệp này, bạn có thể thấy dòng sau, cho phép xác thực mật khẩu khi được đặt thành .ChallengeResponseAuthenticationyes

@include common-auth

Để bật 2FA trong SSH, hãy thêm hai dòng sau.

# two-factor authentication via Google Authenticator
auth   required   pam_google_authenticator.so

Lưu và đóng tệp. Sau đó khởi động lại SSH daemon để thay đổi có hiệu lực.

systemctl restart ssh

Hiệu lực

Xác thực khóa công khai với 2FA

Nếu bạn sử dụng khóa SSH để đăng nhập vào máy chủ SSH, hãy làm theo hướng dẫn bên dưới.

Mở tệp cấu hình máy chủ SSH.

nano /etc/ssh/sshd_config

Tìm hai tham số sau trong tệp và đảm bảo cả hai tham số đều được đặt thành .

UsePAM yes

ChallengeResponseAuthentication yes

Lưu ý: Trên Ubuntu 22.04, bạn nên sử dụng hai dòng sau. được đổi thành .ChallengeResponseAuthenticationKbdInteractiveAuthentication

UsePAM yes 

KbdInteractiveAuthentication yes

PAM là viết tắt của mô-đun xác thực có thể cắm được. Nó cung cấp một cách dễ dàng để cắm phương thức xác thực khác nhau vào hệ thống Linux của bạn. Để bật Google Authenticator với SSH, xác thực PAM và Challenge-Response phải được bật.

Nếu bạn muốn cho phép người dùng root sử dụng 2FA:

PermitRootLogin yes

Tiếp theo, thêm dòng sau vào cuối tệp này. Điều này nói với SSH daemon rằng người dùng phải vượt qua cả xác thực khóa công khai và xác thực phản hồi thách thức.

AuthenticationMethods publickey,keyboard-interactive

Lưu và đóng tệp. Tiếp theo, chỉnh sửa tệp quy tắc PAM cho SSH daemon.

nano /etc/pam.d/sshd

Ở đầu tệp này, bạn có thể thấy dòng sau, cho phép xác thực mật khẩu khi được đặt thành . Chúng ta cần bình luận dòng này, vì chúng ta sẽ sử dụng khóa SSH thay vì mật khẩu.ChallengeResponseAuthenticationyes

@include common-auth

Để bật 2FA trong SSH, hãy thêm hai dòng sau.

# two-factor authentication via Google Authenticator
auth   required   pam_google_authenticator.so

Lưu và đóng tệp. Sau đó khởi động lại SSH daemon để thay đổi có hiệu lực.

systemctl restart ssh

Ghi chú

  • Mỗi người dùng trên máy chủ Ubuntu của bạn cần chạy lệnh và quét mã QR để sử dụng xác thực hai yếu tố. Nếu người dùng không thiết lập và cố gắng đăng nhập, thông báo lỗi “Quyền bị từ chối (tương tác bàn phím)” sẽ được hiển thị.google-authenticator
  • Mã cào khẩn cấp là mã dự phòng của bạn. Nếu bị mất điện thoại, bạn có thể nhập một trong năm mã cào khẩn cấp thay vì mật khẩu dùng một lần để hoàn tất quy trình xác minh hai bước. Các mã này chỉ dành cho sử dụng một lần.
  • Nếu bạn muốn thay đổi khóa bí mật, chỉ cần đăng nhập vào máy chủ của bạn và chạy lại lệnh để cập nhật tệp.google-authenticator~/.google_authenticator
  • Vì mật khẩu một lần được tính bằng khóa bí mật được chia sẻ và thời gian hiện tại, vì vậy bạn nên bật đồng bộ hóa thời gian NTP trên máy chủ Ubuntu của mình để giữ thời gian chính xác, mặc dù trước đây chúng tôi đã cho phép sai lệch thời gian 4 phút giữa máy chủ Ubuntu và ứng dụng dành cho thiết bị di động. Máy chủ Ubuntu của bạn và ứng dụng di động TOTP có thể sử dụng các múi giờ khác nhau.

Cách tắt xác thực hai yếu tố SSH

Chỉnh sửa tệp quy tắc PAM cho trình nền SSH.

sudo nano /etc/pam.d/sshd

Comment ra dòng sau.

auth   required   pam_google_authenticator.so

Lưu và đóng tệp. Nếu bạn đã thêm dòng sau vào tệp,/etc/ssh/sshd_config

AuthenticationMethods publickey,keyboard-interactive

Xóa phương thức xác thực.keyboard-interactive

AuthenticationMethods publickey

Lưu và đóng tệp. Sau đó khởi động lại SSH daemon.

systemctl restart ssh

Tổng kết

Hy vọng hướng dẫn này đã giúp bạn thiết lập xác thực hai yếu tố SSH trên máy chủ Ubuntu 22.04 và 20.04. Hẹn gặp lại các bạn tại các bài viết sau tại wiki.nhanhoa.com.

Nguồn:

Thiết lập xác thực hai yếu tố SSH (2FA) trên máy chủ Ubuntu 22.04 / 20.04 (linuxbabe.com)