Chào bạn, nếu bạn đang sử dụng một máy chủ ảo (VPS) để lưu trữ website, ứng dụng hoặc dữ liệu quan trọng, thì việc bảo mật cho VPS là một trong những ưu tiên hàng đầu. Một VPS không được bảo vệ cẩn thận có thể trở thành mục tiêu dễ dàng cho các cuộc tấn công mạng, dẫn đến mất dữ liệu, gián đoạn dịch vụ và nhiều hậu quả nghiêm trọng khác. Hôm nay, mình sẽ chia sẻ với bạn một hướng dẫn chi tiết từng bước về cách cấu hình bảo mật cho VPS, giúp bạn xây dựng một “pháo đài” vững chắc để bảo vệ hệ thống của mình nhé!
Tại sao bảo mật VPS lại quan trọng như vậy?
Trước khi bắt đầu, hãy cùng mình hiểu rõ hơn về tầm quan trọng của việc bảo mật VPS:
- Bảo vệ dữ liệu: VPS thường chứa các dữ liệu quan trọng của bạn, từ mã nguồn website, thông tin khách hàng đến các tài liệu mật. Một cuộc tấn công thành công có thể dẫn đến việc dữ liệu bị đánh cắp, xóa hoặc mã hóa tống tiền.
- Đảm bảo tính ổn định của dịch vụ: Nếu VPS của bạn bị xâm nhập, kẻ tấn công có thể sử dụng nó để thực hiện các hành vi độc hại khác, chẳng hạn như tấn công DDoS, gửi thư rác, hoặc thậm chí kiểm soát toàn bộ máy chủ, gây gián đoạn dịch vụ của bạn.
- Duy trì uy tín: Một website hoặc dịch vụ thường xuyên gặp sự cố bảo mật sẽ làm giảm uy tín của bạn đối với khách hàng và đối tác.
- Tránh các chi phí phát sinh: Khắc phục hậu quả của một cuộc tấn công mạng có thể tốn kém rất nhiều thời gian và tiền bạc. Việc chủ động bảo mật VPS sẽ giúp bạn tránh được những chi phí không đáng có này.

Các bước cấu hình bảo mật cơ bản cho VPS
Bây giờ, chúng ta sẽ đi vào các bước cụ thể để cấu hình bảo mật cho VPS của bạn. Các bước này áp dụng cho hầu hết các hệ điều hành Linux phổ biến như Ubuntu, CentOS, Debian…

Bước 1: Thay đổi cổng SSH mặc định
SSH (Secure Shell) là giao thức bạn sử dụng để kết nối và quản lý VPS từ xa. Cổng mặc định của SSH là 22. Việc thay đổi cổng này sang một số ngẫu nhiên khác sẽ giúp giảm thiểu nguy cơ bị tấn công brute-force (dò mật khẩu) vào SSH.
- Kết nối đến VPS qua SSH.
- Mở file cấu hình SSH:
- Trên Ubuntu/Debian:
sudo nano /etc/ssh/sshd_config
- Trên CentOS/RHEL:
sudo nano /etc/ssh/sshd_config
- Trên Ubuntu/Debian:
- Tìm dòng có nội dung
#Port 22
và bỏ dấu#
đi, sau đó thay22
bằng một số cổng khác (ví dụ: 2222, 3456,…). Hãy chọn một số cổng không quá phổ biến và nằm trong khoảng từ 1024 đến 65535. - Lưu và đóng file.
- Khởi động lại dịch vụ SSH:
- Trên Ubuntu/Debian:
sudo systemctl restart sshd
- Trên CentOS/RHEL:
sudo systemctl restart sshd
- Trên Ubuntu/Debian:
Lưu ý quan trọng: Sau khi thay đổi cổng SSH, bạn sẽ cần chỉ định cổng này khi kết nối đến VPS qua SSH trong tương lai. Ví dụ: ssh -p 2222 user@your_vps_ip
.
Bước 2: Vô hiệu hóa đăng nhập root qua SSH
Đăng nhập trực tiếp bằng tài khoản root qua SSH là một rủi ro bảo mật lớn. Thay vào đó, bạn nên tạo một tài khoản người dùng thông thường có quyền sudo và sử dụng tài khoản này để quản lý VPS.
- Kết nối đến VPS qua SSH bằng tài khoản root (nếu bạn chưa thay đổi cổng SSH).
- Mở file cấu hình SSH (như ở Bước 1).
- Tìm dòng có nội dung
#PermitRootLogin yes
và bỏ dấu#
đi, sau đó thayyes
bằngno
. - Lưu và đóng file.
- Khởi động lại dịch vụ SSH (như ở Bước 1).
Bước 3: Thiết lập xác thực dựa trên khóa SSH (SSH Key-Based Authentication)
Xác thực bằng khóa SSH an toàn hơn nhiều so với mật khẩu truyền thống. Thay vì nhập mật khẩu mỗi khi đăng nhập, bạn sẽ sử dụng một cặp khóa (khóa riêng tư và khóa công khai). Khóa công khai được lưu trên VPS, còn khóa riêng tư được lưu trên máy tính của bạn.
- Tạo cặp khóa SSH trên máy tính của bạn:
- Trên Linux/macOS: Mở Terminal và chạy lệnh
ssh-keygen -t rsa -b 4096
. Bạn sẽ được hỏi nơi lưu khóa và có muốn đặt passphrase (mật khẩu cho khóa riêng tư) hay không. Hãy chọn một passphrase mạnh để bảo vệ khóa riêng tư của bạn. - Trên Windows: Sử dụng phần mềm PuTTYgen để tạo khóa. Nhấn “Generate” và làm theo hướng dẫn. Sau khi tạo xong, hãy lưu cả khóa công khai và khóa riêng tư.
- Trên Linux/macOS: Mở Terminal và chạy lệnh
- Sao chép khóa công khai lên VPS:
- Sử dụng lệnh
ssh-copy-id
(nếu có):ssh-copy-id -i ~/.ssh/id_rsa.pub user@your_vps_ip -p your_ssh_port
(thayuser
,your_vps_ip
vàyour_ssh_port
bằng thông tin thực tế của bạn). - Sao chép thủ công: Mở file khóa công khai trên máy tính của bạn (thường có đuôi
.pub
). Kết nối đến VPS qua SSH (bằng mật khẩu nếu bạn chưa vô hiệu hóa đăng nhập root). Tạo thư mục.ssh
nếu nó chưa tồn tại (mkdir ~/.ssh
). Đặt quyền cho thư mục này (chmod 700 ~/.ssh
). Mở hoặc tạo fileauthorized_keys
trong thư mục.ssh
(nano ~/.ssh/authorized_keys
). Dán nội dung của khóa công khai vào file này. Đặt quyền cho file này (chmod 600 ~/.ssh/authorized_keys
).
- Sử dụng lệnh
- Vô hiệu hóa xác thực bằng mật khẩu (tùy chọn, sau khi đã xác nhận đăng nhập bằng khóa thành công): Mở file cấu hình SSH (
/etc/ssh/sshd_config
), tìm dòng#PasswordAuthentication yes
và bỏ dấu#
đi, sau đó thayyes
bằngno
. Khởi động lại dịch vụ SSH.
Bước 4: Cấu hình tường lửa (Firewall)
Tường lửa là một công cụ thiết yếu để kiểm soát lưu lượng truy cập đến và đi từ VPS của bạn. Bạn nên cấu hình tường lửa để chỉ cho phép các kết nối cần thiết.
- Sử dụng UFW (Uncomplicated Firewall) trên Ubuntu/Debian:
- Cài đặt UFW (nếu chưa có):
sudo apt install ufw
- Cho phép cổng SSH (thay
your_ssh_port
bằng cổng bạn đã chọn):sudo ufw allow your_ssh_port/tcp
- Cho phép cổng HTTP (80):
sudo ufw allow 80/tcp
- Cho phép cổng HTTPS (443):
sudo ufw allow 443/tcp
- Cho phép các cổng khác nếu cần (ví dụ: cho email, FTP,…).
- Bật UFW:
sudo ufw enable
- Kiểm tra trạng thái UFW:
sudo ufw status
- Cài đặt UFW (nếu chưa có):
- Sử dụng Firewalld trên CentOS/RHEL:
- Cài đặt Firewalld (nếu chưa có):
sudo yum install firewalld -y
- Khởi động Firewalld:
sudo systemctl start firewalld
- Bật Firewalld khởi động cùng hệ thống:
sudo systemctl enable firewalld
- Cho phép cổng SSH (thay
your_ssh_port
bằng cổng bạn đã chọn):sudo firewall-cmd --permanent --add-port=your_ssh_port/tcp
- Cho phép cổng HTTP:
sudo firewall-cmd --permanent --add-port=80/tcp
- Cho phép cổng HTTPS:
sudo firewall-cmd --permanent --add-port=443/tcp
- Cho phép các cổng khác nếu cần.
- Tải lại cấu hình Firewalld:
sudo firewall-cmd --reload
- Kiểm tra các cổng đang được phép:
sudo firewall-cmd --list-all
- Cài đặt Firewalld (nếu chưa có):
Bước 5: Luôn cập nhật hệ thống và phần mềm
Việc cập nhật hệ điều hành và các phần mềm đã cài đặt trên VPS là rất quan trọng để vá các lỗ hổng bảo mật mới được phát hiện.
- Trên Ubuntu/Debian: Bash
sudo apt update sudo apt upgrade
Bạn cũng có thể thiết lập cập nhật tự động bằng cách cài đặt góiunattended-upgrades
. - Trên CentOS/RHEL: Bash
sudo yum update
Bạn cũng có thể thiết lập cập nhật tự động bằng cách cấu hình file/etc/yum/yum-cron.conf
.
Lưu ý: Cần thận trọng khi thiết lập cập nhật tự động, đặc biệt đối với các hệ thống quan trọng, vì đôi khi các bản cập nhật có thể gây ra xung đột hoặc vấn đề không mong muốn. Bạn nên theo dõi các bản cập nhật và kiểm tra kỹ sau khi cập nhật.
Bước 6: Thiết lập Fail2ban để ngăn chặn tấn công Brute-Force
Fail2ban là một công cụ giúp bảo vệ VPS của bạn khỏi các cuộc tấn công brute-force bằng cách theo dõi các file log và tự động chặn các địa chỉ IP có quá nhiều lần đăng nhập thất bại trong một khoảng thời gian nhất định.
- Cài đặt Fail2ban:
- Trên Ubuntu/Debian:
sudo apt install fail2ban
- Trên CentOS/RHEL:
sudo yum install fail2ban
- Trên Ubuntu/Debian:
- Bật Fail2ban khởi động cùng hệ thống:
- Trên Ubuntu/Debian:
sudo systemctl enable fail2ban
- Trên CentOS/RHEL:
sudo systemctl enable fail2ban
- Trên Ubuntu/Debian:
- Khởi động Fail2ban:
- Trên Ubuntu/Debian:
sudo systemctl start fail2ban
- Trên CentOS/RHEL:
sudo systemctl start fail2ban
- Trên Ubuntu/Debian:
- Cấu hình Fail2ban: Bạn có thể chỉnh sửa file cấu hình
/etc/fail2ban/jail.conf
(nên sao chép thành/etc/fail2ban/jail.local
để tránh bị ghi đè khi cập nhật) để cấu hình các “jail” cho các dịch vụ khác nhau như SSH, Apache, Nginx, FTP,… Bạn có thể thiết lập số lần thử đăng nhập thất bại tối đa, thời gian chặn và các hành động khác.
Bước 7: Bảo mật máy chủ web (Apache/Nginx)
Nếu bạn đang sử dụng VPS để chạy website, bạn cần thực hiện các biện pháp bảo mật cho máy chủ web của mình:
- Tắt Directory Listing: Ngăn người dùng xem danh sách các file và thư mục khi họ truy cập vào một thư mục không có file index.
- Ẩn Server Signature: Ngăn máy chủ web tiết lộ thông tin về phiên bản phần mềm đang sử dụng trong các thông báo lỗi.
- Sử dụng HTTPS với chứng chỉ SSL/TLS: Mã hóa dữ liệu truyền tải giữa máy chủ và trình duyệt của người dùng. Bạn có thể sử dụng Let’s Encrypt để có chứng chỉ SSL miễn phí.
Bước 8: Bảo mật cơ sở dữ liệu (MySQL/MariaDB)
Nếu bạn sử dụng cơ sở dữ liệu, hãy thực hiện các biện pháp sau:
- Đặt mật khẩu mạnh cho tất cả các tài khoản người dùng cơ sở dữ liệu.
- Chỉ cấp quyền truy cập cần thiết cho từng người dùng.
- Hạn chế quyền truy cập từ xa vào tài khoản root của cơ sở dữ liệu.
Bước 9: Thực hiện kiểm tra bảo mật và theo dõi nhật ký thường xuyên
Bạn nên thường xuyên kiểm tra các file log của hệ thống và các ứng dụng để phát hiện các hoạt động đáng ngờ. Bạn cũng có thể sử dụng các công cụ quét lỗ hổng bảo mật để tìm kiếm các điểm yếu tiềm ẩn trên VPS của mình.

Bước 10: Sao lưu VPS thường xuyên
Mặc dù không trực tiếp là một biện pháp bảo mật, nhưng việc sao lưu VPS thường xuyên là rất quan trọng để bạn có thể khôi phục dữ liệu và hệ thống của mình trong trường hợp xảy ra sự cố bảo mật hoặc các vấn đề không mong muốn khác.
Kết luận: Bảo mật VPS là một quá trình liên tục
Bảo mật VPS là một quá trình liên tục và đòi hỏi bạn phải luôn cảnh giác và cập nhật các biện pháp bảo vệ của mình. Bằng cách thực hiện theo các bước hướng dẫn trên, bạn đã có thể xây dựng một nền tảng bảo mật vững chắc cho VPS của mình. Hãy nhớ rằng, không có hệ thống nào là hoàn toàn bất khả xâm phạm, nhưng việc thực hiện các biện pháp bảo mật tốt sẽ giúp bạn giảm thiểu đáng kể nguy cơ bị tấn công và bảo vệ dữ liệu quan trọng của mình. Chúc bạn thành công!