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
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 - và cái tên này rất phù hợp, đâ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 đăng này dựa trên Ubuntu Server 14.04 x64. 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 đăng này về cơ bản vẫn hợp lệ và hoạt động được kể từ Ubuntu Server 24.04, tuy nhiên trong 10 năm qua, ufw đã trở nên "thông minh" hơn một chút khi 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 full" thay vì các cổng 80 và 443 riêng biệt) 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 tôi mới bắt đầu với máy chủ GNU/Linux (Ubuntu), việc thiết lập tường lửa liên quan đến việc tạo và duy trì thủ công một tệp cấu hình phức tạp cho iptables. Tuy nhiên, gần đây tôi đã khám phá ra ufw , viết tắt của Uncomplicated Firewall – và thực sự là như vậy :-)
Bản cài đặt Ubuntu Server 14.04 của tôi đã cài đặt ufw, nhưng nếu chưa có, bạn chỉ cần cài đặt nó từ kho lưu trữ:
UFW thực ra chỉ là một công cụ đơn giản hóa cấu hình iptables – đằng sau hậu trường, iptables và tường lửa hạt nhân Linux vẫn thực hiện việc lọc, do đó ufw không kém hơn cũng không an toàn hơn những thứ này. Tuy nhiên, vì ufw giúp cấu hình tường lửa chính xác dễ dàng hơn nhiều, nên nó có thể giảm nguy cơ lỗi của con người và do đó có thể an toàn hơn đối với những người quản trị thiếu kinh nghiệm.
Nếu máy chủ của bạn được cấu hình với IPv6 cũng như IPv4, hãy đảm bảo rằng điều 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 bản cài đặt của tôi, nó đã có ở đó, nhưng nếu không hoặc nếu nó nói là không, bạn nên chỉnh sửa nó
Sau đó chỉ cần sử dụng dấu nhắc lệnh để bật các cổng bạn muốn mở. Nếu bạn kết nối với máy chủ của mình qua ssh, hãy đảm bảo cho phép điều đó hoặc nó có thể làm gián đoạn kết nối của bạn và có thể khóa bạn khỏi 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ể hơi 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 được mã hóa (HTTP trên cổng 80) và được mã hóa (HTTPS trên cổng 443), bạn sẽ đưa ra 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 có thể kết nối qua ssh từ một vị trí, bạn cũng có thể hạn chế kết nối ssh tới một địa chỉ gốc duy nhất như sau:
Tất nhiên, hãy nhập địa chỉ IP của bạn vào.
Khi hoàn tất, hãy kích hoạt ufw bằng cách nhập:
Và bạn đã hoàn tất! Tường lửa đang chạy 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 để 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, thông báo “không hoạt động” sẽ chỉ hiển thị, nếu không, nó sẽ liệt kê các quy tắc hiện được xác định.