❤️ AZDIGI chính thức cập nhật hệ thống blog mới hoàn chỉnh. Tuy nhiên có thể một số bài viết bị sai lệch hình ảnh, hãy ấn nút Báo cáo bài viết ở cuối bài để AZDIGI cập nhật trong thời gian nhanh nhất. Chân thành cám ơn.
Bạn vừa mua một VPS Linux, SSH vào lần đầu, chạy vài lệnh cài đặt rồi để đó. Mọi thứ chạy ngon, không có gì bất thường. Nhưng thực tế thì khác hoàn toàn so với những gì bạn thấy.

Ngay khi VPS được cấp IP public, nó đã nằm trong tầm ngắm. Không phải “có thể bị tấn công” mà là chắc chắn đang bị quét, ngay lúc này.
VPS mới mua = cánh cửa mở toang
Có một sự thật mà nhiều người mới dùng VPS không biết: một VPS vừa được tạo sẽ bị scan port trong khoảng 15 phút đầu tiên. Không phải vài giờ, không phải vài ngày. 15 phút.
Các hệ thống quét tự động (botnet, scanner) chạy liên tục trên Internet, rà soát toàn bộ dải IPv4 để tìm máy chủ mới. Khi phát hiện một IP có port 22 (SSH) mở, chúng lập tức bắt đầu thử đăng nhập. Tài khoản root, mật khẩu phổ biến, dictionary attack, dò mật khẩu. Tất cả diễn ra tự động, 24/7, không cần con người can thiệp.
Theo dữ liệu từ các honeypot research và báo cáo của Rapid7, Shodan, GreyNoise:
- Trung bình một VPS mới nhận được hàng nghìn lượt login thất bại trong 24 giờ đầu
- Các IP mới được cấp bị scan nhanh hơn IP cũ, vì botnet ưu tiên quét dải IP mới allocate
- Port 22 (SSH), 80/443 (HTTP/HTTPS), 3306 (MySQL), 6379 (Redis) là những mục tiêu quét đầu tiên
- Nguồn tấn công phổ biến nhất đến từ các botnet tại Trung Quốc, Nga, và Brazil
Tức là bạn chưa kịp cài gì thì VPS đã có “khách” gõ cửa rồi.
Đừng tin lời mình, hãy tự kiểm tra
Nếu bạn đang có một VPS chạy được vài ngày (hoặc thậm chí vài giờ), hãy thử chạy lệnh sau để xem có bao nhiêu lượt đăng nhập SSH thất bại:
Trên Ubuntu/Debian:
grep "Failed password" /var/log/auth.log | wc -l
Trên AlmaLinux/Rocky/CentOS:
grep "Failed password" /var/log/secure | wc -l
Con số bạn thấy có thể là vài trăm, vài nghìn, hoặc thậm chí hàng chục nghìn. Và đó chỉ là SSH thôi, chưa tính các dịch vụ khác.
Muốn xem chi tiết hơn, thử lệnh này để liệt kê top IP đang cố dò mật khẩu:
Ubuntu/Debian:
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -20
AlmaLinux/Rocky/CentOS:
grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -20
Bạn sẽ thấy một danh sách IP kèm số lần thử. Mỗi dòng là một nguồn đang cố đột nhập vào server của bạn. Hầu hết đến từ botnet tự động, nhưng điều đó không có nghĩa là chúng vô hại.
Nếu VPS bạn mới tạo chưa đầy 1 giờ mà đã có vài chục lượt Failed password, đừng hoảng. Đó là chuyện bình thường trên Internet. Vấn đề không phải là “có bị tấn công không” mà là “bạn đã sẵn sàng chống lại chưa”.
Top hướng tấn côngs nhắm vào VPS Linux (2025-2026)
Trước khi phòng thủ, bạn cần hiểu đối phương tấn công bằng cách nào. Dưới đây là các hướng tấn công phổ biến nhất nhắm vào VPS Linux hiện tại, xếp theo mức độ thường gặp.
1. SSH Dò mật khẩu
Đây vẫn là hướng tấn công số 1, đơn giản vì nó quá dễ thực hiện. Botnet thử hàng triệu tổ hợp username/password trên port 22. Nếu bạn dùng password đơn giản hoặc để tài khoản root login trực tiếp, chỉ là vấn đề thời gian trước khi bị chiếm quyền.
Mục tiêu ưa thích: root, admin, ubuntu, test, deploy, git.
2. Exposed Services (dịch vụ mở ra Internet không cần thiết)
MySQL chạy trên 0.0.0.0:3306, Redis không có password, MongoDB mở public, phpMyAdmin treo trên port 80 mà không có authentication layer nào phía trước. Đây là những “quà tặng” mà attacker luôn tìm kiếm.
Hoặc gần đây nhất là người dùng OpenClaw/ClawdBot tự ý mở port 18789 công khai khi cài trên VPS hoặc máy tính cá nhân để tiện truy cập từ xa, dẫn đến việc bị khai thác vì port này đang rất là hot, các bot scan cũng ưu tiên đi dò tìm theo port này.
Nhiều người cài xong service rồi quên rằng mặc định nó listen trên tất cả interface, bao gồm cả IP public.
3. Outdated Software (phần mềm không cập nhật)
Kernel cũ, OpenSSH chưa patch, PHP/MySQL version hết support. Mỗi CVE được công bố là một cơ hội cho attacker, và exploit code thường xuất hiện trên GitHub chỉ vài ngày sau khi lỗ hổng được public.
Đặc biệt nguy hiểm: các VPS “cài xong rồi quên”, chạy hàng năm không update.
4. Cryptomining Malware
Khi attacker chiếm được quyền truy cập (dù chỉ là user thường), việc đầu tiên họ làm thường là cài cryptominer. CPU bạn chạy 100% liên tục, hóa đơn cloud tăng vọt, mà bạn không biết vì không monitor.
Các biến thể mới còn biết cách ẩn process, sửa output của top và ps để không bị phát hiện.
5. Web Application Attacks
Nếu VPS chạy website (WordPress, Laravel, Node.js…), bạn mở thêm một mặt trận nữa. SQL injection, XSS, file upload vulnerabilities, path traversal. Các scanner tự động quét hàng nghìn URL pattern mỗi ngày để tìm lỗ hổng.
WordPress đặc biệt là mục tiêu lớn vì số lượng plugin/theme chất lượng kém rất nhiều.
6. Misconfigured Docker / Container Escape
Docker ngày càng phổ biến trên VPS, nhưng nhiều người không biết rằng cấu hình Docker mặc định có thể bypass firewall rules. Docker tự thêm iptables rules, mở port trực tiếp ra ngoài mà UFW/firewalld không chặn được.
Thêm vào đó, container chạy với quyền root, mount / vào container, hay expose Docker socket (/var/run/docker.sock) đều là các lỗi cấu hình có thể dẫn đến chiếm toàn bộ host.
7. DDoS (Distributed Denial of Service)
Không nhắm vào việc chiếm quyền, nhưng DDoS có thể làm VPS bạn sập hoàn toàn hoặc bị nhà cung cấp null-route IP. Đặc biệt phổ biến nếu bạn chạy game server, proxy, hoặc service nào đó mà ai đó không thích.
Lưu ý: các hướng tấn công này không hoạt động riêng lẻ. Một cuộc tấn công thực tế thường kết hợp nhiều hướng. Ví dụ: scan port → tìm thấy Redis mở → khai thác để ghi SSH key → chiếm quyền root → cài cryptominer. Tất cả diễn ra tự động trong vài phút.
Mô hình bảo mật theo lớp (Security Layers)
Không có một giải pháp bảo mật nào giải quyết được tất cả. Bảo mật VPS cần được xây dựng theo nhiều lớp, mỗi lớp bảo vệ một khía cạnh khác nhau. Nếu một lớp bị xuyên thủng, lớp tiếp theo vẫn giữ được.
Mình sẽ dùng mô hình 5 lớp xuyên suốt serie này:
┌─────────────────────────────────────┐
│ 5. MONITORING │
│ Giám sát — phát hiện — cảnh báo │
├─────────────────────────────────────┤
│ 4. DATA │
│ Mã hóa — backup — access control │
├─────────────────────────────────────┤
│ 3. APPLICATION │
│ Web server — database — app config │
├─────────────────────────────────────┤
│ 2. OPERATING SYSTEM │
│ User — permission — kernel — update │
├─────────────────────────────────────┤
│ 1. NETWORK │
│ Firewall — SSH — port — protocol │
└─────────────────────────────────────┘
Layer 1: Network (Mạng)
Lớp ngoài cùng, tuyến phòng thủ đầu tiên. Quyết định ai được phép kết nối đến VPS và qua những port/protocol nào. Bao gồm firewall (UFW, firewalld, iptables), cấu hình SSH, quản lý port, và các biện pháp như fail2ban hay giới hạn tần suất.
Nếu lớp này chặt, phần lớn tấn công tự động sẽ bị chặn ngay từ đầu.
Layer 2: Operating System (Hệ điều hành)
Quản lý user và phân quyền, cập nhật kernel và packages, cấu hình sudo, tắt các service không cần thiết. Đây là nền tảng mà mọi thứ phía trên chạy trên đó.
Một OS được tăng cường bảo mật tốt sẽ giới hạn thiệt hại ngay cả khi attacker tìm được đường vào.
Layer 3: Application (Ứng dụng)
Web server (Nginx, Apache), database (MySQL, PostgreSQL), runtime (PHP, Node.js, Python), và các ứng dụng bạn deploy. Mỗi phần mềm đều có bề mặt tấn công riêng và cần được cấu hình bảo mật riêng.
Cài mặc định thường không an toàn. Bạn cần chủ động tắt module không dùng, giới hạn quyền truy cập, và cấu hình đúng.
Layer 4: Data (Dữ liệu)
Mã hóa dữ liệu (at rest và in transit), backup strategy, kiểm soát ai đọc/ghi được file nào. SSL/TLS cho web, encryption cho database sensitive fields, backup tự động và kiểm tra khôi phục định kỳ.
Dữ liệu là thứ có giá trị nhất trên VPS. Mất server thì dựng lại được, mất dữ liệu thì không.
Layer 5: Monitoring (Giám sát)
Lớp này không ngăn chặn tấn công, mà giúp bạn phát hiện khi có chuyện xảy ra. Log management, alerting, phát hiện xâm nhập, resource monitoring. Không có monitoring nghĩa là bạn bị hack mà không biết, có khi hàng tháng sau mới phát hiện.
Nhiều vụ breach nghiêm trọng bị phát hiện muộn không phải vì thiếu phòng thủ, mà vì thiếu giám sát.
Roadmap serie bảo mật VPS Linux
Serie này gồm 12 bài, mỗi bài tập trung vào một khía cạnh cụ thể. Bạn có thể đọc theo thứ tự hoặc nhảy đến bài mình cần, nhưng mình khuyến khích đọc lần lượt vì các bài xây dựng trên nhau.
- Tổng quan bảo mật VPS Linux, Hiểu rõ mối nguy trước khi phòng thủ (bài này)
- Tăng cường bảo mật SSH, Key-based auth, đổi port, disable root login, 2FA cho SSH
- Firewall thực chiến, UFW (Ubuntu) và firewalld (AlmaLinux), rules cho từng use case
- Fail2Ban và chống dò mật khẩu, Tự động ban IP tấn công, custom jail cho từng service
- User management và phân quyền, sudo, groups, file permissions, principle of least privilege
- Tự động cập nhật bảo mật, Unattended upgrades, dnf-automatic, kernel live patching
- Bảo mật web server, Nginx/Apache tăng cường bảo mật, HTTP headers, giới hạn tần suất
- Bảo mật database, MySQL/MariaDB/PostgreSQL tăng cường bảo mật, network binding, backup mã hóa
- Docker security, Rootless containers, network isolation, image scanning
- SSL/TLS và mã hóa, Let’s Encrypt, certificate management, HSTS, mã hóa dữ liệu
- Monitoring và Phát hiện xâm nhập, Log management, AIDE/OSSEC, alerting
- Backup và Phục hồi sự cố, Chiến lược backup 3-2-1, kiểm tra restore, automation
VPS của bạn đang ở mức nào?
Trước khi đi sâu vào từng bài, hãy dành 2 phút tự đánh giá nhanh tình trạng bảo mật VPS hiện tại. Trả lời Yes hoặc No cho 10 câu hỏi sau:
- Bạn đã tắt đăng nhập root qua SSH chưa?
- Bạn dùng SSH key thay vì password để đăng nhập?
- VPS có đang chạy firewall (UFW/firewalld) với rules cụ thể không?
- Bạn có Fail2Ban hoặc công cụ tương tự đang hoạt động không?
- Hệ thống có được cập nhật bảo mật tự động hoặc định kỳ (ít nhất hàng tuần) không?
- Các service (MySQL, Redis, Memcached…) chỉ listen trên localhost hoặc private network?
- Website có SSL/TLS và redirect HTTP sang HTTPS không?
- Bạn có backup tự động và đã test restore thành công ít nhất một lần?
- Bạn có cách nào để biết khi VPS bị truy cập bất thường (log, alert, monitoring)?
- Nếu VPS bị hack ngay bây giờ, bạn có kế hoạch xử lý (xử lý sự cố) không?
Đếm số câu Yes:
- 0-3 Yes: 🔴 VPS đang trong tình trạng nguy hiểm. Đọc serie này từ đầu đến cuối là ưu tiên số 1.
- 4-6 Yes: 🟡 Có nền tảng cơ bản nhưng còn nhiều lỗ hổng. Các bài về monitoring và backup sẽ đặc biệt hữu ích.
- 7-9 Yes: 🟢 Khá tốt. Đọc để kiểm tra lại và bổ sung những gì còn thiếu.
- 10 Yes: 💪 Tuyệt vời. Bạn có thể đọc serie này để cross-check và tìm thêm tips nâng cao.
Phần lớn VPS mình từng audit rơi vào nhóm 0-3. Không phải vì người dùng không quan tâm bảo mật, mà vì họ không biết bắt đầu từ đâu. Serie này viết ra để giải quyết đúng vấn đề đó.
Tổng kết
Bài này không có lệnh nào để chạy, không có config nào để sửa. Mục đích duy nhất là giúp bạn nhìn thấy bức tranh toàn cảnh: VPS của bạn đang bị tấn công liên tục, các mối nguy rất đa dạng, và bảo mật cần được xây dựng có hệ thống theo từng lớp.
Từ bài tiếp theo, mình sẽ đi vào thực hành. Bắt đầu với thứ quan trọng nhất và cũng là thứ bị tấn công nhiều nhất: SSH.
👉 Bài tiếp theo: Tăng cường bảo mật SSH, Key-based auth, đổi port, disable root login, 2FA
Có thể bạn cần xem thêm
- Bảo vệ SSH toàn diện trên Linux VPS
- Checklist bảo mật VPS Linux - 15 bước thiết yếu
- Firewall nâng cao trên Linux VPS - UFW và firewalld cho production
- Backup và phục hồi sự cố cho VPS Linux - Kế hoạch toàn diện
- Tăng cường bảo mật Kernel và Network trên Linux VPS - sysctl, AppArmor và SELinux
- Bảo mật Docker trên VPS
Về tác giả
Trần Thắng
Chuyên gia tại AZDIGI với nhiều năm kinh nghiệm trong lĩnh vực web hosting và quản trị hệ thống.