SSD Nodes Learn
Hướng dẫn Matt ConnorBởi Matt Connor · Cập nhật ngày 2026-07-23

Cách bảo mật VPS mới trong 10 phút

Hướng dẫn thiết lập VPS an toàn ngay lập tức. Bạn sẽ học cách tạo user sudo, cấu hình SSH key, tắt login root và cài đặt firewall để chặn scanner.

10 phút đầu tiên quyết định độ an toàn của server

Một VPS mới tinh không hề an toàn. Ngay khi có IP công khai, các scanner đã bắt đầu tìm cách đăng nhập. Các image mặc định tạo ra mục tiêu lớn cho chúng: root thường có thể truy cập được, thường cho phép dùng password, không có firewall, và không có lịch trình patch hệ thống. Tin tốt là việc đóng tất cả các lỗ hổng này chỉ mất khoảng mười phút với một vài câu lệnh. Đây là runbook tôi luôn chạy trên mọi server mới trước khi cài đặt bất cứ thứ gì.

Hãy thực hiện theo đúng thứ tự, vì các bước sau dựa trên các bước trước. Mỗi bước đều có hướng dẫn riêng được link đi kèm; trang này là lộ trình nhanh kết nối chúng lại với nhau.

Phút thứ 1: Update mọi thứ

Đăng nhập với quyền root bằng thông tin bạn được nhà cung cấp cấp, và cập nhật hệ thống lên bản mới nhất trước khi làm bất cứ việc gì khác:

apt update && apt upgrade -y

Một máy chủ chưa được patch là mục tiêu dễ dàng nhất, vì vậy bước này phải thực hiện đầu tiên. Sau khi hoàn tất, hãy thiết lập tự động cập nhật bảo mật để hệ thống luôn được patch mà bạn không cần phải nhớ.

Phút thứ 2: Tạo user bình thường với sudo

Đừng tiếp tục làm việc với quyền root. Hãy tạo một user cho riêng bạn và cấp quyền sudo:

adduser matt
usermod -aG sudo matt

Từ đây, bạn đăng nhập bằng user này và dùng sudo cho các tác vụ admin. Làm việc với quyền root liên tục có nghĩa là mọi sai lầm và mọi sự xâm nhập đều diễn ra với quyền hạn vô hạn, đây chính là lý do chạy với user không có đặc quyền tồn tại để ngăn chặn.

Phút thứ 4: Thiết lập SSH keys

Password có thể bị đoán được; keys thì không. Trên laptop của bạn, nếu chưa có key, hãy tạo một cái:

ssh-keygen -t ed25519

Sau đó copy public key sang server:

ssh-copy-id matt@YOUR_SERVER

ssh-copy-id cần bật password login cho user mới; nếu nó đã bị tắt, hãy copy ~/.ssh/authorized_keys của root vào /home/matt/.ssh/authorized_keys (thuộc sở hữu của matt), hoặc dán public key của bạn vào file đó bằng tay.

Mô hình đằng sau bước này, bao gồm một key cho mỗi thiết bị, các quyền (permissions) làm lỗi đăng nhập bằng key, và việc thu hồi key bị mất, được trình bày trong kiến thức cơ bản về quản lý SSH key.

Đăng xuất và đăng nhập lại bằng matt bằng key, và xác nhận nó hoạt động trước khi làm bước tiếp theo. Việc khóa SSH trước khi bạn có thể đăng nhập bằng key là cách khiến mọi người tự khóa chính mình ra khỏi server.

Phút thứ 6: Tắt root login và password

Bây giờ key của bạn đã hoạt động, hãy đóng hai cánh cửa mà các scanner thường dùng. Sử dụng một drop-in file để các bản nâng cấp package không ghi đè lên nó. Đặt tên là 00- để nó được sắp xếp trước 50-cloud-init.conf (thứ mà các Ubuntu cloud images đi kèm với PasswordAuthentication yes); sshd sẽ giữ giá trị đầu tiên mà nó đọc được, nên một file có thứ tự sắp xếp muộn hơn sẽ bị mất cấu hình một cách âm thầm:

sudo nano /etc/ssh/sshd_config.d/00-hardening.conf
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no

Sau đó reload SSH:

sudo systemctl restart ssh

Sau đó kiểm tra các thiết lập mà sshd thực sự sử dụng, để một drop-in file bị lỗi không lừa được bạn:

sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'

Khi đã tắt password và root login, các lưu lượng brute-force liên tục nhắm vào server của bạn đơn giản là không thể thành công. Quy trình đầy đủ, bao gồm cả việc đổi port tùy chọn, nằm trong SSH hardening trên VPS.

Phút thứ 8: Bật firewall

Chặn mặc định (default-deny) mọi kết nối inbound, sau đó chỉ cho phép những gì bạn cần. Hãy cho phép SSH trước khi bạn kích hoạt firewall, nếu không bạn sẽ tự ngắt kết nối của chính mình:

sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enable

Thêm các rule allow cho bất kỳ service nào bạn thực sự chạy, ví dụ như 80/tcp443/tcp cho một website. Kiểm tra xem cả IPv4 và IPv6 đã được bao phủ chưa, vì một firewall chỉ lọc IPv4 sẽ để phía IPv6 mở hoàn toàn. Hướng dẫn đầy đủ là Firewalls 101 trên VPS.

Phút thứ 10: Làm chậm các scanner với Fail2ban

Cuối cùng, hãy cài đặt Fail2ban để loại bỏ các địa chỉ đang tấn công dồn dập vào các port của bạn:

sudo apt install -y fail2ban

Trên Ubuntu 24.04, bản cài đặt mặc định đã bảo vệ SSH ngay từ lần boot đầu tiên. Khi đã yêu cầu dùng key, đây chỉ là lớp bảo vệ bổ sung để giảm nhiễu log và chặn các đối tượng vi phạm lặp lại, chứ không phải là lớp phòng thủ chính.

Checklist của bạn

Đó là runbook. Sử dụng trình tạo bên dưới để tích vào từng mục kiểm soát và tạo ra một checklist cá nhân để lưu cùng server, bao gồm cả câu lệnh chính xác cho mỗi bước:

ToolBuild your VPS hardening checklist

Hãy thực hiện nó một lần cho mỗi server mới và toàn bộ quy trình sẽ trở thành phản xạ. Mười phút bây giờ sẽ cứu bạn khỏi một buổi chiều tồi tệ sau khi server bị chiếm quyền điều khiển (owned).

Khi các yếu tố thiết yếu đã sẵn sàng, automatic security updates trên Ubuntu sẽ giữ server luôn cập nhật mà bạn không cần phải đăng nhập lại.

FAQ

Tôi nên làm gì đầu tiên trên một VPS mới?

Cập nhật hệ thống với apt update && apt upgrade -y, sau đó tạo một user bình thường có sudo và ngừng làm việc với quyền root. Từ đó, thiết lập SSH keys, tắt root login và password authentication, bật firewall default-deny, và cài đặt Fail2ban. Thực hiện theo thứ tự đó giúp mỗi bước đều an toàn mà không khiến bạn bị khóa chính mình ra khỏi server.

Làm thế nào để tránh bị khóa chính mình khi đang hardening SSH?

Hãy thiết lập và kiểm tra đăng nhập bằng SSH key trước khi bạn tắt password hoặc root. Đăng xuất và đăng nhập lại bằng key để xác nhận nó hoạt động, và chỉ sau đó mới tắt PasswordAuthenticationPermitRootLogin. Khi bạn bật firewall, hãy cho phép port 22 trước khi chạy ufw enable. Nếu bạn bị khóa, web console của nhà cung cấp sẽ giúp bạn đăng nhập lại mà không cần SSH.

Tôi có thực sự cần tất cả những thứ này trên một server nhỏ không?

Có, vì các scanner không quan tâm server của bạn nhỏ thế nào. Chúng thử mọi IP công khai theo cùng một cách. Toàn bộ runbook chỉ mất khoảng mười phút và loại bỏ các con đường dễ dàng: không root login, không đoán password, không có gì bị lộ mà bạn không chọn, và các lỗi đã biết được patch tự động.

Bước nào là quan trọng nhất?

SSH chỉ dùng key và tắt root login. Hầu hết các cuộc tấn công vào VPS mới là các script tự động đoán password vào root, và việc tắt cả hai sẽ khiến toàn bộ loại tấn công đó trở nên bất khả thi. Firewall và Fail2ban sau đó sẽ giới hạn những gì bị lộ và làm chậm bất kỳ thứ gì còn sót lại.

Làm thế nào để xác nhận server thực sự đã được bảo mật?

Hãy kiểm tra thủ công ba thứ trước khi bạn tin tưởng nó. Chạy sudo ss -tlnp và xác nhận chỉ có các port bạn muốn mở mới đang lắng nghe trên một địa chỉ công khai, không có service 0.0.0.0 hay [::] nào mà bạn đã quên. Chạy sudo ufw status verbose và xác nhận chính sách inbound mặc định là deny và cả rule plain lẫn (v6) đều hiện diện. Và luôn luôn mở một session SSH thứ hai trước khi đóng session đầu tiên, để một lỗi trong cấu hình SSH không thể khóa bạn khỏi server. Nếu cả ba đều đúng, các bước cơ bản đã hoàn tất.