Làm thế nào để cấu hình Yubikey Yubico 4 cho máy chủ CentOS

Yubico Pluggable Authentication Module (PAM) là module cung cấp Linux Authentication với YubiKey Two-Factor. Yubico PAM có thể dễ dàng tích hợp với hạ tầng Linux/ Unix User Authentication.

Trước khi đi đến bước hướng dẫn cấu hình, tôi sẽ giới thiệu cho bạn biết và hiểu về các thành phần kỹ thuật nhắc đến trong bài viết này, khái niệm cần có và liên quan đến Yubikey Yubico và việc tích hợp nó vào PAM Module Linux.

Yubikey Hardware
Tôi sử dụng Yubikey 4 (giá hiện giờ là 40$/ 1 thiết bị), giao tiếp qua cổng USB nên thuận tiện cho sử dụng. Đây là một thiết bị vật lý với kích cỡ của một USB. Nó sinh ra một One-Time Password (OTP) khi bạn chạm tay vào ô tròn màu vàng nhỏ có ký tự chữ Y. Nó hỗ trợ RSA 4096 cho OpenPGP. Và nó tương thích với các hệ điều hành Windows, Linux/ Unix, MacOS. Tuy nhiên, bạn cần bảo quản nó cẩn thận.

Linux Environment
Môi trường hệ điều hành Linux

Yubico PAM
Yubico PAM là module cung cấp một cách dễ dàng để tích hợp YubikeyLinux User Authentication Infrastructure. PAM được sử dụng bởi GNU/ Linux, SolarisMacOS X cho User Authentication.

Yubikey hoạt động thế nào?

  • Khi người dùng SSH từ SSH Client tới SSH Server, người dùng nhận thông báo yêu cầu dùng Yubikey của họ để gửi một One-Time Password cùng với tài khoản người dùng và mật khẩu tài khoản của họ (trường hợp người dùng đăng nhập dùng SSH Key Authentication, thì cần SSH Private Key). Đầu tiên, SSH Server sẽ xác thực tài khoản người dùng (tên & mật khẩu), tiếp đến nó xác nhận OTP vừa được nhập bởi máy chủ xác thực Yubico. Xác nhận xong, người dùng đăng nhập SSH Server và tiến hành như bình thường.
  • SSH xác thực hai lớp (SSH Two-Factor) hỗ trợ bởi Yubico PAM có thể chứa một loạt các giải pháp. Một tài khoản người dùng duy nhất có thể có nhiều Yubikey được gán cho, nhiều người dùng truy cập một tài khoản người dùng, hoặc một Yubikey có thể được gán cho nhiều tài khoản người dùng.
  • Yubico PAM hỗ trợ cấu hình cả Tài Khoản Quản Trị (Administrator/ Super User) và Tài Khoản Người Dùng Thường (User) cho Yubikey.

Hướng dẫn cài đặt

Bước 1: cài đặt Yubico PAM Module.
[tien@tien-phan ~]$sudo yum install pam_yubico.x86_64

Kiểm tra lại, bằng cách:

[tien@tien-phan ~]$ sudo rpm -qa | grep yubi
libyubikey-1.13-1.el7.x86_64  
pam_yubico-2.23-1.el7.x86_64  

Với máy chủ Ubuntu, bạn cài đặt như sau:

$sudo add-apt-repository ppa:yubico/stable
$sudo apt-get update
$sudo apt-get install libpam-yubico

Bước 2: cấu hình Yubico PAM trong /etc/pam.d/sshd

#%PAM-1.0
auth       required     pam_yubico.so   id=30582        authfile=/etc/ssh/yubikey_mappings  
  • pam_yubico.so là Yubico module đã cài đặt
  • id=30582 là Yubico ID, có thể vào website Yubikey để lấy ID này.
  • authfile= là nơi chứa đường dẫn lưu mã nhận dạng của thiết bị Yubikey.

hoặc một cách khác là khai báo yubi-auth trong /etc/pam.d/. Đi tới thư mục /etc/pam.d
[tien@tien-phan ~]$ sudo vim /etc/pam.d/yubi-auth

auth      sufficient   pam_yubico.so   id=30582        key=h0EfpZt0uuyLI57tZpJLa88lrTc= authfile=/etc/ssh/yubikey_mappings url=http://api.yubico.com/wsapi/2.0/verify?id=%d&otp=%s debug  

Tiếp đó, vào /etc/pam.d/sshd, thêm dòng sau:

#%PAM-1.0
auth       include      yubi-auth  

Bước 3: tạo file lưu trữ Yubikey ID /etc/ssh/yubikey_mappings
[tien@tien-phan ~]$ sudo vim /etc/ssh/yubikey_mappings

root:ccccccfrbklm  
root:ccccccfrabcd  
root:ccccccfrefgh  
read:ccccccfrpoij  


Như trên, người dùng root được gán với 4 Yubikey ID là ccccccfrbklm, ccccccfrabcdccccccfrefgh. Người dùng read được gán với Yubikey ID là ccccccfrpoij.

Đây chính là nơi, Yubico PAM sẽ tìm đến để xác nhận "bạn là chủ nhân của thiết bị Yubikey đang yêu cầu truy cập vào SSH Server."

Bước 4: cấu hình SSH Two-Factor Authentication
[tien@tien-phan ~]$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
[tien@tien-phan ~]$ sudo vim /etc/ssh/sshd_config Bạn cần đảm bảo, các biến số sau được cấu hình:

Apply for openssh-server-5.3p1-118.1.el6_8.x86_64

# Change to no to disable s/key passwords
ChallengeResponseAuthentication yes  
RequiredAuthentications2 publickey,keyboard-interactive  
...
# Set this to 'yes' to enable [PAM](http://www.tuxradar.com/content/how-pam-works) authentication, account processing, 
# and session processing. If this is enabled, [PAM](http://www.tuxradar.com/content/how-pam-works) authentication will 
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your [PAM](http://www.tuxradar.com/content/how-pam-works) configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the [PAM](http://www.tuxradar.com/content/how-pam-works) account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
#UsePAM no
UsePAM yes  
Apply for openssh-server-6.6.1p1-25.el7_2.x86_64

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication yes  
AuthenticationMethods publickey,keyboard-interactive  
...
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
# WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several
# problems.
UsePAM yes  

Bước 5: restart SSHD Service để áp dụng thay đổi
[tien@tien-phan ~]$ /etc/init.d/sshd restart

Sau 5 bước cấu hình trên, bạn đã hoàn tất cấu hình Two-Factor Authentication với máy chủ CentOS. Từ giờ, mỗi lần bạn đăng nhập máy chủ CentOS, màn hình đăng nhập có dạng sau:

cattek@HO-LAP-10:~$ ssh tien-phan  
Authenticated with partial success.  
YubiKey for `root':  

Lúc này, bạn phải gắn Yubikey vào cổng USB của máy SSH Client. Và chạm tay vào ô tròn màu vàng nhỏ có ký tự chữ Y.

cattek@HO-LAP-10:~$ ssh tien-phan  
Authenticated with partial success.  
YubiKey for `root':  
Last login: Tue Sep  5 15:53:16 2017 from 112.53.65.163  
[root@tien-phan ~]# 

Kết luận

Trong bài viết này, tôi đã hướng dẫn bạn cấu hình Yubikey Yubico 4 cho máy chủ CentOS. Nếu bạn là người mới bắt đầu với Yubukey Yubico, tôi có niềm tin bài viết giúp ích cho bạn. Tôi rất vui khi bạn đọc tới đây.

Lời cám ơn

Tôi cám ơn bạn đã dành thời gian để đọc bài viết này. Tất nhiên, tôi luôn quan tâm đến hoàn thiện chất lượng bài viết, vì vậy mọi sự đóng góp của bạn là sự khích lệ đối với tôi.

Bài viết thể hiện quan điểm, văn phong của tác giả. Mọi sự tranh luận, phản biện được khuyến khích. Và tôi bảo lưu mọi quan điểm cho đến khi mọi thứ được sáng tỏ trên cơ sở sự chính xác của thông tin.

Tài liệu tham khảo

Để viết bài này, tôi đã sử dụng các tài liệu tham khảo
https://developers.yubico.com/yubico-pam/
https://developers.yubico.com/yubico-pam/
https://www.yubico.com/why-yubico/for-business/computer-login/linux/
https://www.yubico.com/products/yubikey-hardware/yubikey4/

Tien Phan

Read more posts by this author.

Subscribe to

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!