Cách bảo mật hệ thống Linux hiệu quả bằng YubiKey

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.

Kiểm tra phiên bản udevadm trong Terminal
Kiểm tra phiên bản udevadm trong Terminal

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.

YubiKey với đèn báo phát sáng
YubiKey với đèn báo phát sáng

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ể.

Thêm key vào phiên SSH
Thêm key vào phiên SSH
Thứ Tư, 07/06/2023 10:57
51 👨 311
0 Bình luận
Sắp xếp theo
    ❖ Linux