Việc bảo mật SSH chỉ với mật khẩu (password) không còn an toàn trong thời đại ngày nay. Tin tặc có thể dò mật khẩu (brute-force) hoặc khai thác lỗ hổng để truy cập trái phép vào hệ thống của bạn. Vì vậy, giải pháp xác thực hai yếu tố (2FA – Two-Factor Authentication) là lựa chọn hiệu quả để tăng cường bảo mật.
Trong bài viết này, chúng ta sẽ tìm hiểu cách cấu hình SSH kết hợp Google Authenticator trên Linux (ví dụ CentOS, Rocky Linux hoặc RHEL). Sau khi hoàn thành, khi đăng nhập SSH bạn sẽ cần nhập mã OTP (TOTP) trên ứng dụng Google Authenticator ngoài mật khẩu SSH.
1. Cài đặt gói cần thiết
Đầu tiên, hãy cài đặt các gói hỗ trợ Google Authenticator và đồng bộ thời gian (TOTP phụ thuộc chính xác vào đồng hồ hệ thống):
-
epel-release
: Bật repo EPEL để cài các gói bổ sung. -
google-authenticator
: Gói PAM plugin để tạo và kiểm tra mã OTP. -
qrencode
: Dùng để hiển thị QR code ngay trên terminal. -
chrony
: Giữ cho hệ thống luôn đồng bộ thời gian (rất quan trọng với OTP).
2. Khởi tạo mã OTP cho user SSH
Tiếp theo, tạo secret key và QR code cho user root
(hoặc user khác nếu bạn dùng để SSH):
Giải thích các tùy chọn:
-
-t
: Tạo mã theo cơ chế TOTP (thay đổi mỗi 30s). -
-d
: Chặn sử dụng lại mã OTP cũ. -
-f
: Tạo file cấu hình mới, ghi đè file cũ nếu có. -
-r 3 -R 30
: Giới hạn tối đa 3 lần thử trong 30 giây. -
-W
: Cho phép sử dụng mã “emergency scratch codes” trong trường hợp mất điện thoại.
Sau khi chạy lệnh, terminal sẽ hiển thị QR code và secret key. Bạn cần:
Mở ứng dụng Google Authenticator / Authy trên điện thoại → quét QR code → lưu tài khoản.
3. Cấu hình PAM cho SSH
Chỉnh sửa file PAM /etc/pam.d/sshd
:
Thêm dòng sau vào đầu phần auth:
Lưu ý: Dòng pam_google_authenticator.so
phải đứng trước password-auth
để hệ thống yêu cầu OTP trước, rồi mới tới mật khẩu.
4. Cấu hình SSHD
Tiếp theo, cấu hình SSHD để kích hoạt PAM và xác thực OTP. Mở file:
Thêm hoặc chỉnh sửa các dòng sau:
-
UsePAM yes
: Cho phép dùng PAM trong SSH. -
KbdInteractiveAuthentication yes
: Bật xác thực dạng “keyboard-interactive”. -
PasswordAuthentication yes
: Cho phép nhập mật khẩu Linux user. -
AuthenticationMethods keyboard-interactive
: Bắt buộc qua PAM → khi login sẽ cần OTP + password.
5. Kiểm tra và restart SSHD
Trước khi restart SSHD, hãy kiểm tra cú pháp để tránh khóa chính mình:
Nếu không báo lỗi, restart dịch vụ:
6. Test đăng nhập SSH
Giờ bạn thử SSH từ máy client:
Bạn sẽ thấy trình tự:
Nhập OTP từ Google Authenticator trước, sau đó nhập mật khẩu Linux. Nếu đúng, bạn sẽ vào được hệ thống.
Kết luận
Với các bước trên, bạn đã cấu hình thành công SSH kết hợp Google Authenticator để tăng cường bảo mật. Giờ đây, kẻ tấn công không thể chỉ dùng mật khẩu để đăng nhập nữa, mà còn cần điện thoại của bạn để lấy mã OTP.
Đây là một lớp bảo vệ cực kỳ quan trọng khi quản trị server. Bạn nên áp dụng ngay cho các máy chủ production hoặc VPS chứa dữ liệu nhạy cảm.