Xác thực 2 lớp hay còn được viết tắt là 2FA (Two-factor authentication) bổ sung một bước khi đăng nhập. Nếu không có 2FA, việc đăng nhập của bạn chỉ đơn thuần là nhập Username và Password – thứ duy nhất bảo mật cho tài khoản của bạn. Do đó việc thêm một lớp bảo vệ nữa về lí thuyết sẽ làm cho tài khoản của bạn trở nên an toàn hơn.
Có một cách để tăng cường bảo mật cho bất kỳ máy chủ Linux nào là bật xác thực hai yếu tố (2FA) cho các đăng nhập SSH. Thiết lập này thì khá dễ dàng và giúp các kết nối vào máy chủ bạn được toàn hơn thay vì sử dụng nhập mật khẩu để xác thực SSH.
Những gì bạn cần:
- Một máy chủ đang chạy AlmaLinux
- Một ứng dụng xác thực: Google Authentication
- Người dùng có đặc quyền cao nhất
Lưu ý: Bạn nên thao tác thực hiện và duy trì kết nối SSH ban đầu với máy chủ của mình và thực hiện kiểm tra từ phiên terminal khác để có thể dễ dàng sửa lỗi nếu không hoạt động
Cài đặt và cấu hình Two-Factor Authentication (2FA) trên AlmaLinux/Rocky Linux
Bước 1: Tắt Selinux
vi /etc/sysconfig/selinux
Tìm dòng SELINUX=enforcing
Thay enforcing = disabled
- Lưu lại file và khởi động lại máy chủ Linux Almalinux
Bước 2: Cài đặt Google Authenticator trên AlmaLinux
Ứng dụng này không giống với ứng dụng Google Authenticator mà bạn cài đặt trên thiết bị di động của mình. Google Authenticator này được cài đặt trên máy chủ của bạn và giúp bạn có thể thêm 2FA vào thông tin đăng nhập SSH.
Trước tiên bạn phải thêm EPEL bằng lệnh sau:
sudo dnf install epel-release -y
Sau khi xong, bạn tiến hành cài đặt Google Authenticator bằng lệnh:
dnf install google-authenticator qrencode qrencode-libs -y
Cài đặt đặt và tạo khóa ssh-keygen
ssh-keygen
Tiếp tục chạy lệnh để tạo một khóa bí mật mới và khóa này sẽ được đặt trong thư mục ~ / .ssh của bạn
google-authenticator -s ~/.ssh/google_authenticator
Trả lời tiếp câu hỏi đầu tiên và đảm bảo thay đổi kích thước cửa sổ đầu cuối của bạn để hiển thị toàn bộ mã QR . Lúc này bạn mở ứng dụng OTP của bạn (Authy hoặc Google Authenticator) trên thiết bị di động và thêm tài khoản mới. Sau đó quét mã QR tiếp tục khi được nhắc trên terminal AlmaLinux, hãy nhập mã gồm sáu chữ số ứng dụng hiển thị.
Vì chúng ta đang lưu trữ tệp google_authenticator ở vị trí không chuẩn, ta cần khôi phục ngữ cảnh SELinux bằng lệnh:
restorecon -Rv ~/.ssh/
Bước 3: Cấu hình SSH cho 2FA
Backup file cấu hình sshd_config
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Điều đầu tiên chúng ta phải làm là cấu hình SSH
vi /etc/ssh/sshd_config
Trong file này, phải đảm bảo rằng cả UsePAM được đặt là yes
Tìm dòng:
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no
Thay thành:
ChallengeResponseAuthentication yes
#ChallengeResponseAuthentication no
Lưu và đóng file lại
Backup file cấu hình PAM /etc/pam.d/sshd
cp /etc/pam.d/sshd /etc/pam.d/sshd.bka
Mở tệp cấu hình sshd PAM bằng lệnh:
vi /etc/pam.d/sshd
Tìm dòng:
auth substack password-auth
Thêm dấu # đằng trước
#auth substack password-auth
Và thêm 2 dòng sau vào cuối file
auth required pam_google_authenticator.so secret=${HOME}/.ssh/google_authenticator
auth required pam_permit.so
Lưu lại file cấu hình
Khởi động lại dịch vụ SSH
systemctl restart sshd