Hiện nay mật khẩu là phương thức xác thực phổ biến nhất hiện nay. Tuy nhiên, chuyện bị mất password do bị keylogger, virus… là điều hoàn toàn có thể xảy ra. Nếu password root của server rơi vào tay kẻ gian thì quả thật đó là 1 điều cực kỳ tồi tệ. Hệ thống của bạn đã bị mất kiểm soát toàn diện.
Để khắc phục điểm yếu này, ngoài việc sử dụng public key + private key để login vào SSH, bài viết sẽ hướng dẫn các bạn xác minh 2 bước khi đăng nhập vào SSH.
Với cách làm này, khi đăng nhập SSH, điều cần làm trước tiên là phải nhập đúng mã được sinh ra trên điện thoại mà bạn đã cài đặt Google Authenticator, sau đó bạn phải nhập đúng mật khẩu thì mới có thể đăng nhập. Như vậy, cho dù password có rơi vào tay kẻ khác thì nếu trên tay họ không có chiếc điện thoại của bạn thì mật khẩu đó cũng sẽ là vô dụng mà thôi.
Không màu mè hoa lá cành nữa, chúng ta sẽ bắt tay vào cấu hình xác minh 2 bước:
Đầu tiên, các bạn chuyển vào thư mục /usr/local/src bằng lệnh
# cd /usr/local/src
Sau đó các bạn gõ lệnh sau để tải và cài đặt các package cần thiết
# yum install pam-devel make gcc-c++ wget
Sau khi cài các gói trên, các bạn gõ lệnh sau để chuyển về thư mục /root và tải thư viên hỗ trợ chứng thực của google về server
# cd /root/ # wget https://google-authenticator.googlecode.com/files/libpam-google-authenticator-1.0-source.tar.bz2
Sau khi đả tải về, các bạn giải nén file vừa tải ra bằng lệnh
#tar -xvf libpam-google-authenticator-1.0-source.tar.bz2
Gõ tiếp lệnh sau để chuyển vào thư mục chứa mã nguồn vừa giải nén
# cd libpam-google-authenticator-1.0
Sau đó gõ lệnh sau để biên dịch mã nguồn
# make
Cuối cũng gõ lệnh sau để cài đặt mã nguồn vừa biên dịch
# make install
Sau khi cài xong chúng ta gõ lệnh sau để tạo mã xác thực
# google-authenticator
Lưu ý:
Sau khi làm bước trên các bạn sẽ có 3 thông số cần lưu ý là:
1. Link lấy mã cài đặt cho trình xác thực trên điện thoại
2. Mã secret code để nhập tay vào trình xác thực trên điện thoại
3. Mã dự phòng để sử dụng khi mất điện thoại hay cho người khác login vào SSH (Mỗi mã chỉ dùng 1 lần)
Bây giờ, các bạn mở điện thoại lên và vào Google Play tải Google Authenticator về máy.
Sau khi tải về, các bạn làm như hình dưới để tiến hành cài đặt tài khoản
Lưu ý: Ở bước chọn Quyét mã vạch hay Nhập khóa được cấp, nếu các bạn chọn Quyét mã vạch sẽ nhập nhanh hơn.
Các bạn truy cập vào link lấy mã cài đặt dạng sau sẽ có 1 mã QRCode cho các bạn quét
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@server1.sinhvienit.net%3Fsecret%3DZ23OBXXXXXXXXXXX
Giờ quay lại phía server, chúng ta tiếp tục mở file /etc/pam.d/sshd
# vi /etc/pam.d/sshd
và thêm đoạn sau vào đầu file như hình dưới
auth required pam_google_authenticator.so
Lưu file trên lại, Tiếp tục gõ lệnh sau để sửa cấu hình dịch vụ SSHD
# vi /etc/ssh/sshd_config
Ở file này, các bạn sửa
ChallengeResponseAuthentication no
Thành
ChallengeResponseAuthentication yes
Nếu có dấu # ở đầu thì bỏ dấu # đi (xem hình dưới)
Lưu file trên lại.
Gõ lệnh service sshd reload để load lại cấu hình dịch vụ SSHD
Từ bây giờ trở đi, khi login vào SSH, trước tiên các bạn phải nhập mã nhìn thấy trên điện thoại mới có thể đăng nhập. Nếu nhập không đúng mã thì cho dù đúng mật khẩu cũng không thể login.
Demo thành quả:
Khi dùng Secure shell client
Khi dùng Putty
Một số lưu ý:
1. Bạn chỉ có 30 giây để nhập mã (Xem đồng hồ cạnh mã hiển thị trên điện thoại)
2. Khi sử dụng hết mã dự phòng, gõ lệnh sau để tạo mã dự phòng mới
# google-authenticator
Khi tạo mã dự phòng mới, bạn cũng phải cập nhật lại thiết đặt tài khoản trên điện thoại nhé.
3. Nếu muốn bỏ chức năng này, mở file /etc/ssh/sshd_config sửa
ChallengeResponseAuthentication yes
thành
ChallengeResponseAuthentication no
Mở tiếp file
/etc/pam.d/sshd
Chú thích bằng cách thêm dấu # đằng trước hoặc xóa dòng này đi
Code:
auth required pam_google_authenticator.so
Chúc các bạn thành công :v
(Nguồn SinhvienIT)