Bảo mật VPS là nhiệm vụ bắt buộc đầu tiên ngay khi khởi tạo máy chủ ảo nhằm ngăn chặn mã độc, botnet và các cuộc tấn công brute-force tự động. Khi nhận bàn giao một máy chủ mới từ InterData hoặc bất kỳ nhà cung cấp nào, server mặc định mở cổng quản trị và trở thành mục tiêu quét liên tục từ internet. Bài viết này hướng dẫn chi tiết quy trình thiết lập bảo mật theo từng lớp từ cấu hình SSH, phân quyền sudo, dựng tường lửa đến cài đặt giám sát tự động.
NỘI DUNG BÀI VIẾT
- 1. Bảo mật VPS là gì? Vì sao VPS mới thuê cần được bảo mật ngay?
- 2. Quy trình bảo mật VPS theo thứ tự ưu tiên
- 3. Bước 1: Tạo user mới và vô hiệu hóa đăng nhập root
- 4. Bước 2: Cấu hình SSH key và tắt xác thực bằng mật khẩu
- 5. Bước 3: Đổi port SSH mặc định trên VPS Linux
- 6. Bước 4: Thiết lập tường lửa cho VPS với UFW và iptables
- 7. Bước 5: Cài đặt và cấu hình Fail2ban chống Brute-Force
- 8. Bảo mật VPS cho môi trường production và quản trị nâng cao
- 9. Các lỗi thường gặp khi bảo mật VPS và cách xử lý sự cố
1. Bảo mật VPS là gì? Vì sao VPS mới thuê cần được bảo mật ngay?
Bảo mật VPS là tập hợp các biện pháp thiết lập chính sách truy cập, kiểm soát luồng dữ liệu mạng, cấu hình phân quyền hệ thống và triển khai các công cụ giám sát chủ động trên máy chủ ảo. Mục tiêu nhằm đảm bảo tính toàn vẹn của dữ liệu, ngăn chặn truy cập trái phép và bảo vệ tài nguyên phần cứng khỏi các cuộc tấn công khai thác lỗ hổng từ môi trường internet.

Để hiểu rõ bản chất của quá trình này, trước hết bạn cần nắm vững VPS là gì và cơ chế hoạt động của tài nguyên ảo hóa độc lập. Khi một VPS được kích hoạt, máy chủ được gán một địa chỉ IPv4 công khai. Các botnet tự động liên tục thực hiện kỹ thuật port scanning trên toàn bộ dải IP public để tìm kiếm cổng 22 (cổng Secure Shell – SSH tiêu chuẩn). Nếu máy chủ vẫn duy trì cấu hình mặc định với user root và mật khẩu đơn giản, hệ thống có thể bị dò trúng mật khẩu (brute-force attack) chỉ trong vài giờ.
Những rủi ro nghiêm trọng khi một VPS Linux không được thiết lập an ninh đúng cách bao gồm:
- Mất quyền kiểm soát root user: Kẻ tấn công cài đặt backdoor, chiếm quyền điều khiển hệ thống và mã hóa tệp dữ liệu nhằm mục đích tống tiền.
- Bị lợi dụng làm bàn đạp tấn công (Botnet): Máy chủ bị chiếm dụng tài nguyên CPU thế hệ mới và băng thông để phát động tấn công từ chối dịch vụ phân tán (DDoS) hoặc đào tiền mã hóa trái phép.
- Rò rỉ cơ sở dữ liệu và mã nguồn: Toàn bộ dữ liệu khách hàng, mã nguồn ứng dụng và thông tin bí mật lưu trữ trên ổ đĩa SSD NVMe U.2 bị trích xuất hoặc xóa sạch.
2. Quy trình bảo mật VPS theo thứ tự ưu tiên
Trật tự thực thi các lớp an ninh là yếu tố then chốt giúp quản trị viên không tự cô lập mình khỏi máy chủ. Việc kích hoạt tường lửa trước khi cho phép cổng SSH mới hoặc tắt mật khẩu trước khi cấu hình SSH key thành công là những sai lầm phổ biến nhất dẫn đến sự cố mất quyền truy cập.
| Lớp bảo vệ | Mức ưu tiên | Công cụ / Tệp cấu hình | Rủi ro nếu bỏ qua |
|---|---|---|---|
| 1. Phân quyền tài khoản | Bắt buộc (Cấp 1) | adduser, sudo, sshd_config |
User root bị brute-force chiếm toàn quyền điều khiển |
| 2. Xác thực SSH Key | Bắt buộc (Cấp 1) | ssh-keygen, authorized_keys |
Lộ mật khẩu đăng nhập do đặt mật khẩu yếu hoặc bị rò rỉ |
| 3. Tường lửa mạng | Quan trọng (Cấp 2) | UFW, iptables | Lộ các cổng nội bộ như database, redis, memcached ra ngoài |
| 4. Chống Brute-Force | Quan trọng (Cấp 2) | Fail2ban, jail.local |
Tràn tài nguyên CPU và phình to tệp log hệ thống do bot dò quét |
| 5. Cập nhật hệ điều hành | Định kỳ (Cấp 3) | apt upgrade, unattended-upgrades |
Bị tấn công qua các lỗ hổng nhân Linux và thư viện lỗi thời |
3. Bước 1: Tạo user mới và vô hiệu hóa đăng nhập root
Tài khoản root là tài khoản quản trị tối cao có sẵn trên mọi hệ điều hành Linux (Ubuntu, Debian, CentOS). Do tên đăng nhập này cố định, kẻ tấn công chỉ cần tập trung đoán mật khẩu. Thiết lập tài khoản người dùng riêng biệt và vô hiệu hóa đăng nhập trực tiếp từ xa bằng root là bước đầu tiên trong tài liệu bảo mật SSH VPS toàn tập chuẩn hóa.

Hãy thực hiện các lệnh sau trên terminal của VPS:
1/ Cập nhật danh sách gói phần mềm hệ thống:
sudo apt update && sudo apt upgrade -y
(Nếu dùng CentOS/RHEL, thay bằng lệnh: sudo dnf update -y)
2/ Tạo tài khoản người dùng mới (ví dụ đặt tên là sysadmin):
adduser sysadmin
Hệ thống sẽ yêu cầu nhập mật khẩu cho user mới và các thông tin phụ trợ. Hãy sử dụng mật khẩu có độ dài tối thiểu 16 ký tự bao gồm chữ hoa, chữ thường, số và ký tự đặc biệt.
3/ Gán quyền quản trị sudo cho tài khoản vừa tạo:Trên Ubuntu / Debian:
usermod -aG sudo sysadmin
Trên CentOS / Rocky Linux / AlmaLinux:
usermod -aG wheel sysadmin
4/ Kiểm tra quyền thực thi sudo của user mới:Mở một cửa sổ Terminal mới trên máy tính của bạn và kiểm tra đăng nhập bằng tài khoản vừa tạo (tuyệt đối không tắt phiên làm việc hiện tại):
ssh sysadmin@dia_chi_ip_vps
Sau khi đăng nhập thành công, chạy lệnh kiểm tra quyền root:
sudo whoami
Nếu kết quả trả về là root, tài khoản đã được cấp quyền quản trị chính xác.
5/ Vô hiệu hóa quyền đăng nhập của tài khoản root qua SSH:Mở file cấu hình dịch vụ SSH bằng trình soạn thảo Nano:
sudo nano /etc/ssh/sshd_config
Tìm dòng PermitRootLogin, chỉnh sửa hoặc thêm mới thành:
PermitRootLogin no
Lưu lại thay đổi (nhấn Ctrl + O, sau đó Enter và thoát bằng Ctrl + X).
6/ Khởi động lại dịch vụ SSH daemon để áp dụng cấu hình:Trên Ubuntu/Debian:
sudo systemctl restart ssh
Trên CentOS/RHEL:
sudo systemctl restart sshd
Hạ Tầng Khởi Tạo Ngay
Cần VPS Linux sạch cho dự án?
Toàn quyền root, ổ cứng SSD NVMe U.2, có sẵn chống DDoS và hỗ trợ kỹ thuật 24/7.
4. Bước 2: Cấu hình SSH key và tắt xác thực bằng mật khẩu
Xác thực bằng SSH key sử dụng cơ chế mã hóa bất đối xứng gồm hai phần: private key lưu an toàn trên máy cá nhân và public key lưu trên VPS. Phương thức này loại bỏ hoàn toàn nguy cơ bị bẻ khóa mật khẩu. Nếu bạn chưa quen thao tác kết nối, hãy tham khảo cách truy cập VPS Linux bằng SSH trước khi bắt đầu.
1/ Khởi tạo cặp khóa SSH trên máy tính cá nhân (Local Machine):Mở Terminal (macOS/Linux) hoặc PowerShell (Windows) và chạy lệnh sinh khóa chuẩn Ed25519 với thuật toán bảo mật hiện đại:
ssh-keygen -t ed25519 -C "admin_vps_interdata"
Nhấn Enter để chấp nhận vị trí lưu mặc định (~/.ssh/id_ed25519). Bạn có thể thiết lập passphrase để mã hóa private key nếu cần tăng cường an ninh.

2/ Đẩy Public Key lên máy chủ VPS:Sử dụng công cụ ssh-copy-id để đưa public key vào thư mục ủy quyền của user sysadmin:
ssh-copy-id -i ~/.ssh/id_ed25519.pub sysadmin@dia_chi_ip_vps
(Nếu máy tính chạy Windows không có ssh-copy-id, bạn sao chép thủ công nội dung tệp id_ed25519.pub dán vào tệp ~/.ssh/authorized_keys trên VPS và phân quyền: chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys).
3/ Kiểm tra kết nối bằng SSH Key từ máy cá nhân:
ssh -i ~/.ssh/id_ed25519 sysadmin@dia_chi_ip_vps
Nếu hệ thống đăng nhập thẳng vào VPS mà không yêu cầu nhập mật khẩu người dùng Linux, cấu hình khóa đã chính xác.
4/ Vô hiệu hóa hoàn toàn phương thức xác thực bằng mật khẩu:Sau khi đã chắc chắn SSH Key hoạt động, mở tệp cấu hình trên VPS:
sudo nano /etc/ssh/sshd_config
Tìm và điều chỉnh các chỉ thị sau về giá trị chuẩn:
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
ChallengeResponseAuthentication no
5/ Khởi động lại dịch vụ SSH daemon:
sudo systemctl restart ssh || sudo systemctl restart sshd
5. Bước 3: Đổi port SSH mặc định trên VPS Linux
Theo mặc định, cổng 22 là mục tiêu quét liên tục của các script bot tự động. Việc đổi port SSH sang một cổng ngẫu nhiên trong dải từ 1024 đến 65535 (ví dụ: 2288 hoặc 54321) giúp loại bỏ tới hơn 95% lưu lượng kết nối rác, giải phóng dung lượng cho tệp log xác thực /var/log/auth.log.
1/ Mở tệp cấu hình máy chủ SSH:
sudo nano /etc/ssh/sshd_config
2/ Chỉnh sửa cổng kết nối:Tìm dòng #Port 22, bỏ dấu # ở đầu dòng và thay đổi thành số cổng mong muốn (ví dụ: 2288):
Port 2288
Lưu và đóng file cấu hình.

3/ Khai báo mở cổng trên hệ thống tường lửa (nếu có SELinux hoặc Firewall đang chạy):Nếu sử dụng hệ điều hành CentOS/RHEL có kích hoạt SELinux, bạn cần khai báo cổng mới trước khi restart dịch vụ:
sudo semanage port -a -t ssh_port_t -p tcp 2288
4/ Khởi động lại dịch vụ SSH daemon:
sudo systemctl restart ssh || sudo systemctl restart sshd
5/ Kiểm tra kết nối với cổng SSH mới:Mở cửa sổ dòng lệnh khác trên máy cá nhân và kết nối với tham số -p:
ssh -p 2288 sysadmin@dia_chi_ip_vps
Săn mã giảm giá VPS trước khi thanh toán
Tổng hợp voucher, khuyến mãi và Hot Deals mới nhất tại Canh Me InterData.
6. Bước 4: Thiết lập tường lửa cho VPS với UFW và iptables
Tường lửa (Firewall) đóng vai trò người gác cổng, chặn đứng toàn bộ các truy cập trái phép vào các dịch vụ nền nội bộ (như MySQL port 3306, Redis port 6379, MongoDB port 27017). Để cấu hình hệ thống lọc gói tin hiệu quả, bạn cần nắm vững cách thiết lập tường lửa cho VPS theo quy tắc đóng toàn bộ và chỉ mở cổng có chủ đích.
Hướng dẫn triển khai UFW trên Ubuntu và Debian
Các bước cài đặt và thiết lập nhanh được chuẩn hóa từ hướng dẫn cài đặt và cấu hình UFW trên Ubuntu:
1/ Cài đặt UFW nếu chưa có sẵn:
sudo apt install ufw -y
2/ Thiết lập chính sách lọc gói tin mặc định:
sudo ufw default deny incoming
sudo ufw default allow outgoing
3/ Mở cổng dịch vụ cần thiết (SSH port mới và Web server):
sudo ufw allow 2288/tcp comment 'Custom SSH Port'
sudo ufw allow 80/tcp comment 'HTTP Web'
sudo ufw allow 443/tcp comment 'HTTPS Secure Web'
4/ Kích hoạt tường lửa UFW:
sudo ufw enable
Nhấn y và Enter khi hệ thống hiển thị cảnh báo ngắt kết nối SSH.
5/ Kiểm tra danh sách cổng đang hoạt động:
sudo ufw status numbered
aaaaaa
Lựa chọn giải pháp tường lửa phù hợp
Đối với các kỹ sư quản trị muốn kiểm soát luồng gói tin ở mức sâu hơn hoặc xây dựng kịch bản định tuyến mạng phức tạp, việc áp dụng cấu hình iptables cho VPS trực tiếp hoặc firewalld trên các bản phân phối RedHat sẽ mang lại sự chủ động tối đa.
| Công cụ tường lửa | Độ phức tạp | Hệ điều hành tối ưu | Tình huống sử dụng phù hợp |
|---|---|---|---|
| UFW | Đơn giản | Ubuntu, Debian | Máy chủ độc lập, cấu hình nhanh các cổng thông dụng |
| iptables / Netfilter | Nâng cao | Mọi bản phân phối Linux | Tùy biến bảng NAT, can thiệp sâu vào chuỗi gói tin và định tuyến |
| Firewalld | Trung bình | CentOS, RHEL, Rocky, Alma | Môi trường doanh nghiệp sử dụng cơ chế phân vùng mạng (zones) |
7. Bước 5: Cài đặt và cấu hình Fail2ban chống Brute-Force
Fail2ban là dịch vụ phân tích tệp nhật ký hệ thống theo thời gian thực (như /var/log/auth.log trên Debian/Ubuntu hoặc /var/log/secure trên CentOS). Khi phát hiện một địa chỉ IP có hành vi đăng nhập thất bại vượt quá ngưỡng cho phép, Fail2ban sẽ tự động nạp luật vào tường lửa để cấm IP đó trong một khoảng thời gian nhất định. Để nắm rõ cơ chế bảo vệ chủ động này, bạn có thể xem thêm tài liệu cài đặt Fail2ban chống Brute-Force SSH.
1/ Cài đặt gói dịch vụ Fail2ban:Trên Ubuntu/Debian:
sudo apt install fail2ban -y
Trên CentOS/RHEL/AlmaLinux:
sudo dnf install epel-release -y && sudo dnf install fail2ban -y
2/ Tạo tệp cấu hình tùy chỉnh riêng biệt:Tuyệt đối không sửa trực tiếp file jail.conf vì sẽ bị ghi đè khi cập nhật phần mềm. Hãy tạo bản sao jail.local:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
3/ Thiết lập thông số bảo vệ cho dịch vụ SSH:Tìm khối cấu hình [sshd] hoặc thêm đoạn nội dung sau vào cuối tệp:
[sshd]
enabled = true
port = 2288
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 86400
ignoreip = 127.0.0.1/8 ::1 14.161.x.x
(Giải thích: Cấm IP vi phạm trong 24 giờ (86400 giây) nếu nhập sai mật khẩu quá 3 lần trong vòng 10 phút (600 giây). Điền IP tĩnh cá nhân vào mục ignoreip để tránh vô tình tự khóa tài khoản).
4/ Kích hoạt dịch vụ hệ thống với systemctl:
sudo systemctl enable fail2ban
sudo systemctl restart fail2ban
5/ Kiểm tra danh sách các địa chỉ IP đang bị khóa:
sudo fail2ban-client status sshd

Môi trường Production
Cần hạ tầng linh hoạt cho nhiều người dùng?
Cloud Server phân lập tài nguyên an toàn, tăng giảm CPU/RAM nhanh theo tải và hỗ trợ backup định kỳ.
8. Bảo mật VPS cho môi trường production và quản trị nâng cao
Khi vận hành máy chủ trong môi trường doanh nghiệp phục vụ nhiều kỹ sư phát triển và hệ thống tải lớn, các bước thiết lập cơ bản cần được mở rộng với quy trình kiểm soát mã nguồn và quản lý quyền truy cập tập trung.
Đối với các đội ngũ kỹ thuật lưu trữ script triển khai và cấu hình hạ tầng qua Git, việc hiểu rõ GitHub là gì và kiểm soát public key trên kho lưu trữ sẽ ngăn chặn việc lộ lọt secret key hoặc token API quan trọng vào mã nguồn công khai.
Một số biện pháp kiểm soát vận hành bắt buộc trên môi trường production:
- Cấu hình tự động vá lỗi bảo mật (Unattended Upgrades): Kích hoạt tính năng tự động tải và cập nhật các bản vá an ninh quan trọng của nhân Linux mà không làm gián đoạn dịch vụ:
sudo apt install unattended-upgrades -y sudo dpkg-reconfigure --priority=low unattended-upgrades - Giới hạn không gian bộ nhớ chia sẻ (Secure Shared Memory): Giảm thiểu nguy cơ khai thác mã độc vào bộ nhớ đệm bằng cách gắn cờ hạn chế trong
/etc/fstab:tmpfs /run/shm tmpfs defaults,noexec,nosuid 0 0 - Phân quyền tài khoản độc lập cho từng thành viên: Không chia sẻ tài khoản SSH. Mỗi nhân sự sử dụng một user riêng có private key riêng và thu hồi quyền ngay khi nhân sự thay đổi vị trí.
- Thiết lập cơ chế Backup định kỳ độc lập: Luôn duy trì bản sao lưu dữ liệu tự động tại một hạ tầng lưu trữ vật lý tách biệt với máy chủ đang chạy để sẵn sàng khôi phục khi xảy ra lỗi do con người hoặc thảm họa phần mềm.
9. Các lỗi thường gặp khi bảo mật VPS và cách xử lý sự cố
Dưới đây là 3 tình huống sự cố thực tế phổ biến nhất trong quá trình thiết lập bảo mật VPS và các bước xử lý phục hồi kết nối:
Sự cố 1: Bị mất kết nối SSH sau khi đổi Port hoặc bật UFW
- Hiện tượng: Lệnh SSH báo lỗi
Connection refusedhoặcConnection timed outsau khi khởi động lại dịch vụ SSH/Firewall. - Nguyên nhân: Đã đổi port trong
sshd_confignhưng chưa mở port tương ứng trên UFW, hoặc quên cú pháp chỉ định port khi kết nối máy khách. - Cách khắc phục: Đăng nhập vào trang quản trị của nhà cung cấp, mở tính năng VNC Console (giao diện điều khiển khẩn cấp ngoài mạng). Đăng nhập bằng tài khoản người dùng và chạy lệnh mở lại port trên tường lửa:
sudo ufw allow 2288/tcp sudo ufw reload
Sự cố 2: IP của quản trị viên bị Fail2ban chặn nhầm
- Hiện tượng: Đang làm việc thì bị ngắt kết nối đột ngột và không thể truy cập lại SSH từ mạng Internet hiện tại.
- Nguyên nhân: Mở nhiều kết nối SSH đồng thời hoặc nhập sai mật khẩu/sai đường dẫn SSH key liên tiếp vượt ngưỡng
maxretry. - Cách khắc phục: Sử dụng mạng 4G/mạng khác hoặc truy cập qua VNC Console, chạy lệnh gỡ chặn trực tiếp cho địa chỉ IP công khai của bạn:
sudo fail2ban-client set sshd unbanip DIA_CHI_IP_CUA_BAN
Sự cố 3: Lỗi cấp quyền tập tin SSH Key (Permissions are too open)
- Hiện tượng: Trình duyệt SSH từ chối private key và báo lỗi:
Permissions 0777 for id_ed25519 are too open. It is required that your private key files are NOT accessible by others. - Nguyên nhân: Quyền truy cập tệp chứa khóa trên máy khách hoặc thư mục trên VPS bị phân quyền quá rộng.
- Cách khắc phục: Thiết lập lại quyền tiêu chuẩn trên máy trạm và máy chủ:Trên máy cá nhân (macOS/Linux):
chmod 600 ~/.ssh/id_ed25519Trên VPS:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Câu Hỏi Thường Gặp về Bảo Mật VPS
Bảo mật VPS là gì và bao gồm những công việc nào?
Bảo mật VPS là quy trình áp dụng đồng bộ các giải pháp kỹ thuật nhằm ngăn chặn truy cập trái phép vào máy chủ ảo. Công việc bao gồm vô hiệu hóa đăng nhập tài khoản root, sử dụng SSH Key, đổi cổng kết nối mặc định, thiết lập tường lửa UFW/iptables và cài đặt công cụ ngăn chặn tấn công tự động Fail2ban.
Có nên tắt hoàn toàn tính năng đăng nhập root trên VPS không?
Bạn nên vô hiệu hóa tính năng đăng nhập trực tiếp từ xa của user root qua giao thức SSH. Thay vào đó, hãy tạo tài khoản người dùng riêng có quyền sudo. Biện pháp này giúp ngăn chặn các cuộc tấn công quét tài khoản mặc định và cho phép kiểm soát lịch sử thực thi lệnh an toàn hơn.
SSH Key hoạt động như thế nào và có an toàn hơn mật khẩu không?
SSH Key sử dụng thuật toán mã hóa khóa công khai gồm Private Key (lưu trên máy cá nhân) và Public Key (lưu trên VPS). Cơ chế này an toàn hơn mật khẩu truyền thống vì khóa mã hóa có độ dài cực lớn, không thể bị bẻ khóa bằng hình thức brute-force thông thường qua internet.
UFW là gì và có tác dụng gì trong việc bảo vệ VPS Ubuntu?
UFW (Uncomplicated Firewall) là giao diện quản lý tường lửa đơn giản hóa hoạt động trên nền tảng iptables của hệ điều hành Linux. UFW cho phép thiết lập nhanh các quy tắc chặn toàn bộ lưu lượng kết nối trái phép vào hệ thống và chỉ mở những cổng dịch vụ mạng được chỉ định cụ thể.
Fail2ban là gì và làm thế nào để ngăn chặn brute-force?
Fail2ban là dịch vụ quét tệp log hệ thống theo thời gian thực để nhận diện các hành vi đăng nhập sai liên tiếp. Khi phát hiện dấu hiệu tấn công, Fail2ban tự động cập nhật quy tắc vào tường lửa nhằm khóa địa chỉ IP của kẻ tấn công trong một khoảng thời gian được thiết lập trước.
Lời kết
Triển khai bảo mật VPS đòi hỏi sự kết hợp chặt chẽ giữa việc siết chặt quyền truy cập SSH, cấu hình tường lửa đóng các cổng dịch vụ nội bộ và chủ động giám sát log hệ thống. Việc tuân thủ đúng thứ tự ưu tiên từ tạo tài khoản sudo, nạp SSH Key đến cài đặt UFW và Fail2ban sẽ bảo vệ máy chủ an toàn trước các đợt quét mã độc tự động. Hãy bắt đầu rà soát và cấu hình bảo vệ cho máy chủ của bạn ngay hôm nay để hạn chế tối đa rủi ro gián đoạn dịch vụ.
Nội dung mang tính tham khảo. Lệnh, cú pháp, đường dẫn file và tùy chọn cấu hình có thể thay đổi theo phiên bản hệ điều hành, phiên bản phần mềm và môi trường cụ thể. Nên kiểm thử, sao lưu dữ liệu và đánh giá rủi ro trước khi áp dụng lên server production.
