SSH Key Quản Lý Server Linux An Toàn

SSH Key Quản Lý Server Linux An Toàn

Ảnh minh họa SSH Key Quản Lý Server Linux An Toàn

SSH Key Quản Lý Server Linux An Toàn

SSH key là phương thức xác thực mạnh nhất cho server Linux, thay thế mật khẩu dễ bị brute-force. Hướng dẫn này giải thích cách tạo, phân phối và quản lý SSH key hiệu quả.

SSH Key Là Gì?

SSH (Secure Shell) là giao thức mạng mã hóa được sử dụng rộng rãi để quản lý server từ xa. SSH key là phương thức xác thực sử dụng cặp khóa mật mã học thay cho mật khẩu truyền thống. Khóa private giữ an toàn trên máy tính cá nhân, khóa public được cài đặt trên server. Không cần truyền mật khẩu qua mạng, bảo mật vượt trội so với xác thực bằng mật khẩu.

Cặp khóa hoạt động theo nguyên tắc mã hóa bất đối xứng: khóa private giải mã được dữ liệu mã hóa bằng khóa public tương ứng, nhưng ngược lại thì bất khả thi về mặt toán học với máy tính hiện tại. Điều này có nghĩa là hacker không thể suy ra khóa private từ khóa public.

Tạo SSH Key Trên Máy Cá Nhân

Chạy lệnh sau trên terminal để tạo cặp khóa Ed25519 — modern, nhanh và an toàn:

ssh-keygen -t ed25519 -C "[email protected]"

Sau khi chạy lệnh, hệ thống yêu cầu chọn vị trí lưu và nhập passphrase (tùy chọn nhưng khuyến nghị):

  • Ed25519 nhẹ hơn RSA 4096-bit, hiệu suất tốt hơn, bảo mật tương đương.
  • Khóa private lưu tại ~/.ssh/id_ed25519 — bảo mật tuyệt đối, KHÔNG chia sẻ ai.
  • Khóa public là ~/.ssh/id_ed25519.pub — an toàn khi chia sẻ cho server.
  • Passphrase thêm lớp bảo vệ nếu khóa private bị đánh cắp hoặc rò rỉ.

So Sánh Các Loại Khóa SSH

Thuật toán Độ an toàn Kích thước khóa Tốc độ Khuyến nghị
Ed25519 256-bit 256-bit (nhỏ) Nhanh nhất Ưu tiên sử dụng
RSA 2048-4096-bit 2048+ bit (lớn) Chậm hơn Tương thích rộng
ECDSA 256-384-bit 256-bit Nhanh Hỗ trợ hạn chế
SSH-1 (DSA) 80-bit 1024-bit Chậm KHÔNG sử dụng

RSA 2048-bit vẫn phổ biến vì tương thích với hầu hết hệ thống cũ. Tuy nhiên, Ed25519 là lựa chọn tốt nhất cho bảo mật và hiệu suất hiện đại.

Phân Phối Khóa Public Lên Server

Sau khi tạo khóa, copy khóa public lên server:

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip

Lệnh này tự động thêm khóa vào ~/.ssh/authorized_keys trên server. Nếu không có ssh-copy-id, copy thủ công nội dung id_ed25519.pub vào file authorized_keys trên server.

Đảm bảo quyền chính xác trên server:

  • Thư mục ~/.ssh phải có quyền 700 (chmod 700 ~/.ssh).
  • File authorized_keys phải có quyền 600 (chmod 600 ~/.ssh/authorized_keys).
  • Chủ sở hữu thư mục và file phải là user được phép SSH vào.

Ảnh minh họa SSH Key Quản Lý Server Linux An Toàn

Quản Lý SSH Key Hiệu Quả

Sử Dụng SSH Config Cho Nhiều Server

Khi quản lý nhiều server, tạo file ~/.ssh/config để dễ dàng chuyển đổi:

Host myserver1
    HostName 192.168.1.100
    User admin
    IdentityFile ~/.ssh/id_ed25519_myserver1

Host myserver2
    HostName 10.0.0.50
    User ubuntu
    IdentityFile ~/.ssh/id_ed25519_myserver2

Host *.internal
    IdentityFile ~/.ssh/id_ed25519_internal

Sau đó chỉ cần gõ ssh myserver1 để kết nối tự động với đúng user và khóa.

Thu Hồi Và Rotation Khóa

Quản lý SSH key định kỳ là bắt buộc:

  • Thu hồi: Xóa dòng khóa public tương ứng khỏi authorized_keys khi nhân viên rời đi hoặc key bị nghi ngờ rò rỉ.
  • Rotation: Tạo khóa mới mỗi 3-6 tháng, triển khai khóa mới trước khi xóa cũ.
  • Audit: Liệt kê wc -l ~/.ssh/authorized_keys trên tất cả server mỗi quý để đếm số khóa.
  • Tự động hóa: Sử dụng Ansible hoặc Chef để phân phối và thu hồi khóa hàng loạt.

Chuyển Sang SSH Certificate Cho Tổ Chức

Với tổ chức lớn, quản lý từng SSH key riêng lẻ là khó khăn. Giải pháp là SSH Certificate:

  • SSH CA (Certificate Authority): Ký ngắn hạn cho user hoặc host, hết hạn tự động.
  • Zero Trust: Không cần quản lý từng key riêng lẻ trên từng server.
  • Công cụ: HashiCorp Vault SSH secrets engine, step-ca, Netflix BLESS.
  • Luồng làm việc: User yêu cầu chứng chỉ → CA ký → User SSH vào server → Chứng chỉ hết hạn tự động.

Tắt Xác Thực Mật Khẩu Trên Server

Sau khi tất cả user xác nhận SSH key hoạt động tốt, vô hiệu hóa đăng nhập bằng mật khẩu:

sudo nano /etc/ssh/sshd_config

Sửa các dòng sau:

PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no

Khởi động lại SSH:

sudo systemctl restart sshd

THÔNG BÁO: Luôn giữ một phiên SSH đang mở trước khi khởi động lại sshd để không bị lockout.

Kết Luận

SSH key là lớp bảo vệ đầu tiên và quan trọng nhất cho mọi server Linux. Từ cá nhân quản lý VPS đơn lẻ đến tổ chức lớn với hàng trăm server, việc áp dụng SSH key đúng cách loại bỏ hoàn toàn rủi ro brute-force và credential stuffing.

Bắt đầu từ hôm nay — tạo SSH key Ed25519 cho tất cả server của bạn. Tìm hiểu thêm trên OpenSSHtài liệu Linux.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

NAS QNAP Bảo Mật Dữ Liệu Gia Đình Hiệu Quả

NAS QNAP Bảo Mật Dữ Liệu Gia Đình Hiệu Quả NAS QNAP Bảo Mật Dữ Liệu Gia Đình Hiệu Quả NAS QNAP là giải pháp lưu trữ mạng gia đình…

Xem thêm

zkSync Era: ZK Rollup Trên Ethereum Hướng Dẫn

zkSync Era: ZK Rollup Trên Ethereum Hướng Dẫn zkSync Era: ZK Rollup Trên Ethereum Hướng Dẫn zkSync Era là một ZK Rollup (Zero-Knowledge Rollup) hoạt động trên Ethereum, giúp giảm…

Xem thêm

Tails OS: Hệ Điều Hành Bảo Mật Ẩn Danh Trên USB

Tails OS: Hệ Điều Hành Bảo Mật Ẩn Danh Trên USB Tails (The Amnesic Incognito Live System) là bản phân phối Linux bảo mật cao, thiết kế để bảo vệ…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất