Khi bạn vừa khởi tạo một VPS Linux mới, bạn có toàn quyền quản trị. Nhưng điều này cũng có nghĩa là VPS của bạn giống như một ngôi nhà mới xây, chưa có cửa, chưa có khóa. Bất kỳ ai cũng có thể đi vào và "nhìn ngó" (scan port). Đây là lúc bạn cần đến "người bảo vệ". Vậy, Tường lửa (Firewall) VPS là gì?
Một cách đơn giản nhất, Tường lửa (Firewall) VPS là một phần mềm "gác cổng" kỹ thuật số chạy trên máy chủ của bạn. Nhiệm vụ chính của tường lửa là giám sát và kiểm soát toàn bộ lưu lượng mạng đi vào (incoming) và đi ra (outgoing) khỏi VPS, dựa trên một bộ quy tắc (rules) mà bạn đã định sẵn.
Để dễ hình dung, hãy tưởng tượng:
VPS của bạn: Là một tòa nhà văn phòng.
Các Port (Cổng): Là các cánh cửa của tòa nhà (Cửa 22 cho nhân viên, Cửa 80/443 cho khách vãng lai...).
Tường lửa (Firewall): Là đội ngũ bảo vệ đứng ở cổng.
Quy tắc (Rules): Là cuốn sổ "danh sách khách mời".
Nếu không có tường lửa, mọi cánh cửa đều mở toang, ai cũng có thể vào bất kỳ cửa nào. Khi có tường lửa, người bảo vệ sẽ kiểm tra "danh sách khách mời" trước khi cho phép bất kỳ ai đi qua một cánh cửa cụ thể. Hiểu được Tường lửa (Firewall) VPS là gì là bước đầu tiên để bảo mật máy chủ.
Nhiều người mới dùng VPS cho rằng "VPS của tôi mới, chưa có gì, thì ai hack làm gì". Đây là một hiểu lầm tai hại. Ngay khi VPS của bạn có một địa chỉ IP công khai, trong vòng vài phút, các bot tự động trên khắp thế giới sẽ "phát hiện" ra bạn.
Chúng sẽ tự động "scan port" (quét cổng) để xem bạn đang mở những "cánh cửa" nào.
Nếu thấy Cổng 22 (SSH) đang mở, chúng sẽ thực hiện tấn công Brute Force (vét cạn) - thử hàng triệu mật khẩu mỗi phút để đăng nhập.
Nếu thấy Cổng 3306 (MySQL) đang mở, chúng sẽ thử tấn công cơ sở dữ liệu.
Nếu thấy một dịch vụ cũ kỹ đang chạy ở một cổng lạ, chúng sẽ thử khai thác lỗ hổng của dịch vụ đó.
Một tường lửa VPS giúp bạn "tàng hình". Bạn chủ động đóng tất cả các cánh cửa, và chỉ mở những cửa bạn thực sự cần (như Cửa 80 cho web). Việc này ngay lập tức ngăn chặn 99% các cuộc tấn công tự động. Vì vậy, câu trả lời cho "tại sao cần tường lửa VPS" là để bảo vệ bạn khỏi những rủi ro cơ bản nhất.
Để sử dụng tường lửa hiệu quả, bạn chỉ cần nắm rõ 3 khái niệm. Việc hiểu rõ 3 khái niệm này cũng giúp bạn hiểu sâu hơn Tường lửa (Firewall) VPS là gì.
Như đã ví von, Port (Cổng) là các "cửa" kỹ thuật số trên máy chủ của bạn, mỗi cửa dành cho một loại dịch vụ khác nhau. Máy chủ có 65,535 cổng. Một số cổng tiêu chuẩn bạn cần biết:
Port 22 (SSH): Cửa dành riêng cho bạn (người quản trị) đăng nhập vào VPS. Đây là cửa quan trọng nhất cần bảo vệ.
Port 80 (HTTP): Cửa cho website (không mã hóa).
Port 443 (HTTPS): Cửa cho website (có mã hóa SSL).
Port 21 (FTP): Cửa cho dịch vụ truyền file (cũ, không an toàn).
Port 3306 (MySQL): Cửa cho cơ sở dữ liệu. Cửa này không bao giờ nên được mở ra ngoài Internet trừ khi có lý do đặc biệt.
Khi bạn "mở port 80", bạn đang cho phép khách truy cập web đi qua cửa 80.
Rule (Quy tắc) là các chỉ thị bạn đưa ra cho tường lửa. Mỗi quy tắc thường có 4 phần:
Hành động: ALLOW (Cho phép) hay DENY (Chặn/Từ chối).
Hướng: INCOMING (Đi vào) hay OUTGOING (Đi ra).
Cổng (Port): Áp dụng cho cửa nào (ví dụ: 80, 22, 443).
Nguồn/Đích (IP): Áp dụng cho ai (ví dụ: any - bất kỳ ai, hoặc 1.2.3.4 - chỉ IP của bạn).
Ví dụ về các quy tắc:
ALLOW INCOMING on Port 80 from ANY (Cho phép bất kỳ ai đi vào từ Cửa 80 - Để xem web).
ALLOW INCOMING on Port 22 from 1.2.3.4 (Chỉ cho phép IP 1.2.3.4 đi vào Cửa 22 - Bảo mật SSH).
DENY INCOMING on Port 3306 from ANY (Chặn tất cả không cho vào Cửa 3306).
Triết lý bảo mật cơ bản là: "Chặn TẤT CẢ đi vào, và chỉ cho phép một vài thứ bạn muốn".
Bạn sẽ thỉnh thoảng thấy 80/tcp hoặc 53/udp. Đây là các giao thức truyền tải.
TCP (Transmission Control Protocol): Giống như một cuộc gọi điện thoại. Hai bên phải "bắt tay", xác nhận, và đảm bảo dữ liệu được gửi đi đầy đủ, đúng thứ tự. Dùng cho web (HTTP/S), SSH, Email.
UDP (User Datagram Protocol): Giống như gửi bưu thiếp. Gửi đi rất nhanh, không cần "bắt tay", không đảm bảo đến nơi. Dùng cho Game, gọi Video, DNS.
Với người mới, 99% các dịch vụ bạn dùng (SSH, Web) đều là TCP.
Khi tìm hiểu, bạn sẽ gặp 3 cái tên chính. Hiểu rõ 3 công cụ này sẽ giúp bạn hiểu rõ hơn về các tầng của Tường lửa (Firewall) VPS là gì.
iptables là "động cơ" tường lửa gốc, cốt lõi bên trong nhân (kernel) của Linux. Mọi tường lửa khác về cơ bản đều là một cách để nói chuyện với iptables.
Ưu điểm: Cực kỳ mạnh mẽ, linh hoạt, chi tiết đến từng gói tin.
Nhược điểm: Cú pháp cực kỳ phức tạp, khó học, khó gỡ lỗi. Gõ sai một lệnh có thể khóa bạn vĩnh viễn. Không dành cho người mới.
firewalld là tường lửa mặc định trên các hệ điều hành dòng Red Hat (CentOS, AlmaLinux, Rocky Linux).
Ưu điểm: Mạnh mẽ, hỗ trợ khái niệm "Zones" (Vùng - ví dụ: Vùng public, Vùng home, Vùng internal). Bạn có thể áp dụng các bộ quy tắc khác nhau khi di chuyển giữa các mạng.
Nhược điểm: Phức tạp hơn UFW, khái niệm "Zone" có thể gây bối rối cho người mới.
UFW (Tường lửa Không phức tạp) là "nhân vật chính" của chúng ta. UFW được phát triển bởi Ubuntu.
Ưu điểm: UFW không phải là một tường lửa mới. UFW là một "lớp vỏ" (giao diện) cực kỳ thân thiện, giúp bạn nói chuyện với iptables bằng ngôn ngữ đơn giản. Cú pháp của UFW rất dễ đọc, dễ hiểu (ví dụ: ufw allow 80).
Nhược điểm: Ít linh hoạt hơn iptables (nhưng 99% người dùng không cần sự linh hoạt đó).
Khuyến nghị: Nếu bạn dùng Ubuntu hoặc Debian, hãy dùng UFW. UFW là công cụ hoàn hảo cho Persona "Newbie" và "DIY-er".
Đây là các bước "cầm tay chỉ việc" để thiết lập tường lửa UFW cho VPS Ubuntu của bạn. Đây là phần thực hành cốt lõi để hiểu Tường lửa (Firewall) VPS là gì.
Trên hầu hết các bản cài Ubuntu mới, UFW đã có sẵn. Bạn có thể kiểm tra bằng lệnh:
Bash
sudo ufw status
Nếu bạn thấy Status: inactive (Chưa kích hoạt), nghĩa là UFW đã được cài. Nếu không tìm thấy lệnh, hãy cài đặt:
Bash
sudo apt update
sudo apt install ufw -y
Đây là triết lý bảo mật cốt lõi: "Đóng tất cả cửa vào, Mở tất cả cửa ra".
"Đóng cửa vào": Ngăn chặn mọi kết nối từ bên ngoài vào VPS (trừ khi được cho phép).
"Mở cửa ra": Cho phép VPS của bạn kết nối ra ngoài (ví dụ: để tải bản cập nhật, gọi API).
Gõ 2 lệnh sau:
Bash
sudo ufw default deny incoming
sudo ufw default allow outgoing
Lúc này, TẤT CẢ các cổng đi vào đều đã bị chặn. Nếu bạn kích hoạt tường lửa ngay, bạn sẽ bị khóa ngoài.
Đây là bước quan trọng nhất để tránh "nỗi đau" bị khóa khỏi VPS. Bạn phải "đục lỗ" cho các dịch vụ cần thiết.
CẢNH BÁO: LUÔN LUÔN MỞ CỔNG SSH CỦA BẠN TRƯỚC TIÊN! Nếu bạn thay đổi cổng SSH (ví dụ sang 2222), hãy "allow" cổng 2222. Nếu bạn dùng cổng 22 mặc định, hãy "allow" cổng 22.
1. Mở cổng SSH:
Bash
sudo ufw allow 22/tcp
Hoặc (cách dễ nhớ hơn):
Bash
sudo ufw allow ssh
2. Mở cổng Web (HTTP và HTTPS): Nếu VPS này dùng để chạy website, bạn cần mở cổng 80 và 443.
Bash
sudo ufw allow 80/tcp # Cho HTTP
sudo ufw allow 443/tcp # Cho HTTPS
Hoặc (cách dễ nhớ hơn):
Bash
sudo ufw allow http
sudo ufw allow https
Chỉ sau khi chạy lệnh cho phép SSH, bạn mới được sang bước 4.
Sau khi đã chắc chắn cổng SSH được phép, gõ lệnh:
Bash
sudo ufw enable
Hệ thống sẽ cảnh báo "Command may disrupt existing ssh connections" (Lệnh có thể làm gián đoạn kết nối SSH). Gõ y (Yes) và Enter.
Tường lửa của bạn hiện đã hoạt động.
Gõ lệnh sau để xem các quy tắc đang chạy:
Bash
sudo ufw status verbose
Bạn sẽ thấy kết quả tương tự:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
...
Dòng Status: active và các quy tắc ALLOW IN cho 22, 80, 443 xác nhận bạn đã thành công.
Mở một Port Cụ thể (TCP/UDP)
Ví dụ, bạn cần mở cổng 5432 cho cơ sở dữ liệu PostgreSQL, chỉ dùng giao thức TCP:
Bash
sudo ufw allow 5432/tcp
Mở Port cho một Địa chỉ IP Cụ thể (Bảo mật SSH)
Đây là cách bảo mật SSH "tối thượng". Chỉ cho phép IP của nhà bạn (ví dụ 1.2.3.4) được phép SSH:
Bash
sudo ufw allow from 1.2.3.4 to any port 22
Sau khi làm việc này, bạn có thể xóa quy tắc ufw allow 22 (cho phép mọi nơi).
Cách đóng Port (Deny) và Xóa quy tắc (Delete)
Nếu bạn muốn chặn (deny) một cổng:
Bash
sudo ufw deny 3306
Nếu bạn muốn xóa một quy tắc đã tạo (ví dụ, xóa quy tắc allow 80):
Bash
sudo ufw delete allow 80
Đây là "nỗi đau" lớn nhất. Nếu bạn chạy ufw enable trước khi ufw allow ssh, bạn sẽ bị khóa. Cách giải quyết: Hầu hết các nhà cung cấp VPS (InterData, DigitalOcean, Vultr...) đều cung cấp một "Bảng điều khiển Khẩn cấp" (Emergency Console hoặc VNC Console) trong trang quản trị VPS. Đây là một cửa sổ terminal ảo, kết nối trực tiếp đến VPS, bỏ qua lớp tường lửa mạng. Bạn cần đăng nhập vào đó và gõ lệnh sudo ufw allow ssh để tự cứu mình.
Cloud Firewall (Tường lửa đám mây): Là tường lửa nằm bên ngoài VPS của bạn (do nhà cung cấp quản lý). Nó chặn lưu lượng trước khi lưu lượng đó chạm đến VPS.
UFW (Tường lửa VPS): Là phần mềm chạy bên trong VPS của bạn.
Nên dùng cái nào? Nên dùng CẢ HAI. Dùng Cloud Firewall để chặn các cổng cơ bản (chỉ cho phép 22, 80, 443) và dùng UFW bên trong để tinh chỉnh chi tiết hơn (ví dụ: allow IP cụ thể).
Không. Các Control Panel như aaPanel hay CyberPanel thường có hệ thống tường lửa riêng của chúng (CyberPanel dùng firewalld, aaPanel có plugin tường lửa riêng). Chúng sẽ tự động quản lý port cho bạn. Cài UFW cùng lúc có thể gây xung đột. Nếu đã dùng Control Panel, hãy dùng tường lửa tích hợp của Control Panel đó.
Không. UFW là công cụ quản lý iptables. Khi bạn gõ ufw allow 80, UFW sẽ tự động dịch lệnh đó thành cú pháp iptables phức tạp cho bạn. Bạn không cần đụng trực tiếp vào iptables.
Việc hiểu và thiết lập Tường lửa (Firewall) VPS là gì là kỹ năng cơ bản, thiết yếu và là lớp phòng thủ đầu tiên khi quản trị máy chủ. Một tường lửa được cấu hình đúng (chặn tất cả, chỉ mở cổng cần thiết) sẽ ngay lập tức bảo vệ bạn khỏi 99% các cuộc tấn công tự động trên Internet.
Tuy nhiên, tường lửa không phải là tất cả. Tường lửa chỉ bảo vệ các "cánh cửa" (Ports). Bạn vẫn cần bảo vệ "bên trong" các cánh cửa đó, ví dụ như:
Bảo mật SSH (Port 22) bằng SSH Key và Fail2Ban.
Cập nhật phần mềm (Update) thường xuyên.
Sao lưu (Backup) dữ liệu.
Một VPS an toàn là một VPS được bảo vệ theo nhiều lớp, và Tường lửa chính là lớp ngoài cùng.