Xác minh 2 bước khi vào SSH qua điện thoại bằng Google Authenticator trên Linux

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 như mình đã từng đề cập, hôm nay mình sẽ hướng dẫn các bạn xác minh 2 bước khi đăng nhập vào SSH.

greennet.vn-xac-minh-1

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 nhé.

Đầu tiên, các bạn chuyển vào thư mục /usr/local/src bằng lệnh

Code:

# 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

Code:

# yum install pam-devel make gcc-c++ wget

greennet.vn-SSH-1

 

greennet.vn-ssh-1.png

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

Code:

# cd /root/

# wget https://google-authenticator.googlecode.com/files/libpam-google-authenticator-1.0-source.tar.bz2

greennet.vn-ssh-1

Gõ tiếp lệnh sau để chuyển vào thư mục chứa mã nguồn vừa giải nén

Code:

# cd libpam-google-authenticator-1.0

Sau đó gõ lệnh sau để biên dịch mã nguồn

Code:

# make

greennet.vn-ssh-1

 

Cuối cũng gõ lệnh sau để cài đặt mã nguồn vừa biên dịch

Code:

# make install

greennet.vn-ssh-1

Sau khi cài xong chúng ta gõ lệnh sau để tạo mã xác thực

Code:

# google-authenticator

greennet.vn-ssh-1

 

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

greennet.vn-ssh

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

Code:

 https://www.google.com/chart?chs=200×200&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

Code:

 # vi /etc/pam.d/sshd

và thêm đoạn sau vào đầu file như hình dưới

Code:

auth required pam_google_authenticator.so

greennet.vn-ssh-3

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

Code:

# vi /etc/ssh/sshd_config

 

Ở file này, các bạn sửa

Code:

ChallengeResponseAuthentication no

Thành

Code:

ChallengeResponseAuthentication yes

Nếu có dấu # ở đầu thì bỏ dấu # đi (xem hình dưới)

greennet.vn-ssh

Lưu file trên lại.

Gõ lệnh service sshd reload để load lại cấu hình dịch vụ SSHD

greennet.vn-ssh-1

 

 

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

greennet.vn-ssh

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

 

Code:

 

# 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

 

Code:

 

ChallengeResponseAuthentication yes

 

thành

 

Code:

 

ChallengeResponseAuthentication no

 

Chúc các bạn thành công