Hướng dẫn Linux

Hướng dẫn cách xác thực SSH thông qua thiết bị khoá bảo mật

A. Giới thiệu

Chúng ta đã khá quen thuộc với việc kết nối tới một máy tính Linux hay một Server Linux sử dụng SSH. Khi xác thực chúng ta có thể sử dụng mật khẩu hoặc cặp khoá public/private key.

Tuy nhiên để tăng cường độ bảo mật hơn nữa chúng ta có thể sử dụng những thiết bị khoá bảo mật vật lí để xác thực khi đăng nhập SSH. Trong bài viết này mình sẽ đề cập tới các thiết bị dùng giao thức FIDO

B. Mua khoá bảo mật ở đâu

Trong bài này mình sử dụng Google Titan Security Key bản Type C + NFC do một người bạn xách tay giúp mình từ Mĩ. Ở Việt Nam nếu các bạn muốn mua nhanh gọn có thể tham khảo các dòng khoá bảo mật từ Yubico

khoá bảo mật Google Titan Security Key

khoá bảo mật Google Titan Security Key

C. Hướng dẫn thiết lập SSH

Bài viết này tác giả sử dụng máy MacOS, máy Linux cần kết nối tới là Ubuntu. Hướng dẫn cho Windows mình sẽ cập nhật trong thời gian tới

Bước 0: Cài đặt các thành phần cần thiết

  • Homebrew: Đây như là một trình quản lí gói dành cho Mac. Các bạn cần nó để cập nhật OpenSSH (Lí do mình sẽ nói sau). Các bạn cài đặt bằng câu lệnh sau
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • Sau khi cài Homebrew, các bạn cài đặt tiếp libfido2 bằng câu lệnh
brew install libfido2

Bước 1: Tạo Public Key

Các bạn gõ lệnh sau vào Terminal

ssh-keygen -t ecdsa-sk

Các bạn rất có thể sẽ gặp lỗi Key enrollment failed: device not found, đó chính là do phiên bản OpenSSH mặc định của Mac quá cũ và chưa hỗ trợ xác thực qua thiết bị bảo mật. Các bạn có thể cập nhật SSH bằng 2 câu lệnh sau

brew remove openssh
brew install openssh

Sau khi cập nhật SSH, bạn chạy lại câu lệnh và chạm nhẹ vào cảm biến của thiết bị bảo mật để key được tạo ra

  • Mục Enter file in which to save the key (/Users/nguyenanhkiet/.ssh/id_ecdsa_sk): mình nhập cho key một cái tên, chẳng hạn ở đây là fido_key
  • Enter passphrase (empty for no passphrase): Ở đây nếu bạn thích đặt thêm một lớp mật khẩu nữa thì các bạn nhập (2 lần). Hoặc bấm Enter để bỏ qua

Bước 2: Chúng ta sẽ đưa Public Key lên Server, chẳng hạn ở đây mình đã có Public key được lưu tại /Users/nguyenanhkiet/.ssh/fido_key.pub

Ở đây mình có một server có IP 192.168.1.222 username là kietna và password mình đã biết trước

cd /Users/nguyenanhkiet/.ssh
ssh-copy-id -i fido_key kietna@192.168.1.222

Sau đó các bạn nhập Password của user kietna bên máy Linux kia là được

Bước 3: Chúng ta tiến hành SSH vào máy Linux kia. Bây giờ chúng ta sẽ kích hoạt chế độ xác thực bằng key

Đây là hướng dẫn cho Ubuntu, các Distro khác có thể sai khác một chút

sudo nano/etc/ssh/sshd_config

Các bạn tìm dòng

#PubkeyAuthentication yes

và sửa thành (Xoá bỏ dấu # đi)

PubkeyAuthentication yes

Nếu các bạn muốn cấm xác thực bằng Password luôn, để tránh bị scan dò pass thì sửa dòng

PasswordAuthentication yes

thành

PasswordAuthentication no

Sau đó các bạn khởi động lại ssh bằng lệnh

sudo service ssh restart

Bước 4: Trên máy Mac, chúng ta remote vào server với câu lệnh

ssh -i /Users/nguyenanhkiet/.ssh/fido_key kietna@192.168.1.222

Khi được hỏi Confirm user presence for key ECDSA-SK bạn chạm nhẹ vào cảm biến trên khoá bảo mật là có thể Login được vào server rồi

Video hướng dẫn

Visits: 1577