Thiết lập tường lửa hiệu quả là bước quan trọng để bảo mật máy chủ đám mây của bạn. Trước đây, các công cụ như iptables cung cấp nhiều tính năng mạnh mẽ nhưng lại khá phức tạp, yêu cầu người dùng phải có kiến thức chuyên sâu. UFW (Uncomplicated Firewall) ra đời như một giải pháp thay thế đơn giản hơn, giúp dễ dàng quản lý iptables thông qua giao diện thân thiện. UFW được hỗ trợ mạnh mẽ bởi cộng đồng Linux và thường được cài đặt mặc định trên các bản phân phối như Ubuntu và Debian.
Để bảo vệ VPS server khỏi các mối đe dọa mạng, việc thiết lập tường lửa là rất quan trọng. UFW trên Ubuntu giúp bạn dễ dàng quản lý bảo mật. Khám phá thêm các giải pháp tối ưu cho VPS server tại chuyên mục của chúng tôi để nâng cao hiệu suất hệ thống.
Sau đây, DataOnline sẽ hướng dẫn bạn cách sử dụng UFW để thiết lập quy tắc cho phép hoặc chặn kết nối theo cổng và địa chỉ IP, xóa, bật/tắt tường lửa, cũng như khôi phục cài đặt mặc định khi cần. Hãy cùng khám phá cách bảo vệ hệ thống của bạn với UFW một cách hiệu quả ngay hôm nay!
Yêu cầu tiên quyết
Để theo dõi hướng dẫn này, bạn cần có một máy chủ chạy Ubuntu hoặc Debian. Máy chủ của bạn nên có một người dùng không phải root với quyền sudo.
- Đối với Ubuntu, hãy theo hướng dẫn “Cài đặt ban đầu cần thiết Ubuntu 20.04”.
- Đối với Debian, hãy theo hướng dẫn “Thiết lập Máy Chủ Ban Đầu với Debian 11”.
Cả hai hướng dẫn cài đặt ban đầu này sẽ đảm bảo rằng bạn đã cài đặt UFW trên máy và có một môi trường an toàn để thực hành tạo các quy tắc tường lửa.
Sử dụng IPv6 với ufw
Nếu máy chủ ảo của bạn (VPS) được cấu hình cho IPv6, hãy đảm bảo rằng UFW được cấu hình để hỗ trợ IPv6, nhằm áp dụng các quy tắc tường lửa cho cả IPv4 và IPv6. Để làm điều này, mở tệp cấu hình UFW bằng trình soạn thảo văn bản mà bạn ưa thích (ở đây chúng ta sử dụng nano):
sudo nano /etc/default/ufw
Xác nhận rằng tham số IPV6 được đặt là yes trong tệp:
/etc/default/ufw
# /etc/default/ufw # # Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback # accepted). You will need to 'disable' and then 'enable' the firewall for # the changes to take affect. IPV6=yes …
Sau khi thực hiện thay đổi, lưu và thoát tệp. Nếu bạn sử dụng nano, nhấn CTRL + X, sau đó nhấn Y và ENTER.
Bây giờ, khởi động lại tường lửa bằng cách tắt nó trước:
sudo ufw disable
Output
:
Firewall stopped and disabled on system startup
Sau đó, bật lại tường lửa:
sudo ufw enable
Output
:
Firewall is active and enabled on system startup
Bây giờ, tường lửa UFW của bạn đã được thiết lập để cấu hình cho cả IPv4 và IPv6 khi cần.
Thiết lập các thiết lập mặc định của ufw
Bạn có thể cải thiện hiệu suất của tường lửa bằng cách định nghĩa các quy tắc mặc định cho việc cho phép và từ chối kết nối. Mặc định của UFW là từ chối tất cả các kết nối đến và cho phép tất cả các kết nối đi. Điều này có nghĩa là bất kỳ ai cố gắng kết nối đến máy chủ của bạn sẽ không thể kết nối, trong khi mọi ứng dụng bên trong máy chủ có thể kết nối ra ngoài.
Để cập nhật các quy tắc mặc định, trước tiên hãy thay đổi quy tắc cho các kết nối đến:
sudo ufw default deny incoming
Output
:
Default incoming policy changed to 'deny' (be sure to update your rules accordingly)
Tiếp theo, thay đổi quy tắc cho các kết nối đi:
sudo ufw default allow outgoing
Output
:
Default outgoing policy changed to 'allow' (be sure to update your rules accordingly)
Lưu ý: Nếu bạn muốn hạn chế nghiêm ngặt hơn, bạn có thể từ chối tất cả các yêu cầu đi ra. Tùy chọn này phụ thuộc vào sở thích cá nhân. Ví dụ, nếu bạn có một máy chủ đám mây tiếp cận công khai, điều này có thể giúp ngăn chặn bất kỳ kết nối remote shell nào. Tuy nhiên, nó cũng khiến việc quản lý tường lửa trở nên phức tạp hơn vì bạn sẽ phải thiết lập quy tắc cho tất cả các kết nối đi ra. Bạn có thể đặt tùy chọn này làm mặc định với lệnh sau:
sudo ufw default deny outgoing
Cho phép kết nối đến tường lửa
Để cho phép các kết nối, bạn cần thay đổi các quy tắc tường lửa bằng cách nhập các lệnh trong terminal. Nếu bạn bật tường lửa ngay bây giờ, nó sẽ từ chối tất cả các kết nối đến. Nếu bạn đang kết nối qua SSH, điều này sẽ gây ra vấn đề vì bạn có thể bị khóa ra ngoài máy chủ. Để ngăn chặn điều này, hãy cho phép các kết nối SSH đến máy chủ của bạn:
sudo ufw allow ssh
Output
:
Rule added Rule added (v6)
UFW cũng cung cấp các quy tắc mặc định như lệnh ssh ở ví dụ trên. Ngoài ra, bạn có thể cho phép các kết nối đến cổng 22/tcp (điều này dùng giao thức Transmission Control Protocol – TCP) bằng lệnh:
sudo ufw allow 22/tcp
Nếu máy chủ SSH của bạn chạy trên cổng khác, chẳng hạn cổng 2222, hãy thay thế tương ứng:
sudo ufw allow 2222/tcp
Output:
Rule added Rule added (v6)
Bảo vệ máy chủ web
Để bảo vệ một máy chủ web có hỗ trợ giao thức File Transfer Protocol (FTP), bạn cần cho phép kết nối đến cổng 80/tcp.
- Cho phép kết nối đến cổng 80/tcp, hữu ích cho các máy chủ web như Apache và Nginx lắng nghe yêu cầu HTTP:
sudo ufw allow 80/tcp
Output
(Thông báo quy tắc đã được thêm)
Nếu UFW không tự động cung cấp cấu hình, bạn cũng có thể sử dụng các từ khóa như “www” để cho phép:
sudo ufw allow www
Để cho phép kết nối FTP, bạn có thể cho phép cổng ftp hoặc cổng 21/tcp:
sudo ufw allow ftp
sudo ufw allow 21/tcp
Ngoài ra, đối với kết nối FTP, bạn cũng cần cho phép kết nối đến cổng 20/tcp:
sudo ufw allow 20/tcp
Chỉ định khoảng cổng
Bạn cũng có thể chỉ định một khoảng cổng để cho phép hoặc từ chối bằng UFW. Để làm điều này, bạn cần chỉ định cổng thấp nhất, sau đó dấu hai chấm “:”, và cuối cùng là cổng cao nhất của khoảng đó, sau đó chỉ định giao thức (tcp hoặc udp).
Ví dụ, lệnh sau sẽ cho phép truy cập TCP cho tất cả các cổng từ 1000 đến 2000 (bao gồm cả hai đầu):
sudo ufw allow 1000:2000/tcp
Tương tự, lệnh sau sẽ từ chối kết nối UDP cho tất cả các cổng từ 1234 đến 4321:
sudo ufw deny 1234:4321/udp
Chỉ định địa chỉ IP
Bạn có thể cho phép kết nối từ một địa chỉ IP cụ thể, ví dụ:
sudo ufw allow from your_server_ip
(Hãy thay thế “your_server_ip” bằng địa chỉ IP thực tế của bạn.)
Như các ví dụ trên cho thấy, bạn có rất nhiều sự linh hoạt trong việc điều chỉnh các quy tắc tường lửa bằng cách cho phép chọn lọc các cổng và địa chỉ IP cụ thể.
Từ chối kết nối
Nếu bạn muốn mở tất cả các cổng trên máy chủ — điều không được khuyến nghị — bạn có thể cho phép tất cả các kết nối và sau đó từ chối những cổng mà bạn không muốn cho phép. Ví dụ, để từ chối kết nối đến cổng 80, bạn sử dụng:
sudo ufw deny 80/tcp
Xóa các quy tắc
Nếu bạn muốn xóa một số quy tắc mà bạn đã thiết lập, hãy sử dụng lệnh delete và chỉ định quy tắc muốn loại bỏ. Ví dụ, để xóa quy tắc cho phép kết nối đến cổng 80/tcp:
sudo ufw delete allow 80/tcp
Output:
Rule deleted Rule deleted (v6)
Nếu danh sách quy tắc dài và phức tạp, bạn có thể sử dụng cách tiếp cận hai bước. Đầu tiên, tạo danh sách có số thứ tự của các quy tắc hiện tại:
sudo ufw status numbered
Status: active To Action From -- ------ ---- [ 1] OpenSSH ALLOW IN Anywhere [ 2] 22/tcp ALLOW IN Anywhere [ 3] 2222/tcp ALLOW IN Anywhere [ 4] 80 ALLOW IN Anywhere [ 5] 20/tcp ALLOW IN Anywhere …
Sau đó, dựa vào danh sách số thứ tự đó, bạn có thể xóa quy tắc bằng cách tham chiếu đến số thứ tự của nó, ví dụ:
sudo ufw delete 4
Output:
Deleting: allow 80 Proceed with operation (y|n)? y Rule deleted (v6)
Kích hoạt ufw
Sau khi bạn đã định nghĩa tất cả các quy tắc muốn áp dụng cho tường lửa, bạn có thể kích hoạt UFW để bắt đầu áp dụng chúng. Nếu bạn đang kết nối qua SSH, hãy đảm bảo rằng cổng SSH (thông thường là cổng 22) được cho phép, nếu không bạn có thể bị khóa ra khỏi máy chủ.
sudo ufw enable
Output:
Firewall is active and enabled on system startup
Để xác nhận các thay đổi đã được áp dụng, hãy kiểm tra trạng thái và danh sách quy tắc:
sudo ufw status
Output:
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 22/tcp ALLOW Anywhere 2222/tcp ALLOW Anywhere 20/tcp ALLOW Anywhere 80/tcp DENY Anywhere …
Bạn cũng có thể sử dụng lệnh verbose để có thông tin chi tiết hơn:
sudo ufw status verbose
Để tắt UFW, sử dụng:
sudo ufw disable
Output:
Firewall stopped and disabled on system startup
Đặt lại cài đặt mặc định
Nếu vì lý do nào đó bạn cần đặt lại các quy tắc của máy chủ đám mây về cài đặt mặc định, bạn có thể sử dụng lệnh ufw reset
. Lưu ý rằng bạn sẽ nhận được lời nhắc yêu cầu xác nhận (y|n) trước khi đặt lại mọi thứ vì thao tác này có thể làm gián đoạn các kết nối SSH hiện tại.
sudo ufw reset
Output ví dụ:
Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (y|n)? y Backing up 'user.rules' to '/etc/ufw/user.rules.20220217_190530' Backing up 'before.rules' to '/etc/ufw/before.rules.20220217_190530' Backing up 'after.rules' to '/etc/ufw/after.rules.20220217_190530' Backing up 'user6.rules' to '/etc/ufw/user6.rules.20220217_190530' Backing up 'before6.rules' to '/etc/ufw/before6.rules.20220217_190530' Backing up 'after6.rules' to '/etc/ufw/after6.rules.20220217_190530'
Việc đặt lại về cài đặt mặc định sẽ tắt UFW và xóa mọi quy tắc bạn đã định nghĩa trước đó. Các cài đặt mặc định sẽ không thay đổi về ban đầu nếu bạn đã sửa đổi chúng. Bây giờ, bạn có thể bắt đầu từ đầu với UFW và tùy chỉnh các quy tắc theo ý bạn.
Kết luận
Trong hướng dẫn này, bạn đã nắm vững cách thiết lập và cấu hình máy chủ đám mây để kiểm soát truy cập thông qua các cổng và địa chỉ IP. Bạn cũng đã thực hành xóa các quy tắc không cần thiết, kiểm tra tính hiệu lực của thay đổi bằng cách bật/tắt tường lửa UFW, và cuối cùng là đặt lại UFW về cài đặt mặc định khi cần. Với những kỹ năng này, bạn có thể bảo vệ hệ thống của mình hiệu quả hơn, đảm bảo tính bảo mật và ổn định trong môi trường máy chủ đám mây. Để tìm hiểu thêm về các khả năng của UFW, hãy xem hướng dẫn của chúng tôi về Tìm hiểu UFW căn Bản trên Ubuntu
Sau khi thiết lập UFW, bạn có thể yên tâm về bảo mật. Để chọn VPS phù hợp, tham khảo danh mục giá thuê VPS của chúng tôi. Tìm hiểu các gói dịch vụ với chi phí hợp lý, đảm bảo hiệu năng và an toàn cho hệ thống của bạn.