
Trả lời nhanh: Nhận VPS Ubuntu mới, 30 phút đầu quyết định độ an toàn nhiều tháng sau: (1) cập nhật hệ thống, (2) tạo user thường + sudo, (3) SSH key và tắt đăng nhập mật khẩu, (4) đổi port SSH, (5) bật firewall UFW, (6) fail2ban chặn dò mật khẩu, (7) swap 2 GB, (8) múi giờ và NTP, (9) unattended-upgrades tự vá bảo mật, (10) giới hạn log/journal, (11) cài bộ giám sát, (12) chạy benchmark lấy bản ghi nền. Làm tuần tự theo bài, mỗi mục 2-3 phút, máy từ 'trần trụi giữa chợ' thành 'nhà có khóa có chuông'.
VPS mới nhận là căn nhà chưa lắp khóa: SSH root mở toang, bot toàn cầu bắt đầu dò mật khẩu trong vài phút đầu tiên (xem auth.log mà tin). Bài này là nghi thức nhập trạch 12 bước, thứ tự đã tính để không tự khóa mình ngoài cửa, câu lệnh dán được, và giải thích ngắn vì sao từng bước tồn tại. Làm một lần, dùng làm khuôn cho mọi máy sau.
- Bước 1-4: cập nhật, user riêng, SSH key, đổi port, đóng cửa chính trước tiên
- Bước 5-6: UFW + fail2ban, tường rào và chó giữ nhà
- Bước 7-9: swap, giờ giấc, tự vá bảo mật, nền nếp sinh hoạt
- Bước 10-12: log có kỷ luật, giám sát, benchmark nền, để tương lai có cái mà so
Bước 1-4: Đóng cửa chính
apt update && apt full-upgrade -y && reboot # (1) va het lo hong ton dong tu image
adduser ban && usermod -aG sudo ban # (2) user thuong co sudo
# (3) tu MAY CA NHAN: ssh-copy-id ban@IP, roi thu dang nhap user moi TRUOC khi khoa
# /etc/ssh/sshd_config: PermitRootLogin no · PasswordAuthentication no
# (4) cung file do: Port 2222 (so tuy chon)
systemctl restart sshTrình tự là sống còn: xác nhận đăng nhập được bằng user mới + key ở một cửa sổ SSH khác rồi mới tắt mật khẩu và root, quy tắc "chưa thử chìa mới, đừng vứt chìa cũ". Đổi port không chống được người chủ đích nhưng cắt 95% tiếng ồn bot quét cổng mặc định, auth.log sạch để mắt thấy được thứ đáng ngờ thật.
Bước 5-6: Tường rào và chó giữ nhà
ufw allow 2222/tcp && ufw allow 80,443/tcp # (5) chi mo dung cua can
ufw enable
apt install -y fail2ban # (6) sai mat khau nhieu lan = cam IP
systemctl enable --now fail2banTriết lý UFW: mặc định đóng hết, mở từng cửa có tên, database, panel nội bộ vĩnh viễn không cần mở (bind 127.0.0.1 + SSH tunnel như các bài trước đã dặn). fail2ban đọc log và cấm IP dò dẫm, với SSH đã chỉ-key thì nó là lớp chống ồn thêm, gần như zero cấu hình.
Bước 7-9: Nền nếp sinh hoạt
# (7) swap 2 GB, day an toan chong OOM (bai swap giai thich du)
fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab && sysctl vm.swappiness=10
timedatectl set-timezone UTC # (8) UTC + tu quy doi, hoac Asia/Ho_Chi_Minh, chon MOT quy uoc
apt install -y unattended-upgrades # (9) tu cai ban va bao mat hang dem
dpkg-reconfigure -plow unattended-upgradesMúi giờ là quyết định nhỏ gây đau lâu: chọn một quy ước cho mọi máy của bạn (bài cron đã kể chuyện 2h-UTC-là-9h-VN) và ghi vào sổ tay. unattended-upgrades chỉ tự cài bản vá bảo mật, loại cập nhật không làm là nguy hiểm hơn làm.
Bước 10-12: Kỷ luật log, tai mắt, và bản ghi nền
# (10) journal khong duoc an ca o dia
# /etc/systemd/journald.conf: SystemMaxUse=500M → systemctl restart systemd-journald
# (11) tai mat: Netdata mot dong (bai giam sat) + them monitor vao Kuma neu co
# (12) ban ghi nen, do luc may sach de sau nay co moc so sanh
apt install -y sysbench fio
sysbench cpu --threads=1 --time=10 run | grep 'events per second'
fio --name=t --filename=/tmp/t --size=1G --rw=randread --bs=4k --iodepth=32
--numjobs=4 --time_based --runtime=30 --group_reporting | grep -E 'IOPS|lat'
rm /tmp/t # luu ket qua vao ghi chu, 'ho so suc khoe luc sinh' cua mayBước 12 ít ai làm mà đáng nhất: ba tháng sau thấy máy 'hình như chậm đi', bạn có con số gốc để so thay vì cãi nhau với cảm giác, và là bằng chứng đối chiếu cam kết phần cứng của nhà cung cấp (NVMe thật cho IOPS hàng chục nghìn với latency dưới mili-giây, như các bài A-cụm đã dạy đọc).
Kiểm sau khi làm xong 12 việc
# 1. Dang nhap bang mat khau da tat chua grep -E "^PasswordAuthentication|^PermitRootLogin" /etc/ssh/sshd_config # 2. Tuong lua dang bat va chi mo cong can thiet ufw status verbose # 3. Cong nao dang mo ra ngoai ss -ltnp | grep -v 127.0.0.1 # 4. Cong cu chan do mat khau dang chay fail2ban-client status fail2ban-client status sshd # 5. Cap nhat bao mat tu dong dang bat systemctl status unattended-upgrades # 6. Mui gio dung timedatectl # 7. Vung nho tam da co swapon --show && free -h # 8. Nhat ky co bi gioi han kich thuoc khong journalctl --disk-usage # 9. Xem ai da thu dang nhap trong 24 gio qua grep "Failed password" /var/log/auth.log | tail -20 grep "Accepted publickey" /var/log/auth.log | tail -10
Lệnh cuối là lệnh nên chạy trong tuần đầu: máy chủ mới bị dò mật khẩu trong vòng vài giờ sau khi có địa chỉ công khai. Thấy hàng trăm lần thất bại là bình thường; thấy một lần thành công mà không phải bạn thì phải xử lý ngay.
Ba việc quan trọng nhất trong 12 việc
| Việc | Vì sao quan trọng nhất |
|---|---|
| Tắt đăng nhập bằng mật khẩu, chỉ dùng khóa | Chặn được toàn bộ các đợt dò mật khẩu tự động, đây là biện pháp hiệu quả nhất |
| Bật tường lửa và chỉ mở cổng cần thiết | Dịch vụ bạn quên tắt là dịch vụ bị khai thác |
| Bật cập nhật bảo mật tự động | Lỗ hổng đã công bố mà chưa vá là rủi ro lớn nhất và cũng dễ tránh nhất |
Chín việc còn lại đều đáng làm, nhưng nếu chỉ có 20 phút thì làm ba việc này trước.
Việc nên làm trong tuần đầu, sau 12 việc kia
- Dựng sao lưu và khôi phục thử một lần trước khi đưa dữ liệu thật lên.
- Dựng giám sát và cảnh báo, ít nhất là cảnh báo khi ổ đĩa sắp đầy và khi dịch vụ chính không phản hồi.
- Ghi lại một trang tài liệu: máy này chạy gì, đăng nhập thế nào, sao lưu ở đâu, khôi phục ra sao. Viết lúc còn nhớ, không phải lúc đang có sự cố.
Câu hỏi thường gặp
Có script nào làm cả 12 bước một phát không?
Nên tự chạy tay lần đầu để hiểu từng bước, rồi gói thành script riêng của bạn cho các máy sau (hoặc để Claude Code viết theo đúng checklist này). Script người lạ trên mạng chạy bằng root là thói quen nên bỏ.
Lỡ tự khóa mình ngoài cửa SSH thì sao?
Bình tĩnh: nhà cung cấp tử tế có console/VNC qua panel, vào bằng đường đó sửa lại sshd_config. Đây là lý do quy tắc 'thử chìa mới trước khi vứt chìa cũ' được in đậm trong bài.
Ubuntu 24.04 hay Debian cho VPS?
Cả hai xuất sắc và checklist này áp gần như nguyên xi. Ubuntu: tài liệu dày, mọi hướng dẫn trong cụm bài viết cho nó. Debian: tối giản hơn chút. Người mới cứ Ubuntu LTS cho đồng bộ hệ sinh thái.
Docker có thay được các bước này không?
Không, Docker chạy TRÊN nền này. Máy chủ vẫn cần khóa cửa (SSH, firewall), nền nếp (swap, log, vá) rồi mới đến chuyện container bên trên (bài cài Docker tiếp ngay sau checklist này).
Bài viết liên quan
- Cài Docker trên VPS Ubuntu 24.04 chuẩn từng lệnh
- Giám sát VPS miễn phí: Netdata, Kuma, Telegram
- VPS ổ Enterprise U.2 NVMe RAID 10 tại TND
- Claude Code chạy chậm trên VPS: nghẽn ở ổ đĩa, RAM hay mạng
- VPS Windows vs Linux: dev nên chọn cái nào (2026)
- Vibe code với Claude: best stack 2026-2027
- VPS 2GB chạy Postgres + Redis + Next.js: tối ưu RAM cho dev solo
- Self-host Tabby AI coding assistant trên VPS có GPU
- Shadowrocket cấu hình proxy IPv4 SOCKS5 iOS 2026



