Hướng Dẫn Sử Dụng SSHFP Để Xác Minh SSH Host Keys An Toàn

Hướng Dẫn Sử Dụng SSHFP Để Xác Minh SSH Host Keys An Toàn

Bản ghi SSHFP cho phép bạn lưu trữ dấu vân tay của các host key của máy chủ trong DNS, giúp đơn giản hóa quá trình xác minh kết nối SSH. Thay vì phải kiểm tra thủ công host key mỗi khi kết nối, client SSH sẽ tự động tra cứu dấu vân tay trong DNS và so sánh với key mà máy chủ cung cấp, giúp tăng cường bảo mật và giảm thiểu rủi ro kết nối đến máy chủ giả mạo.

Để đảm bảo an toàn khi kết nối server, sử dụng SSHFP là giải pháp tối ưu. Nếu bạn đang tìm kiếm VPS giá rẻ để triển khai hệ thống, hãy khám phá các gói VPS chất lượng cao, chi phí hợp lý tại [danh mục VPS giá rẻ], giúp tiết kiệm và bảo mật tối đa.

Nếu bạn sử dụng OpenSSH, có thể bạn đã gặp thông báo yêu cầu xác minh host key như sau:

The authenticity of host 'examplehost.example.org (192.0.2.123)' can't be established.
ECDSA key fingerprint is SHA256:MH85JK0yq+JNl1lPKUlxit+dGFqWMS/MmohcINp/e9Q.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Thông báo này sẽ hiển thị dấu vân tay của SSH Host Key, giúp bạn xác nhận rằng máy chủ bạn đang kết nối là chính xác. Khi sử dụng bản ghi SSHFP trong DNS, quá trình xác minh này sẽ được tự động hóa, giúp tiết kiệm thời gian và nâng cao tính bảo mật cho kết nối SSH của bạn.

Yêu cầu tiên quyết

  • VPS Linux đang chạy máy chủ ssh

  • Máy tính Linux có cài đặt OpenSSH client hoặc một VPS Linux khác

  • Tên miền đã được thiết lập DNSSEC

  • Các bản ghi A và (tuỳ chọn) AAAA trỏ đến VPS của bạn

  • Máy chủ DNS hỗ trợ DNSSEC

DNSSEC là cần thiết để các bản ghi SSHFP hoạt động, vì nó cho phép ssh client tin cậy vào thông tin được lưu trong các bản ghi DNS. Việc kích hoạt DNSSEC được đề cập trong [Giới thiệu về DNS DataOnline]. Bạn cũng nên kiểm tra xem DNS resolver mà máy tính bạn sử dụng có hỗ trợ DNSSEC hay không. Nếu không, bạn có thể sử dụng Google Public DNS hoặc dịch vụ 1.1.1.1 của Cloudflare như các lựa chọn miễn phí.

1. Tạo bản ghi SSHFP

Đăng nhập vào VPS của bạn và chạy lệnh sau, thay thế tên ví dụ bằng Fully-Qualified Domain Name (FQDN) của máy chủ:

# ssh-keygen -r examplehost.example.org
FQDN của bạn cần phải giống với bản ghi A trên tên miền trỏ đến địa chỉ IP của máy chủ. Lệnh này cần chạy từ máy chủ vì các bản ghi SSHFP được tạo ra dựa trên public key của máy chủ ssh. Bạn sẽ thấy đầu ra tương tự như sau:
examplehost.example.org IN SSHFP 1 1 9bd1755b811ba9c9a4416400e7b379d403ca8d11
examplehost.example.org IN SSHFP 1 2 44ec99231d0cf174e0d36c4ee691d55ec65c31c754e4348250d4162c148bde82
examplehost.example.org IN SSHFP 3 1 c926ddf5ecbfbcc7dca7d8b6b0fc4c5002c6d60a
examplehost.example.org IN SSHFP 3 2 307f3924ad32abe24d97594f2949718adf9d185a96312fcc9a885c20da7f7bd4
examplehost.example.org IN SSHFP 4 1 7d66e7ef5340329337e58e576c54468dd6246c99
examplehost.example.org IN SSHFP 4 2 491f54c3864c4509e4734651ed45365cecdec28a1edc6866212fdfac0fa83b4f

2. Cập nhật các bản ghi DNS của tên miền

Thêm các bản ghi SSHFP mà bạn vừa tạo bằng lệnh ssh-keygen vào cấu hình DNS của tên miền. Bạn cần tạo một bản ghi SSHFP mới cho mỗi dòng. Hãy đảm bảo rằng hostname của bản ghi SSHFP trùng khớp với hostname của máy chủ.

3. Kiểm tra các bản ghi DNS mới

Các bản ghi DNS có thể mất một khoảng thời gian để lan truyền trên internet. Bạn có thể kiểm tra xem các bản ghi SSHFP mới đã được cập nhật hay chưa bằng cách sử dụng lệnh dig. Trên Debian và Ubuntu, bạn có thể cài đặt công cụ này bằng apt-get install dnsutils

$ dig SSHFP yourvps.example.com +short

4. Kích hoạt xác minh DNS

Mặc định, OpenSSH không xác minh các bản ghi SSHFP. Trên máy tính sử dụng làm ssh client, hãy tạo tệp .ssh/config trong thư mục chính của bạn và thêm dòng sau:

VerifyHostKeyDNS yes

5. Kết nối đến máy chủ ssh

Nếu trước đây bạn đã kết nối đến máy chủ, hãy xóa dòng bắt đầu bằng hostname của máy chủ đó trong tệp .ssh/known_hosts của thư mục chính.

Sau đó, sử dụng lệnh ssh như bình thường:

$ ssh root@yourvps.example.com

Dù host key của máy chủ không còn có trong tệp known_hosts, bạn sẽ không bị yêu cầu xác minh host key nữa. Điều này có nghĩa là các bản ghi SSHFP đã hoạt động thành công.

Các vấn đề thường gặp

Tìm thấy dấu vân tay host key trùng khớp trong DNS

Đôi khi bạn có thể gặp thông báo như sau:

$ ssh root@examplehost.example.org

The authenticity of host 'examplehost.example.org (192.0.2.123)' can't be established.
ECDSA key fingerprint is SHA256:MH85JK0yq+JNl1lPKUlxit+dGFqWMS/MmohcINp/e9Q.
Matching host key fingerprint found in DNS.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Thông điệp này thường cho thấy có vấn đề với DNSSEC. OpenSSH có thể tìm thấy các bản ghi SSHFP nhưng không thể xác thực chúng bằng DNSSEC. Bạn nên kiểm tra lại cấu hình DNSSEC cho tên miền của mình bằng một công cụ như DNSViz. Ngoài ra, hãy kiểm tra xem DNS resolver mà hệ thống của bạn sử dụng có hỗ trợ DNSSEC hay không. Bạn có thể kiểm tra bằng lệnh:

$ dig examplehost.example.org

...

;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

...

Trong kết quả, tìm phần “flags” và kiểm tra xem có tham số ad hay không (tham số ad cho biết phản hồi đã được xác thực DNSSEC). Nếu không thấy ad, hãy kiểm tra lại cấu hình các máy chủ DNS mặc định trên hệ thống. Một số máy chủ của ISP hoặc router gia đình có thể không hỗ trợ đầy đủ DNSSEC.

Lưu ý đối với macOS và Windows

  • Hệ thống DNS trên macOS hiện tại có vẻ không hỗ trợ DNSSEC đúng cách, vì vậy bạn có thể gặp vấn đề tương tự khi kết nối từ thiết bị macOS. Trong trường hợp đó, hãy thử kết nối từ một VPS Linux khác.

  • Các bản build OpenSSH mới nhất cho Windows không hỗ trợ xác minh DNS.

Việc cấu hình SSHFP giúp tăng cường bảo mật khi quản lý server từ xa. Nếu bạn cần thuê VPS để thử nghiệm hoặc triển khai dự án, hãy xem qua các dịch vụ thuê VPS tại DataOnline với tốc độ cao, hỗ trợ 24/7, phù hợp cho mọi nhu cầu.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *