Không chỉ bạn lo lắng về mối đe dọa hack ngày càng tăng. Mặc dù lời nhắc xác thực và 2FA là đủ để ngăn chặn hầu hết các tin tặc tiềm năng, nhưng hàng nghìn vụ vi phạm vẫn thành công mỗi ngày.
Một trong những giải pháp phổ biến nhất cho vấn đề xác thực là YubiKey. Nhưng YubiKey là gì và xác thực phần cứng hoạt động như thế nào? Bạn có thể bảo mật PC Linux của mình bằng YubiKey không?
Chọn YubiKey phù hợp cho hệ thống của bạn
Nếu bạn muốn sử dụng YubiKey để xác thực trên máy tính Linux của mình, có một số YubiKey nổi bật đẻ lựa chọn. YubiKey 5 và YubiKey 5 NFC đều là những tùy chọn cổ điển tương ứng hoạt động tốt với các hệ thống có USB-A và USB-C.
Nếu muốn sử dụng YubiKey với máy tính Linux và điện thoại Android, bạn nên xem xét YubiKey 5c NFC. Nếu bạn có máy tính Linux và iPhone, bạn nên xem xét YubiKey 5ci vì nó hỗ trợ USB-C và cổng Lightning.
Điều quan trọng cần lưu ý là YubiHSM Series không tương thích với xác thực sudo. Legacy YubiKeys có thể tương thích hoặc không tương thích với xác thực sudo/SSH tùy thuộc vào các tính năng cụ thể của chúng.
Trước khi bắt đầu với xác thực sudo hoặc SSH, bạn phải cài đặt YubiKey PPA. Mở terminal và nhập các lệnh sau để cập nhật các gói, sau đó cài đặt YubiKey Authenticator và YubiKey Manager:
sudo add-apt-repository ppa:yubico/stable
sudo apt-get update
sudo apt install yubikey-manager libpam-yubico libpam-u2f
Tiếp theo, bạn sẽ cần xác minh rằng hệ thống của mình đã sẵn sàng hoạt động với YubiKey. Chạy lệnh sau trong terminal để kiểm tra phiên bản udev của bạn:
sudo udevadm --version
Terminal sẽ trả về một số. Nếu số này là 244 hoặc cao hơn, hệ thống của bạn tương thích với YubiKey. Bạn có thể bỏ qua bước tiếp theo trong trường hợp này.
Nếu không, bạn sẽ cần phải cấu hình hệ thống của mình. Bạn nên sử dụng các lệnh sau để kiểm tra xem udev đã được cài đặt trên máy tính của mình chưa - và để cài đặt nếu chưa:
dpkg -s libu2f-udev
sudo apt install libu2f-udev
Tiếp theo, hãy kiểm tra xem interface U2F của YubiKey của bạn đã được mở khóa chưa. Nếu bạn có YubiKey NEO hoặc YubiKey NEO-n, hãy cắm YubiKey vào, mở YubiKey Manager và điều hướng đến Interfaces. Bật U2F interface và nhấn Save.
Thiết lập YubiKey để xác thực sudo trên Linux
sudo là một trong những lệnh nguy hiểm nhất trong môi trường Linux. Tuy nhiên, nó cũng cung cấp một mức truy cập ấn tượng, đủ để hoàn thành hầu hết các công việc. Trong tay kẻ xấu, quyền truy cập cấp root mà sudo cung cấp có thể cho phép người dùng độc hại khai thác hoặc phá hủy hệ thống.
YubiKeys rất tuyệt vời để xác thực sudo vì xác thực của chúng gần như không thể sao chép nếu không có quyền truy cập vào chính YubiKey. Hầu hết YubiKey đều tương thích với xác thực sudo, bao gồm 5 FIPs Series, Key Series, 4 FIPs Series, Bio Series, 5 Series và 4 Series.
Theo Yubico, bước đầu tiên bạn cần thực hiện để cấu hình xác thực sudo là tạo file quy tắc. Nếu phiên bản udev của bạn từ 188 trở lên, hãy cài đặt các quy tắc U2F mới từ GitHub và sao chép file 70-u2f.rules vào /etc/udev/rules.d.
Nếu phiên bản udev của bạn dưới 188, hãy cài đặt các quy tắc U2F cũ từ GitHub và sao chép file 70-old-u2f.rules vào /etc/udev/rules.d.
Nếu phiên bản udev của bạn từ 244 trở lên hoặc bạn đã tạo các file quy tắc cần thiết, thì bạn đã sẵn sàng liên kết YubiKey với tài khoản của mình.
Cắm YubiKey vào máy tính, mở Terminal và nhập các lệnh sau để liên kết YubiKey với tài khoản của bạn:
mkdir -p ~/.config/Yubicopamu2fcfg > ~/.config/Yubico/u2f_keys
Đợi vài phút cho đến khi đèn báo trên YubiKey của bạn bắt đầu nhấp nháy. Chạm vào nút trên YubiKey để xác nhận liên kết thiết bị.
Nếu có sẵn một YubiKey khác, bạn nên thêm nó làm thiết bị sao lưu bằng cách nhập lệnh sau và hoàn tất quy trình tương tự:
pamu2fcfg -n >> ~/.config/Yubico/u2f_keys
Cuối cùng, bạn sẽ cần cấu hình lệnh sudo để yêu cầu xác thực YubiKey. Bạn nên bắt đầu bằng cách nhập lệnh sau để mở file cấu hình sudo:
sudo vi /etc/pam.d/sudo
Khi file cấu hình được mở, hãy dán dòng sau ngay bên dưới dòng @include common-auth để cấu hình sudo nhằm yêu cầu xác thực YubiKey:
auth required pam_u2f.so
Lưu và thoát file bằng cách nhấn Escape, nhập :wq và nhấn Enter, nhưng vẫn mở terminal. Bạn sẽ không thể đảo ngược những thay đổi bạn đã thực hiện đối với xác thực sudo nếu Terminal đóng lại.
Mở một Terminal thứ hai và chạy lệnh sau khi rút YubiKey ra, sau đó nhập mật khẩu của bạn:
sudo echo testing
Quá trình xác thực sẽ thất bại. Cắm YubiKey của bạn, nhập lại lệnh và mật khẩu của bạn. Khi đèn chỉ báo YubiKey bắt đầu nhấp nháy, hãy nhấn vào nút trên YubiKey. Nó sẽ xác thực lệnh. Nếu có, YubiKey của bạn đã được thiết lập đầy đủ để xác thực sudo.
Cách thiết lập YubiKey để xác thực SSH
Bạn cũng có thể sử dụng YubiKey để xác thực SSH! Một số sê-ri YubiKey tương thích với SSH, bao gồm 5 FIPS Series, 5 Series, 4 FIPS Series và 4 Series. Sử dụng YubiKey để xác thực các kết nối sẽ cho phép bạn thực hiện mỗi lần đăng nhập SSH an toàn hơn nhiều.
Phương pháp tốt nhất để thiết lập YubiKey đã được phác thảo bởi một người dùng có kinh nghiệm trên GitHub. Bạn sẽ cần SSH 8.2 trở lên và YubiKey có firmware 5.2.3 trở lên. Bạn có thể kiểm tra phiên bản OpenSSH của mình - và cập nhật nếu cần - bằng các lệnh sau:
ssh -V
sudo apt update && sudo apt upgrade
Tiếp theo, bạn sẽ cần cấu hình SSH để chấp nhận YubiKey của mình. Nhập lệnh sau để mở trình chỉnh sửa vi và chỉnh sửa file cấu hình:
sudo vi /etc/ssh/sshd_config
Thêm dòng sau vào file cấu hình để YubiKey của bạn được chấp nhận:
PubkeyAcceptedKeyTypes sk-ecdsa-sha2-nistp256@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com
Lưu và thoát file bằng cách nhấn Escape, nhập :wq và nhấn Enter. Cuối cùng, khởi động lại service SSH bằng lệnh sau để cấu hình mới của bạn hoạt động:
sudo service ssh restart
Cuối cùng, bạn đã sẵn sàng để tạo cặp key mà bạn sẽ sử dụng để xác thực SSH. Điều hướng đến thư mục SSH và tạo key SSH mới bằng các lệnh sau:
cd home/username/.ssh
ssh-keygen -t ed25519-sk
Hai file sẽ được tạo trong thư mục ~/.ssh/. Lưu ý rằng bạn có thể cần sử dụng ecdsa-sk thay vì ed25519-sk nếu hệ thống của bạn không tương thích và Terminal nhắc đăng ký key không thành công.
Tiếp theo, bạn sẽ cần thêm key chung vào máy chủ của mình bằng lệnh sau:
ssh-copy-id -i ~/.ssh/id_ed25519_sk.pub username@server
Bạn cũng nên tự thêm mình vào file sudoers để duy trì quyền sau khi tắt đăng nhập root. Truy cập file và mở file bằng visudo.
Cảnh báo: Không mở file sudoers bằng trình soạn thảo văn bản thông thường.
Bên dưới dòng ghi root ALL=(ALL:ALL) ALL, thêm dòng sau:
username ALL=(ALL:ALL) ALL
Mở file /etc/ssh/ssd_config và thêm các dòng sau để tắt đăng nhập root và đăng nhập dựa trên mật khẩu:
ChallengeResponseAuthentication noPermitRootLogin no
Cuối cùng, nhập lệnh sau để load key của bạn vào SSH agent trong suốt thời gian của phiên:
ssh-add ~/.ssh/id_ed25519_sk
Bây giờ, bạn có thể sử dụng YubiKey của mình để xác thực SSH. Bạn sẽ cần cắm YubiKey vào máy tính khi được nhắc và nhấn vào nút khi đèn báo nhấp nháy. Với phương thức xác thực mới này, quyền truy cập SSH vào máy chủ từ xa của bạn sẽ an toàn hơn đáng kể.