Một VPS có địa chỉ IP công khai sẽ bị bot dò đăng nhập gần như ngay sau khi khởi tạo; mở nhật ký đăng nhập sau vài giờ là thấy các lần thử tài khoản root, admin. Bảo mật VPS vì vậy không phải việc “làm sau khi website chạy ổn”, mà là việc của ngày đầu tiên.
Bảo mật VPS theo thứ tự ưu tiên: đăng nhập SSH bằng khóa và tắt đăng nhập mật khẩu, tắt đăng nhập root trực tiếp; bật tường lửa chỉ mở cổng cần thiết; bật cập nhật bảo mật tự động; chặn dò mật khẩu bằng Fail2Ban; tách quyền mỗi website; sao lưu ra ngoài VPS và thử khôi phục; theo dõi nhật ký, dung lượng, cảnh báo. Đổi cổng SSH chỉ giảm nhiễu, không thay được các bước trên. Khi có sự cố, các bước kiểm tra lỗi 500 an toàn sẽ giúp bạn khôi phục nhanh.
Thứ tự ưu tiên: làm gì trước, chống được gì
| Việc | Chống được | Ưu tiên |
|---|---|---|
| Khóa SSH, tắt đăng nhập mật khẩu và root | Dò mật khẩu, lộ mật khẩu | Ngày đầu |
| Tường lửa, chỉ mở SSH, 80, 443 | Truy cập vào dịch vụ lẽ ra chỉ dùng nội bộ (cơ sở dữ liệu, Redis, bảng điều khiển) | Ngày đầu |
| Cập nhật bảo mật tự động | Khai thác lỗ hổng đã có bản vá | Ngày đầu |
| Sao lưu ra ngoài VPS | Mất dữ liệu khi bị mã hóa tống tiền, xóa nhầm, lỗi ổ đĩa | Ngày đầu |
| Fail2Ban cho SSH và trang đăng nhập web | Dò mật khẩu hàng loạt, giảm tải | Tuần đầu |
| Tách quyền mỗi website, quyền tệp đúng | Một website bị nhiễm lan sang website khác | Tuần đầu |
| Giám sát, cảnh báo, quét mã độc | Phát hiện muộn khi đã bị xâm nhập | Duy trì định kỳ |
| WAF, chống DDoS qua dịch vụ trung gian | Tấn công tầng ứng dụng, quá tải | Khi website có rủi ro cao |
Bước 1: SSH bằng khóa, tắt mật khẩu và root
- Tạo một tài khoản thường có quyền sudo, không dùng root để làm việc hằng ngày.
- Tạo cặp khóa trên máy của bạn (ssh-keygen, nên dùng loại ed25519), đưa khóa công khai lên tài khoản đó trên VPS.
- Mở một phiên SSH thứ hai bằng khóa để xác nhận đăng nhập được, giữ nguyên phiên đầu.
- Đặt PasswordAuthentication no và PermitRootLogin no, nạp lại dịch vụ SSH.
- Kiểm tra cấu hình thực tế bằng lệnh sudo sshd -T, tìm hai dòng trên xem đã đúng chưa.
Bước 5 quan trọng vì một cái bẫy hay gặp: trên Ubuntu, tệp cấu hình chính nạp các tệp trong thư mục /etc/ssh/sshd_config.d/ trước, và OpenSSH dùng giá trị xuất hiện đầu tiên. Một số bản cài sẵn của nhà cung cấp cloud có tệp trong thư mục này bật lại đăng nhập mật khẩu, nên sửa ở tệp chính không có tác dụng (tài liệu OpenSSH của Ubuntu Server). Đặt thay đổi của bạn vào một tệp riêng trong sshd_config.d với tên đứng trước, hoặc sửa thẳng tệp đang bật mật khẩu.
Về đổi cổng SSH khỏi 22: việc này giảm lượng bot dò trong nhật ký, không chặn được kẻ tấn công có chủ đích. Nếu đổi, mở cổng mới trên tường lửa trước, kiểm tra cách bản phân phối của bạn quản lý dịch vụ SSH (một số bản Ubuntu mới khởi chạy SSH qua cơ chế socket của systemd), rồi mới đóng cổng cũ.
Bước 2: Tường lửa và dịch vụ chỉ nghe nội bộ
- Với VPS chạy website, chỉ mở cổng SSH, 80 và 443. Trên Ubuntu dùng UFW, trên AlmaLinux, Rocky Linux dùng firewalld.
- Cơ sở dữ liệu (3306), Redis (6379) đặt nghe ở 127.0.0.1, không mở ra Internet. Cần truy cập từ xa thì đi qua đường hầm SSH.
- Bảng điều khiển như aaPanel, CyberPanel, Webmin: đổi đường dẫn mặc định, giới hạn IP được vào nếu có thể, bật xác thực hai lớp.
- Nếu nhà cung cấp có tường lửa ở tầng mạng (cloud firewall), dùng thêm lớp này; nó chặn trước khi gói tin tới VPS.
- Dùng Docker: cổng container công khai có thể đi vòng qua quy tắc UFW vì Docker tự ghi quy tắc iptables. Chỉ công khai cổng khi cần, hoặc gắn vào 127.0.0.1.
Kiểm tra cổng đang mở bằng ss -tulpn trên VPS, và quét từ một máy bên ngoài để thấy đúng những gì Internet nhìn thấy.
Bước 3: Cập nhật bảo mật tự động và theo dõi vòng đời phần mềm
- Ubuntu, Debian: bật unattended-upgrades cho các bản vá bảo mật. AlmaLinux, Rocky: dùng dnf-automatic.
- Bản vá nhân hệ điều hành cần khởi động lại mới có hiệu lực; đặt lịch khởi động lại ngoài giờ cao điểm.
- Theo dõi ngày hết hỗ trợ của hệ điều hành và PHP. Một VPS chạy bản hệ điều hành đã hết hỗ trợ không còn nhận bản vá, dù bạn cập nhật hằng ngày.
- WordPress, plugin, theme là một tầng riêng, cập nhật hệ điều hành không cập nhật chúng.
Bước 4: Chặn dò mật khẩu và tách quyền
Fail2Ban đọc nhật ký, chặn tạm địa chỉ IP đăng nhập sai nhiều lần. Ngoài SSH, nên có quy tắc cho trang đăng nhập WordPress và xmlrpc.php nếu website không dùng chức năng này. Fail2Ban giảm tải và nhiễu, nhưng không thay được việc tắt mật khẩu SSH.
Tách quyền: mỗi website chạy bằng một tài khoản hệ thống riêng với nhóm tiến trình PHP-FPM riêng. Thư mục 755, tệp 644, wp-config.php chặt hơn (640 hoặc 600 tùy cách PHP chạy). Không bao giờ dùng 777. Trong WordPress, thêm define(‘DISALLOW_FILE_EDIT’, true); để tắt trình sửa mã trong trang quản trị. Khi một website bị nhiễm, tách quyền giúp các website khác trên cùng VPS không bị kéo theo.
Bước 5: Sao lưu ra ngoài VPS, và thử khôi phục
- Sao lưu tự động hằng ngày cả mã nguồn và cơ sở dữ liệu, gửi ra nơi khác: dịch vụ lưu trữ đối tượng, máy chủ khác, hoặc kho của nhà cung cấp sao lưu.
- Giữ nhiều phiên bản theo ngày và tuần. Mã độc thường nằm im vài ngày; chỉ giữ bản mới nhất có thể là giữ bản đã nhiễm.
- Thông tin đăng nhập kho sao lưu không để VPS có quyền xóa bản cũ; kẻ xâm nhập VPS sẽ không xóa được bản sao lưu.
- Ảnh chụp (snapshot) của nhà cung cấp tiện khi nâng cấp, nhưng nằm cùng tài khoản, cùng hệ thống, không thay được sao lưu độc lập.
- Thử khôi phục lên một VPS trống ít nhất vài tháng một lần.
Bước 6: Giám sát và lớp bảo vệ phía trước
- Cảnh báo khi website ngừng trả lời, ổ đĩa sắp đầy, CPU hoặc lượng thư gửi đi tăng đột biến (dấu hiệu VPS bị dùng gửi thư rác).
- Xem định kỳ nhật ký đăng nhập, danh sách tài khoản, tệp authorized_keys, các tác vụ cron lạ.
- Quét mã độc bằng ClamAV hoặc Linux Malware Detect; với WordPress, so tệp lõi với bản gốc.
- Dùng dịch vụ trung gian có WAF và chống DDoS như Cloudflare thì giới hạn cổng 80, 443 chỉ nhận kết nối từ dải IP của dịch vụ đó. Nếu không, kẻ tấn công biết IP thật của VPS sẽ đi vòng qua lớp bảo vệ.
Nghi VPS đã bị xâm nhập: làm gì trước?
- Chụp lại trạng thái (snapshot) để có bằng chứng, rồi cô lập: chặn kết nối ra ngoài không cần thiết, đổi mật khẩu bảng điều khiển của nhà cung cấp.
- Không chỉ xóa tệp lạ rồi coi như xong. Kẻ xâm nhập thường để lại cửa hậu: tài khoản mới, khóa SSH thêm vào, cron, tệp PHP ẩn trong thư mục tải lên.
- Cách sạch nhất là dựng VPS mới từ đầu, cài lại phần mềm, khôi phục dữ liệu từ bản sao lưu trước thời điểm nhiễm, sau khi đã rà mã nguồn website.
- Đổi toàn bộ mật khẩu, khóa SSH, khóa API, mật khẩu cơ sở dữ liệu, khóa bảo mật trong wp-config.php.
- Tìm đường vào (plugin lỗi, mật khẩu lộ, dịch vụ mở cổng) và đóng nó, nếu không sự việc sẽ lặp lại.
Nếu website WordPress trên VPS đã bị chèn mã, chuyển hướng lạ hoặc bị Google cảnh báo, xem quy trình xử lý mã độc WordPress (từ 1.500.000đ mỗi website, chốt sau khi kiểm tra mức độ nhiễm). Phần cập nhật, sao lưu, bảo mật ở tầng WordPress có thể giao cho gói bảo trì WordPress. Cấu hình hiệu suất cho WordPress trên VPS xem bài VPS WordPress; còn nếu chưa chắc mình có nên tự quản một VPS, đọc bài VPS là gì, ai nên dùng.
Dịch vụ quản trị VPS tại Marketing SEO Top
Marketing SEO Top có nhận quản trị VPS cho doanh nghiệp không có người làm kỹ thuật máy chủ. Phạm vi công việc và phí được báo sau khi xem cấu hình, hệ điều hành và số website đang chạy trên máy chủ. Gửi thông tin VPS và nhu cầu qua Zalo 0332 942 567 để nhận đề xuất.
Câu hỏi thường gặp
Đổi cổng SSH có làm VPS an toàn hơn không?
Có tác dụng giảm lượng bot dò tự động, nên nhật ký gọn hơn. Nhưng nó không chặn được người quét toàn bộ cổng. Lớp bảo vệ thật là đăng nhập bằng khóa, tắt mật khẩu và root, kết hợp tường lửa.
VPS Linux có cần phần mềm diệt virus không?
Không cần phần mềm diệt virus kiểu máy tính cá nhân, nhưng nên có công cụ quét mã độc cho thư mục website như ClamAV hoặc Linux Malware Detect. Mã độc trên máy chủ web chủ yếu là tệp PHP độc hại do website bị khai thác, không phải virus lây qua hệ điều hành.
Mất khóa SSH thì vào lại VPS bằng cách nào?
Hầu hết nhà cung cấp có bảng điều khiển với cửa sổ dòng lệnh trực tiếp (console) hoặc chế độ cứu hộ. Từ đó bạn đăng nhập, thêm khóa công khai mới vào tài khoản. Hãy lưu khóa ở hai nơi an toàn và bật xác thực hai lớp cho tài khoản nhà cung cấp.
VPS bị dùng để gửi thư rác thì xử lý thế nào?
Dừng dịch vụ gửi thư hoặc chặn cổng 25 ra ngoài ngay, tìm tiến trình hoặc tệp PHP đang gửi thư, rồi xử lý như một vụ xâm nhập. Kiểm tra IP của VPS có bị đưa vào danh sách đen thư rác không. Email công ty nên đặt ở dịch vụ riêng để không bị ảnh hưởng.
Bao lâu nên kiểm tra bảo mật VPS một lần?
Cập nhật bảo mật nên tự động hằng ngày; cảnh báo nên chạy liên tục. Rà thủ công tài khoản, khóa SSH, cổng mở, cron và thử khôi phục bản sao lưu nên làm định kỳ vài tháng một lần, và ngay sau mỗi lần thay đổi lớn trên máy chủ.
Cần người làm giúp phần này?
Mô tả ngắn nhu cầu hoặc gửi link website. Chúng tôi phản hồi bằng đánh giá cụ thể trước khi báo giá.
