Chào bạn, nếu bạn đang vận hành một website trên máy chủ Linux, việc bảo vệ website khỏi các truy cập trái phép và các mối đe dọa an ninh mạng là vô cùng quan trọng. Một trong những biện pháp bảo mật cơ bản và hiệu quả nhất chính là cấu hình firewall (tường lửa). Firewall hoạt động như một người bảo vệ, kiểm soát lưu lượng mạng ra vào máy chủ của bạn, chỉ cho phép các kết nối hợp lệ và chặn đứng những truy cập đáng ngờ. Hôm nay, chúng ta sẽ cùng nhau tìm hiểu cách cấu hình firewall trên Linux để bảo vệ website của bạn một cách an toàn và hiệu quả nhé!
Tại sao website trên Linux cần firewall?
Firewall là gì và vai trò của nó trong bảo mật website
Firewall là một hệ thống an ninh mạng, có thể là phần cứng hoặc phần mềm, được thiết kế để kiểm soát lưu lượng mạng dựa trên các quy tắc bảo mật đã được thiết lập. Đối với website trên Linux, firewall thường là phần mềm chạy trên chính máy chủ, đóng vai trò là lớp phòng thủ đầu tiên, ngăn chặn các kết nối không mong muốn trước khi chúng có thể tiếp cận các dịch vụ web của bạn.
Các mối đe dọa phổ biến mà firewall có thể ngăn chặn
Một firewall được cấu hình đúng cách có thể giúp bạn chống lại nhiều mối đe dọa an ninh mạng, bao gồm:
Truy cập trái phép
Firewall có thể ngăn chặn những kẻ tấn công cố gắng truy cập vào máy chủ của bạn thông qua các cổng không cần thiết hoặc các dịch vụ không được phép.
Tấn công DoS/DDoS
Firewall có khả năng hạn chế lưu lượng truy cập từ các nguồn đáng ngờ, giúp giảm thiểu tác động của các cuộc tấn công từ chối dịch vụ (Denial of Service – DoS) hoặc tấn công từ chối dịch vụ phân tán (Distributed Denial of Service – DDoS).
Quét cổng và thăm dò lỗ hổng

Kẻ tấn công thường sử dụng các công cụ quét cổng để tìm kiếm các cổng đang mở và các dịch vụ đang chạy trên máy chủ, từ đó tìm kiếm các lỗ hổng để khai thác. Firewall có thể ẩn các cổng không cần thiết, làm cho máy chủ của bạn trở nên “vô hình” hơn đối với những kẻ tấn công.
Tầm quan trọng của firewall trong bảo vệ dữ liệu và người dùng
Việc bảo vệ website không chỉ là bảo vệ cho chính bạn mà còn là bảo vệ dữ liệu của người dùng. Một cuộc tấn công thành công có thể dẫn đến việc lộ thông tin cá nhân, thông tin thanh toán của khách hàng, gây ảnh hưởng nghiêm trọng đến uy tín và hoạt động kinh doanh của bạn. Firewall là một phần không thể thiếu trong chiến lược bảo mật tổng thể để đảm bảo an toàn cho cả website và người dùng của bạn.
Giới thiệu về các công cụ firewall phổ biến trên Linux
Trên Linux, có một số công cụ firewall phổ biến mà bạn có thể sử dụng để bảo vệ website của mình:
iptables: Công cụ tường lửa truyền thống và mạnh mẽ
iptables là một công cụ dòng lệnh mạnh mẽ, cung cấp khả năng kiểm soát chi tiết đối với các quy tắc firewall trong kernel Linux. Tuy nhiên, iptables có thể hơi phức tạp đối với người mới bắt đầu vì nó yêu cầu bạn phải hiểu rõ về các khái niệm mạng và cú pháp lệnh.
ufw (Uncomplicated Firewall): Giao diện đơn giản cho iptables
ufw là một giao diện dòng lệnh thân thiện hơn được xây dựng trên nền tảng iptables. Nó cung cấp một cách đơn giản hơn để quản lý các quy tắc firewall thông thường, giúp người dùng dễ dàng cấu hình các quy tắc cho phép hoặc chặn các kết nối dựa trên cổng hoặc dịch vụ.
firewalld: Firewall động với hỗ trợ zones (khu vực)
firewalld là một firewall động, cung cấp khả năng quản lý các quy tắc firewall một cách linh hoạt và hỗ trợ khái niệm “zones” (khu vực) để áp dụng các quy tắc khác nhau tùy thuộc vào môi trường mạng (ví dụ: home, work, public). firewalld thường được sử dụng trên các bản phân phối Linux hiện đại như CentOS và Fedora.
Trong bài viết này, chúng ta sẽ tập trung vào cách cấu hình ufw và firewalld, hai công cụ firewall phổ biến và dễ sử dụng cho việc bảo vệ website trên Linux.
Hướng dẫn cấu hình ufw để bảo vệ website
ufw (Uncomplicated Firewall) là một lựa chọn tốt cho những người muốn một công cụ firewall đơn giản nhưng vẫn hiệu quả.
Bước 1: Cài đặt ufw (nếu chưa có)
Nếu ufw chưa được cài đặt trên hệ thống của bạn, bạn có thể cài đặt nó bằng lệnh sau:
Trên Ubuntu/Debian:
Bash
sudo apt update
sudo apt install ufw
Trên CentOS/RHEL:
Mặc dù ufw không phải là firewall mặc định trên CentOS/RHEL, bạn vẫn có thể cài đặt nó từ kho lưu trữ EPEL:
Bash
sudo yum install epel-release
sudo yum install ufw
Bước 2: Cho phép các kết nối HTTP và HTTPS
Để website của bạn có thể được truy cập từ bên ngoài, bạn cần cho phép các kết nối đến các cổng 80 (HTTP) và 443 (HTTPS).
Cho phép kết nối đến cổng 80 (HTTP)
Sử dụng 1 lệnh sau để cho phép kết nối đến cổng 80:
1. blog.hostvn.net
blog.hostvn.net
Bash
sudo ufw allow 80
Cho phép kết nối đến cổng 443 (HTTPS)
Sử dụng lệnh sau để cho phép kết nối đến cổng 443:
Bash
sudo ufw allow 443
Bạn cũng có thể cho phép kết nối theo tên dịch vụ nếu ufw có cấu hình cho dịch vụ đó:
Bash
sudo ufw allow http
sudo ufw allow https
Bước 3: Cho phép kết nối SSH (nếu cần)
Nếu bạn cần truy cập máy chủ của mình từ xa thông qua SSH, bạn cần cho phép kết nối đến cổng SSH (thường là cổng 22). Lưu ý quan trọng: Nếu bạn đang sử dụng một cổng SSH khác với cổng mặc định, hãy thay thế 22 bằng số cổng thực tế của bạn.

Bash
sudo ufw allow 22
Hoặc nếu bạn muốn chỉ cho phép kết nối SSH từ một địa chỉ IP cụ thể (ví dụ: địa chỉ IP văn phòng của bạn), bạn có thể sử dụng lệnh sau:
Bash
sudo ufw allow from your_ip_address to any port 22
Bước 4: Từ chối tất cả các kết nối đến khác
Sau khi đã cho phép các kết nối cần thiết, bạn nên thiết lập chính sách mặc định là từ chối tất cả các kết nối đến khác. Điều này đảm bảo rằng chỉ những kết nối bạn đã явно cho phép mới có thể truy cập vào máy chủ của bạn.
Bash
sudo ufw default deny incoming
Bước 5: Kích hoạt ufw
Sau khi đã cấu hình các quy tắc cần thiết, bạn có thể kích hoạt ufw bằng lệnh sau:
Bash
sudo ufw enable
Bạn sẽ nhận được một cảnh báo về việc điều này có thể làm gián đoạn các kết nối SSH hiện tại. Nếu bạn đã cho phép kết nối SSH, bạn có thể an toàn bỏ qua cảnh báo này và gõ y để tiếp tục.
Bước 6: Kiểm tra trạng thái của ufw
Để kiểm tra xem ufw đã được kích hoạt và các quy tắc đã được áp dụng hay chưa, bạn có thể sử dụng lệnh sau:
Bash
sudo ufw status
Lệnh này sẽ hiển thị danh sách các quy tắc hiện đang hoạt động. Bạn sẽ thấy các quy tắc cho phép kết nối đến cổng 80, 443 và 22 (nếu bạn đã thêm chúng).
Các lệnh ufw thường dùng khác
- sudo ufw disable: Tắt ufw.
- sudo ufw reset: Đặt lại tất cả các quy tắc về trạng thái mặc định.
- sudo ufw delete allow <port> hoặc sudo ufw delete allow <service>: Xóa một quy tắc cho phép kết nối đến một cổng hoặc dịch vụ cụ thể.
- sudo ufw deny <port> hoặc sudo ufw deny <service>: Từ chối kết nối đến một cổng hoặc dịch vụ cụ thể.
Hướng dẫn cấu hình firewalld để bảo vệ website
firewalld là một firewall động thường được sử dụng trên CentOS, Fedora và các bản phân phối Linux hiện đại khác. Nó sử dụng khái niệm “zones” (khu vực) để quản lý các quy tắc firewall khác nhau cho các môi trường mạng khác nhau.
Bước 1: Cài đặt firewalld (nếu chưa có)
Nếu firewalld chưa được cài đặt trên hệ thống của bạn, bạn có thể cài đặt nó bằng lệnh sau:
Trên Ubuntu/Debian:
Bash
sudo apt update
sudo apt install firewalld
Trên CentOS/RHEL:
firewalld thường được cài đặt mặc định trên CentOS/RHEL.
Bước 2: Kích hoạt và kiểm tra trạng thái của firewalld
Để kích hoạt firewalld và đảm bảo nó đang chạy, sử dụng các lệnh sau:
Bash
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo systemctl status firewalld
Lệnh cuối cùng sẽ hiển thị trạng thái của firewalld, cho biết liệu nó đang hoạt động hay không.
Bước 3: Cho phép các dịch vụ HTTP và HTTPS
firewalld có các cấu hình sẵn cho nhiều dịch vụ phổ biến. Bạn có thể cho phép các dịch vụ HTTP và HTTPS bằng các lệnh sau:
Bash
sudo firewall-cmd –permanent –add-service=http
sudo firewall-cmd –permanent –add-service=https
Tùy chọn –permanent có nghĩa là các quy tắc này sẽ được lưu lại sau khi khởi động lại hệ thống.
Bước 4: Cho phép kết nối SSH (nếu cần)
Tương tự như ufw, bạn cần cho phép kết nối SSH nếu bạn muốn truy cập máy chủ từ xa:
Bash
sudo firewall-cmd –permanent –add-service=ssh
Nếu bạn đang sử dụng một cổng SSH khác, bạn có thể cho phép kết nối đến cổng đó bằng lệnh sau (thay thế <port_number> bằng số cổng thực tế):
Bash
sudo firewall-cmd –permanent –add-port=<port_number>/tcp –permanent
Bước 5: Đặt zone mặc định
firewalld sử dụng các “zones” để quản lý các quy tắc khác nhau. Zone mặc định thường là public, phù hợp cho các máy chủ web. Bạn có thể kiểm tra zone mặc định bằng lệnh:
Bash
sudo firewall-cmd –get-default-zone
Nếu cần, bạn có thể thay đổi zone mặc định bằng lệnh:
Bash
sudo firewall-cmd –set-default-zone=public
Bước 6: Lưu các cấu hình
Sau khi đã thêm các quy tắc, bạn cần tải lại cấu hình firewalld để các thay đổi có hiệu lực:
Bash
sudo firewall-cmd –reload
Các lệnh firewalld thường dùng khác
- sudo firewall-cmd –list-all: Hiển thị cấu hình hiện tại của zone mặc định.
- sudo firewall-cmd –list-all –zone=<zone_name>: Hiển thị cấu hình của một zone cụ thể.
- sudo firewall-cmd –remove-service=<service_name> –permanent: Xóa một dịch vụ được phép.
- sudo firewall-cmd –remove-port=<port_number>/tcp –permanent: Xóa một cổng được phép.
Các nguyên tắc cơ bản để cấu hình firewall hiệu quả
Chỉ mở các cổng cần thiết
Nguyên tắc quan trọng nhất khi cấu hình firewall là chỉ mở những cổng thực sự cần thiết cho hoạt động của website và các dịch vụ bạn đang sử dụng. Đóng tất cả các cổng không cần thiết sẽ giảm thiểu đáng kể nguy cơ bị tấn công.
Áp dụng nguyên tắc “từ chối mặc định”
Thiết lập chính sách mặc định là từ chối tất cả các kết nối đến và chỉ cho phép những kết nối cụ thể mà bạn tin tưởng. Điều này an toàn hơn nhiều so với việc cho phép tất cả các kết nối và sau đó cố gắng chặn những kết nối nguy hiểm.
Ghi log các hoạt động của firewall
Cấu hình firewall để ghi log các hoạt động, bao gồm cả các kết nối bị chặn. Điều này có thể giúp bạn theo dõi các nỗ lực tấn công và điều chỉnh cấu hình firewall cho phù hợp.
Thường xuyên cập nhật firewall
Giống như bất kỳ phần mềm nào khác, firewall cũng có thể có các lỗ hổng bảo mật. Hãy đảm bảo bạn luôn cập nhật firewall lên phiên bản mới nhất để có các bản vá bảo mật mới nhất.
Kinh nghiệm và lưu ý khi cấu hình firewall cho website Linux

Kiểm tra kỹ cấu hình trước khi áp dụng
Trước khi kích hoạt firewall hoặc tải lại cấu hình, hãy kiểm tra kỹ các quy tắc bạn đã thiết lập để đảm bảo rằng bạn không vô tình chặn các kết nối quan trọng (ví dụ: kết nối SSH của chính bạn).
Sao lưu cấu hình firewall hiện tại
Trước khi thực hiện bất kỳ thay đổi lớn nào, hãy sao lưu cấu hình firewall hiện tại của bạn. Điều này giúp bạn dễ dàng khôi phục lại cấu hình cũ nếu có sự cố xảy ra.
Theo dõi các bản cập nhật bảo mật cho firewall
Các nhà phát triển firewall thường xuyên phát hành các bản cập nhật để vá các lỗ hổng bảo mật mới. Hãy theo dõi các thông báo bảo mật và cập nhật firewall của bạn kịp thời.
Kết luận
Cấu hình firewall là một bước quan trọng để bảo vệ website của bạn trên Linux. Bằng cách làm theo các hướng dẫn trong bài viết này, bạn có thể thiết lập một lớp phòng thủ vững chắc để chống lại các mối đe dọa an ninh mạng phổ biến. Hãy nhớ rằng, bảo mật là một quá trình liên tục, vì vậy hãy thường xuyên xem xét và cập nhật cấu hình firewall của bạn để đảm bảo an toàn cho website và dữ liệu của bạn. Chúc bạn thành công!