Cài đặt xác minh 2 bước khi SSH trên Ubuntu 20.04-22.04
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 có.
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 .ChallengeResponseAuthentication
KbdInteractiveAuthentication
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 .ChallengeResponseAuthentication
yes
@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 có.
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 .ChallengeResponseAuthentication
KbdInteractiveAuthentication
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.ChallengeResponseAuthentication
yes
@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)