Cách thiết lập tường lửa trên máy chủ Ubuntu
Đã xuất bản: lúc 21:35:25 UTC 15 tháng 2, 2025
Cập nhật lần cuối: lúc 08:37:40 UTC 12 tháng 1, 2026
Bài viết này giải thích và cung cấp một số ví dụ về cách thiết lập tường lửa trên GNU/Linux bằng ufw, viết tắt của Uncomplicated FireWall (Tường lửa đơn giản) - và cái tên này rất phù hợp, vì đây thực sự là một cách rất dễ dàng để đảm bảo bạn không mở nhiều cổng hơn mức cần thiết.
How to Set Up a Firewall on Ubuntu Server
Thông tin trong bài viết này dựa trên Ubuntu Server 14.04 x64. Nó có thể đúng hoặc không đúng với các phiên bản khác. (Cập nhật: Tôi có thể xác nhận rằng thông tin trong bài viết này về cơ bản vẫn còn hiệu lực và hoạt động tốt trên Ubuntu Server 24.04, tuy nhiên trong 10 năm qua, ufw đã trở nên "thông minh" hơn bằng cách có các cấu hình cho các ứng dụng máy chủ phổ biến (ví dụ: bạn có thể bật "Nginx đầy đủ" thay vì chỉ bật riêng cổng 80 và 443) và việc tắt/bật toàn bộ tường lửa để áp dụng các quy tắc mới không còn cần thiết nữa).
Khi mới bắt đầu sử dụng máy chủ GNU/Linux (Ubuntu), việc thiết lập tường lửa đòi hỏi phải tự tạo và duy trì một tệp cấu hình iptables khá phức tạp. Tuy nhiên, gần đây tôi đã phát hiện ra ufw, viết tắt của Uncomplicated Firewall (Tường lửa đơn giản) – và quả thực là vậy :-)
Bản cài đặt Ubuntu Server 14.04 của tôi đã có sẵn ufw, nhưng nếu bản của bạn chưa có, chỉ cần cài đặt nó từ kho lưu trữ:
Thực chất, UFW chỉ là một công cụ đơn giản hóa cấu hình iptables – về cơ bản, việc lọc vẫn do iptables và tường lửa nhân Linux thực hiện, vì vậy UFW không an toàn hơn hay kém an toàn hơn hai hệ thống này. Tuy nhiên, vì UFW giúp việc cấu hình tường lửa chính xác dễ dàng hơn nhiều, nó có thể giảm nguy cơ sai sót do con người và do đó có thể an toàn hơn đối với các quản trị viên thiếu kinh nghiệm.
Nếu máy chủ của bạn được cấu hình với cả IPv6 và IPv4, hãy đảm bảo rằng tính năng này cũng được bật cho UFW. Chỉnh sửa tệp /etc/default/ufw và tìm dòng có nội dung IPV6=yes. Trên máy của tôi, dòng này đã có sẵn, nhưng nếu nó không có hoặc nếu nó ghi là no, bạn nên chỉnh sửa nó.
Sau đó, chỉ cần sử dụng dấu nhắc lệnh để mở các cổng bạn muốn. Nếu bạn đang kết nối với máy chủ của mình qua SSH, hãy đảm bảo cho phép kết nối đó nữa, nếu không nó có thể làm gián đoạn kết nối của bạn và có thể khiến bạn không thể truy cập vào máy chủ khi bạn kích hoạt nó – tùy thuộc vào việc bạn có quyền truy cập vật lý vào máy chủ hay không, điều này có thể khá bất tiện ;-)
Ví dụ, nếu bạn sử dụng ssh trên cổng chuẩn 22 và đang cấu hình máy chủ web hỗ trợ cả kết nối không mã hóa (HTTP trên cổng 80) và mã hóa (HTTPS trên cổng 443), bạn sẽ thực hiện các lệnh sau để cấu hình ufw:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Nếu bạn cần thêm quy tắc, chỉ cần thêm chúng như trên.
Nếu bạn có địa chỉ IP tĩnh và chỉ cần kết nối qua SSH từ một vị trí duy nhất, bạn cũng có thể giới hạn các kết nối SSH chỉ đến một địa chỉ nguồn duy nhất như sau:
Tất nhiên, bạn có thể nhập địa chỉ IP của chính mình vào đó.
Sau khi hoàn tất, hãy kích hoạt ufw bằng cách nhập lệnh:
Vậy là xong! Tường lửa đang hoạt động và sẽ tự động khởi động khi bạn khởi động lại máy chủ :-)
Nếu bạn thực hiện thay đổi đối với cấu hình ufw, bạn có thể cần phải tắt và bật lại để các thay đổi có hiệu lực, như sau:
sudo ufw enable
Để xem cấu hình hiện tại, chỉ cần nhập:
Nếu ufw không được bật, nó sẽ chỉ hiển thị thông báo "không hoạt động", ngược lại nó sẽ liệt kê các quy tắc hiện đang được định nghĩa.
