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
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
Views: 2160