Checklist 30 phút để secure Ubuntu server ngay sau khi cài mới
Server Ubuntu mới cài giống căn nhà vừa nhận chìa khóa: sạch, trống, chạy được — nhưng chưa khóa cửa, chưa gắn camera, chưa tắt lối phụ. Nếu đưa thẳng lên Internet, bot quét SSH, brute-force, khai thác CVE → xảy ra trong vài phút.
Bài này là checklist thực dụng, làm trong ~30 phút, ưu tiên giảm rủi ro lớn nhất: user, SSH, firewall, update, log, service, hardening nền.
Mục tiêu: server Ubuntu an toàn “đủ tốt” sau cài mới, trước khi deploy app.
0–3 phút: Cập nhật hệ thống ngay
Bản cài ISO thường lỗi thời. Update trước → vá CVE nền.
Lý do: nhiều cuộc tấn công không cần mật khẩu, chỉ cần service vulnerable. Update → giảm bề mặt tấn công tức thì.
3–7 phút: Tạo user thường, khóa root login
Không vận hành bằng root. Tạo user có sudo.
adduser deploy
usermod -aG sudo deploy
Kiểm tra:
su - deploy
sudo whoami
Kết quả cần:
root
Khóa mật khẩu root:
sudo passwd -l root
Nguyên tắc: mỗi admin có user riêng. Không share account. Khi có sự cố → audit dễ hơn.
7–12 phút: Secure SSH
SSH là cửa chính. Bot sẽ scan port 22 liên tục. Hardening SSH → ưu tiên cao.
Tạo SSH key trên máy cá nhân
Trên laptop/dev machine:
ssh-keygen -t ed25519 -C "deploy@server"
Copy key lên server:
ssh-copy-id deploy@SERVER_IP
Test login key:
ssh deploy@SERVER_IP
Chỉ tiếp tục khi login bằng key OK.
Chỉnh cấu hình SSH
Mở file:
sudo nano /etc/ssh/sshd_config
Thiết lập:
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 30
X11Forwarding no
AllowUsers deploy
Nếu muốn đổi port SSH, ví dụ 2222:
Port 2222
Kiểm tra config trước khi reload:
sudo sshd -t
Reload:
sudo systemctl reload ssh
Test terminal mới, không đóng terminal cũ:
ssh -p 2222 deploy@SERVER_IP
Cảnh báo: sai SSH config → tự khóa ngoài server. Luôn giữ 1 session cũ đang mở trước khi reload/test.
12–16 phút: Bật firewall UFW
Firewall mặc định nên deny inbound, allow outbound.
sudo tar czf /root/etc-backup-$(date +%F).tar.gz /etc
Lưu backup ngoài server. Backup cùng server → mất server là mất luôn.
Checklist tóm tắt 30 phút
– Update OS → vá lỗi nền.
– Tạo user sudo → không dùng root.
– SSH key-only → tắt password login.
– Disable root SSH → chặn target phổ biến.
– UFW deny inbound → chỉ mở port cần.
– Fail2ban → giảm brute-force.
– Auto security update → giảm quên vá.
– Tắt service dư → giảm attack surface.
– Time/log chuẩn → dễ audit.
– Snapshot/backup → có đường lui.
Các lỗi phổ biến cần tránh
Tắt password SSH trước khi test key
Sai key → mất quyền truy cập. Luôn test session mới trước.
Mở toàn bộ port vì “debug”
ufw allow 0:65535/tcp → tự phá firewall. Chỉ allow port cụ thể.
Dùng mật khẩu yếu cho sudo user
SSH key không giúp nếu console/VNC/provider panel bị lộ. Password user vẫn cần mạnh.
Không backup
Security không chỉ chống hacker. Sai config, xóa nhầm, update lỗi → cũng là rủi ro.
Quên monitoring
Secure không phải làm 1 lần. Cần biết khi có login lạ, disk đầy, service chết.
Kết luận thực tế
30 phút đầu sau khi cài Ubuntu quyết định phần lớn mức độ an toàn ban đầu. Không cần công cụ phức tạp: update, user riêng, SSH key-only, firewall, Fail2ban, auto update, tắt service dư, snapshot. Những bước này chặn phần lớn bot scan, brute-force, lỗi cấu hình phổ biến.
Sau checklist này, server chưa “bất khả xâm phạm”, nhưng đã qua mức nguy hiểm nhất: mặc định trần trụi trên Internet. Bước tiếp theo: hardening theo workload — Nginx/TLS, DB private network, app secrets, container security, monitoring, alerting, backup định kỳ, incident response.