Sau khi nhận bàn giao VPS mới, tâm lý thường thấy là muốn cài đặt ngay Nginx, Docker và đưa website lên chạy thử càng sớm càng tốt.
Tuy nhiên, một VPS vừa khởi tạo từ hệ điều hành mặc định vẫn còn rất nhiều điểm hở: tài khoản ban đầu thường dùng mật khẩu tạm, cổng SSH để mặc định, tường lửa chưa cấu hình và quan trọng nhất là bạn chưa có phương án cứu hộ dự phòng. Nếu vội vàng đưa dữ liệu thật lên chạy ngay, chỉ cần một lần gõ nhầm lệnh cấu hình mạng hoặc sửa sai file SSH là bạn có thể tự khóa mình ở ngoài, hoặc vô tình để lộ cơ sở dữ liệu ra Internet.
Dành ra khoảng một tiếng đồng hồ đầu tiên để hoàn thiện 12 bước dưới đây sẽ giúp hệ thống có nền tảng bảo mật vững vàng, chủ động phòng ngừa rủi ro và thuận tiện cho việc vận hành lâu dài.
1. Xác nhận quyền sở hữu tài khoản và đường cứu hộ khẩn cấp
Trước khi mở cửa sổ dòng lệnh để gõ bất kỳ lệnh Linux nào, hãy kiểm tra trang quản trị (Portal) của nhà cung cấp dịch vụ VPS:
- Tài khoản và thông tin thanh toán: Đảm bảo tài khoản thuê VPS thuộc sở hữu của công ty hoặc gắn với email công việc chính thức. Bật ngay tính năng bảo mật hai lớp (2FA) và kiểm tra hạn sử dụng của thẻ thanh toán để tránh việc máy chủ bị tạm khóa do quên gia hạn.
- Đường cứu hộ (Web Console / Rescue Mode): Hãy tìm và thử mở tính năng Console trực tiếp trên trình duyệt web của nhà cung cấp. Khi bạn cấu hình sai SSH hoặc tường lửa chặn mất cổng kết nối mạng, Web Console là con đường duy nhất giúp bạn đăng nhập vào máy chủ để sửa lại cấu hình mà không phải cài lại toàn bộ hệ điều hành.
2. Ghi lại thông tin cấu hình và kiểm tra tài nguyên thực tế
Nhiều nhà cung cấp tạo sẵn các thông số mặc định mà bạn cần ghi lại vào tài liệu nội bộ:
- Địa chỉ IP tĩnh (Public IP) và IP nội bộ (Private IP nếu có).
- Cấu hình phần cứng thực tế: Gõ lệnh
free -hvàdf -hđể xác nhận số CPU, dung lượng RAM và dung lượng ổ đĩa có đúng với gói dịch vụ bạn đã thanh toán hay không. Nếu cần đối chiếu nhu cầu tài nguyên thực tế với cấu hình máy chủ, hãy xem bài VPS cần bao nhiêu RAM, CPU và dung lượng cho website doanh nghiệp?. - Hệ điều hành và phiên bản nhân (Kernel): Xác nhận phiên bản Ubuntu/Debian đang chạy có phải là bản hỗ trợ dài hạn (LTS) hay không.
3. Đặt lại Hostname và đồng bộ múi giờ hệ thống
Máy chủ mới thường có tên mặc định dạng chuỗi ký tự ngẫu nhiên hoặc tên chung chung như ubuntu-s-1vcpu-1gb. Hãy đổi lại hostname để tránh nhầm lẫn tai hại khi bạn quản lý nhiều máy chủ cùng lúc:
- Đặt tên gợi nhớ môi trường, ví dụ:
web-prod-01(máy chủ web production) hoặcdb-staging-01. - Đồng bộ thời gian: Kiểm tra múi giờ hệ thống bằng lệnh
timedatectl. Nên đặt múi giờ chuẩn (UTC hoặcAsia/Ho_Chi_Minh) và đảm bảo tiến trình đồng bộ thời gian mạng (NTP/timesyncd) đang chạy. Múi giờ lệch sẽ khiến file log bị sai mốc thời gian, chứng chỉ SSL bị báo lỗi chưa đến hạn dùng, và các lệnh cron job chạy sai giờ cao điểm.
4. Cập nhật các bản vá bảo mật hệ điều hành
Bản cài đặt của nhà cung cấp có thể được đóng gói từ vài tháng trước, đồng nghĩa với việc có nhiều lỗ hổng bảo mật đã được công bố nhưng chưa được vá trên máy chủ của bạn.
- Chạy lệnh cập nhật danh sách gói phần mềm và nâng cấp các bản vá mới nhất:
sudo apt update && sudo apt upgrade -y- Bật tính năng tự động cập nhật bản vá bảo mật quan trọng (
unattended-upgrades) để hệ điều hành tự động vá các lỗi bảo mật khẩn cấp của kernel và thư viện hệ thống. Quy trình cập nhật an toàn được hướng dẫn chi tiết tại bài viết Cập nhật Ubuntu Server an toàn: Tránh rủi ro gián đoạn.
5. Tạo tài khoản quản trị riêng, không dùng trực tiếp tài khoản root
Đăng nhập hàng ngày bằng tài khoản root là thói quen rất rủi ro. Một câu lệnh gõ nhầm khi đang mang quyền tối cao có thể xóa sạch toàn bộ hệ thống mà không có bất kỳ cảnh báo nào.
- Tạo một tài khoản người dùng mới đại diện cho bạn (hoặc nhóm kỹ thuật).
- Cấp quyền quản trị có kiểm soát bằng cách thêm user này vào nhóm
sudo. - Mọi thao tác thay đổi hệ thống sau này sẽ phải thông qua lệnh
sudo, giúp ghi lại nhật ký rõ ràng và giảm thiểu thao tác nhầm lẫn. Bạn có thể xem thêm bài Bảo mật tài khoản quản trị và quyền sudo trên VPS.
6. Cấu hình xác thực bằng SSH Key và tắt đăng nhập bằng mật khẩu
Mật khẩu dù dài đến đâu cũng luôn là mục tiêu của hàng nghìn con bot dò quét tự động (Brute-force) trên Internet mỗi ngày.
- Tạo cặp khóa SSH Key trên máy tính cá nhân của bạn và đẩy khóa công khai (Public Key) lên file
~/.ssh/authorized_keyscủa tài khoản vừa tạo. - Quy tắc an toàn sống còn: Sau khi thêm khóa, hãy mở một cửa sổ terminal mới để thử đăng nhập bằng SSH key xem có vào được không. Tuyệt đối không tắt cửa sổ SSH hiện tại cho tới khi bạn chắc chắn khóa mới đã hoạt động hoàn hảo.
- Khi đã vào được bằng SSH key, hãy chỉnh sửa file
/etc/ssh/sshd_configđể tắt hoàn toàn tính năng đăng nhập bằng mật khẩu (PasswordAuthentication no) và cấm tài khoản root đăng nhập từ xa (PermitRootLogin no).
Chi tiết từng bước cấu hình được hướng dẫn cụ thể tại bài SSH key: Cách truy cập VPS an toàn và không dùng mật khẩu.
7. Thiết lập tường lửa (Firewall) theo nguyên tắc đóng hết, chỉ mở cổng cần thiết
Trên Ubuntu, công cụ tường lửa UFW (Uncomplicated Firewall) rất dễ cấu hình nhưng cần thực hiện đúng thứ tự:
- Cho phép cổng kết nối SSH trước tiên (mặc định cổng 22, hoặc cổng tùy chỉnh nếu bạn đã đổi):
sudo ufw allow 22/tcp- Cho phép các cổng phục vụ web công khai: Cổng 80 (HTTP) và cổng 443 (HTTPS).
- Bật tường lửa lên:
sudo ufw enableTuyệt đối không mở các cổng nội bộ như MySQL (3306), Redis (6379) hay cổng Docker daemon ra bên ngoài Internet. Danh sách các cổng nên mở và nên đóng được phân tích chi tiết trong bài Firewall VPS nên mở cổng nào và đóng cổng nào?.
8. Cấu hình bộ nhớ ảo (Swap Space) để tránh bị tràn RAM đột ngột
Các gói VPS khởi đầu thường có RAM khiêm tốn (1 GB đến 2 GB). Khi bạn cài đặt phần mềm hoặc khi website đón lượng khách tăng nhẹ, RAM có thể cạn kiệt trong chốc lát. Nếu không có Swap, cơ chế OOM Killer của nhân Linux sẽ lập tức can thiệp và tắt tiến trình ngốn RAM nhất (thường là MySQL hoặc ứng dụng web).
- Tạo một file Swap khoảng 1 GB đến 2 GB trên ổ cứng. Swap không thể thay thế RAM thật về tốc độ, nhưng đóng vai trò như phao cứu sinh giúp hệ thống không bị crash đột ngột khi bộ nhớ quá tải.
- Cách nhận diện và phòng ngừa hiện tượng tràn RAM được trình bày tại bài VPS hết RAM và OOM Killer: Dấu hiệu, kiểm tra và phòng ngừa.
9. Quy hoạch rõ ràng cấu trúc thư mục dữ liệu và mã nguồn
Đừng ném file mã nguồn, database và file upload của khách hàng lung tung trên máy chủ. Hãy thống nhất một cấu trúc chuẩn ngay từ đầu:
- Thư mục chứa mã nguồn hoặc Docker Compose: ví dụ đặt tại
/opt/apps/hoặc/var/www/. - Dữ liệu bền vững (Persistent Data): Tách riêng thư mục lưu trữ database, file upload ảnh của khách hàng ra một thư mục cố định (ví dụ
/data/uploads/hoặc Docker named volumes) để phục vụ cho việc backup sau này. - Tuyệt đối không lưu file mật khẩu, file
.envhay API secret vào mã nguồn đưa lên Git công khai. Tham khảo bài Quản lý biến môi trường và Secret trong Docker Compose.
10. Thiết lập công cụ tự động sao lưu ra ngoài VPS
Đừng đợi đến khi website có hàng nghìn người dùng mới nghĩ đến chuyện backup. Hãy thiết lập cơ chế sao lưu ngay từ ngày đầu tiên:
- Lên lịch cron job tự động dump database và nén thư mục upload mỗi đêm.
- Điểm mấu chốt: File backup bắt buộc phải được tự động chuyển sang một dịch vụ lưu trữ độc lập bên ngoài VPS (như Cloudflare R2, AWS S3, hoặc Google Drive). File backup nằm trên cùng một ổ đĩa với máy chủ sẽ hoàn toàn vô dụng nếu VPS bị lỗi phần cứng hoặc bị xóa nhầm.
Để xây dựng chiến lược sao lưu đúng chuẩn và tối ưu chi phí lưu trữ, bạn có thể xem bài Chiến lược backup VPS cho doanh nghiệp nhỏ.
11. Bật hệ thống giám sát và cảnh báo từ bên ngoài
Cài đặt công cụ giám sát ngay từ đầu sẽ giúp bạn thu thập được dữ liệu hoạt động bình thường (baseline) của máy chủ trước khi có khách hàng truy cập:
- Cài đặt một công cụ Uptime Check bên ngoài kiểm tra IP và tên miền của bạn.
- Cài đặt agent theo dõi dung lượng ổ đĩa, CPU và RAM khả dụng để phát hiện sớm các hiện tượng rò rỉ bộ nhớ hoặc đầy đĩa cứng (xem bài Nên monitoring những gì trên một VPS chạy website?).
12. Thử khởi động lại máy chủ (Reboot Test) trước khi đưa vào chạy thật
Đây là bước kiểm tra thực tế mà rất nhiều người bỏ qua vì tâm lý ngại chờ đợi:
- Khi máy chủ chưa chứa dữ liệu quan trọng của khách hàng, hãy gõ lệnh:
sudo reboot- Chờ khoảng 1–2 phút rồi thử SSH lại bằng tài khoản thường và SSH key mới.
- Kiểm tra sau reboot: Tường lửa UFW có tự động bật lại không? Các dịch vụ Nginx/Docker có tự khởi động cùng hệ điều hành không? Bộ nhớ Swap có tự mount lại không?
Nếu có bất kỳ dịch vụ nào quên không bật tính năng tự chạy (systemctl enable), đây là thời điểm an toàn nhất để bạn phát hiện và khắc phục, thay vì phát hiện ra sau một đợt nhà cung cấp bảo trì định kỳ lúc nửa đêm.
Sau khi hoàn tất trọn vẹn 12 bước trên, VPS của bạn đã có một bộ khung bảo mật vững chắc, cơ chế cứu hộ rõ ràng và sẵn sàng đón nhận ứng dụng. Lúc này, bạn có thể tự tin bắt tay vào cài đặt Docker Compose hoặc web server để triển khai website lên môi trường thực tế, đồng thời chuyển sang lịch theo dõi định kỳ theo Quản trị VPS gồm những việc gì trong một tháng vận hành?.
Checklist tóm tắt 12 việc sau khi nhận VPS
- ☐ Đã kiểm tra tài khoản nhà cung cấp, bật 2FA và xác nhận tính năng Web Console hoạt động.
- ☐ Đã kiểm tra cấu hình phần cứng (RAM, CPU, Ổ đĩa) khớp với gói dịch vụ đã mua.
- ☐ Đã đổi Hostname dễ nhận biết và đồng bộ chuẩn múi giờ hệ thống (NTP).
- ☐ Đã chạy lệnh cập nhật các bản vá bảo mật hệ điều hành mới nhất (
apt update && apt upgrade). - ☐ Đã tạo tài khoản quản trị riêng thuộc nhóm
sudo, không làm việc trực tiếp bằng tài khoản root. - ☐ Đã cài đặt SSH Key cá nhân và tắt tính năng đăng nhập SSH bằng mật khẩu.
- ☐ Đã cấu hình tường lửa UFW: Chỉ mở cổng SSH, cổng 80 và 443; đóng toàn bộ cổng nội bộ.
- ☐ Đã thiết lập bộ nhớ ảo Swap từ 1 GB đến 2 GB để chống tràn RAM đột ngột.
- ☐ Đã quy hoạch rõ ràng cấu trúc thư mục chứa mã nguồn, dữ liệu tĩnh và quản lý file bí mật (
.env). - ☐ Đã lên lịch tự động sao lưu dữ liệu ra kho lưu trữ độc lập bên ngoài máy chủ.
- ☐ Đã cấu hình công cụ giám sát kiểm tra uptime và theo dõi tài nguyên phần cứng.
- ☐ Đã thực hiện thao tác Reboot thử nghiệm và xác nhận toàn bộ dịch vụ tự khởi động thành công.



