2. • Một trong các phương thức đăng nhập vào VPS khá an toàn đó
là việc sử dụng SSH Key để thay thế cho mật khẩu. Mặc định
mỗi VPS bạn sẽ đăng nhập vào bằng username root và mật
khẩu root mà nhà cung cấp đã gửi cho bạn lúc thuê VPS, tuy
nhiên việc sử dụng mật khẩu luôn có 2 nguy cơ lớn là:
• Bạn sẽ mất hoàn toàn nếu lộ mật khẩu.
• Các attacker có thể sử dụng Brute Force Attack để dò tìm mật
khẩu.
• Do đó, mình khuyến khích các bạn làm quen với SSH Key để
đăng nhập vào VPS, cũng như sử dụng nó để xác thực các kết
nối từ bên ngoài vào cho an toàn hơn.
3. Cách thức hoạt động của SSH Key
• SSH Key bạn cứ hiểu đơn giản là một phương thức chứng thực người
dùng truy cập bằng cách đối chiếu giữa một key cá nhân (Private Key) và
key công khai(Public Key).
• Private key và Public key luôn có liên hệ chặt chẽ với nhau để nó có thể
nhận diện lẫn nhau. Mình nói vậy cho bạn dễ hình dung nhé, khi tạo một
SSH Key thì bạn sẽ có cả 2 loại key này. Sau đó bạn mang cái public
key bỏ lên máy chủ của bạn, còn cái private key bạn sẽ lưu ở máy và khi
đăng nhập vào server, bạn sẽ gửi yêu cầu đăng nhập kèm theo cái Private
Key này để gửi tín hiệu đến server, server sẽ kiểm tra xem cái Private key
của bạn có khớp với Public key có trên server hay không, nếu có thì bạn
sẽ đăng nhập được.
• Nội dung giữa Private Key và Public Key hoàn toàn khác nhau, nhưng nó
vẫn sẽ nhận diện được với nhau thông qua một thuật toán riêng của nó.
• Bạn cứ hình dung Private Key là chìa khóa, còn Public Key là ổ khóa. Một
khi chìa khóa mà vừa khít với ổ khóa thì cửa sẽ được mở, thế thôi.
4. SSH Key bạn cứ hiểu đơn giản là một phương thức
chứng thực người dùng truy cập bằng cách đối chiếu giữa
một key cá nhân (Private Key) và key công khai(Public
Key).
Private key và Public key luôn có liên hệ chặt chẽ với
nhau để nó có thể nhận diện lẫn nhau. Mình nói vậy cho
bạn dễ hình dung nhé, khi tạo một SSH Key thì bạn sẽ có
cả 2 loại key này. Sau đó bạn mang cái public key bỏ lên
máy chủ của bạn, còn cái private key bạn sẽ lưu ở máy
và khi đăng nhập vào server, bạn sẽ gửi yêu cầu đăng
nhập kèm theo cái Private Key này để gửi tín hiệu đến
server, server sẽ kiểm tra xem cái Private key của bạn có
khớp với Public key có trên server hay không, nếu có thì
bạn sẽ đăng nhập được.
Nội dung giữa Private Key và Public Key hoàn toàn khác
nhau, nhưng nó vẫn sẽ nhận diện được với nhau thông
qua một thuật toán riêng của nó.
Bạn cứ hình dung Private Key là chìa khóa, còn Public
Key là ổ khóa. Một khi chìa khóa mà vừa khít với ổ khóa
thì cửa sẽ được mở, thế thôi.
5. Thành phần chính của một SSH Key
• Khi tạo ra một SSH Key, bạn cần biết sẽ có 3 thành phần quan trọng
như sau:
• Public Key (dạng file và string) – Bạn sẽ copy ký tự key này sẽ bỏ
vào file ~/.ssh/authorized_keys trên server của bạn.
• Private Key (dạng file và string) – Bạn sẽ lưu file này vào máy tính,
sau đó sẽ thiết lập cho PuTTY, WinSCP, MobaXterm,..để có thể
login.
• Keypharse (dạng string, cần ghi nhớ) – Mật khẩu để mở private key,
khi đăng nhập vào server nó sẽ hỏi cái này.
• Và một SSH Key bạn có thể sử dụng cho nhiều server khác nhau.
6. I. Cách tạo SSH Key
• 1.1) Đối với Windows
• Nếu bạn sử dụng Windows thì sẽ dùng phần mềm PuTTY-Gen
để tạo SSH, bạn có thể tải PuTTY-Gen tại đây.
• Tải xong bạn mở ra, bạn chọn các tùy chọn như trong ảnh dưới
rồi ấn Generate.
7. • Đối với Linux (Mac/Ubuntu/LinuxMint,..)
• Nếu bạn đang sử dụng Linux thì không cần phần mềm mà sẽ sử dụng
Terminal để tạo. Hãy mở Terminal lên và gõ:
• ssh-keygen -t rsa
8. II. Thêm public key vào VPS
• Lưu ý:
• SSH Key sẽ không thể hoạt động nếu bạn đang bật SELinux.
Hãy tắt SELinux đi bằng cách mở file /etc/selinux/config,
tìm SELINUX=enforcing và thay bằng SELINUX=disabled. Sau
đó gõ lệnh reboot để khởi động lại server. Nếu
dùng Centminmod thì không cần vì nó đã tắt SELinux rồi.
9. Tắt chức năng sử dụng mật khẩu
• Sau khi kiểm tra, nếu bạn thấy đã có thể đăng nhập vào server
bằng SSH Key thì có thể tắt chức năng sử dụng mật khẩu đi vì
nếu không tắt, các attacker vẫn brute force attack như thường
và bạn vẫn bị mất dữ liệu nếu lộ mật khẩu.