Giới thiệu về UFW trên Ubuntu Server

Giới thiệu về UFW trên Ubuntu Server

Giới thiệu

UFW là Uncomplicated FireWall là một công cụ để cấu hình firewall chạy trên iptables, được cài mặc định trong các bản phân phối Ubuntu. Nó cung cấp một giao diện được sắp xếp hợp lý để cấu hình tường lửa phổ biến thông qua dòng lệnh.

Các lệnh liên quan đến UFW

Xác nhận trạng thái, bật, tắt UFW

sudo ufw status

Ban đầu, khi mới cài đặt Ubuntu Server thì UFW chưa hoạt động, status sẽ là inactive. Để bật UFW gõ lệnh

sudo ufw enable

Một thông báo hiện ra "Command may disrupt existing ssh connections. Proceed with operation (y|n)?", chọn y để tiếp tục

Theo mặc định, bật UFW sẽ chặn truy cập bên ngoài vào tất cả các cổng trên máy chủ. Có nghĩa là nếu bạn đang kết nối với máy chủ qua SSH và bật UFW trước khi cho phép truy cập qua cổng SSH, bạn sẽ bị ngắt kết nối. Đảm bảo bạn bật quyền truy cập SSH trước khi bật tường lửa nếu đó là trường hợp của bạn.

Kiểm tra lại trạng thái lần nữa, trạng thái đã trở thành active

Để tắt ufw, gõ lệnh

sudo ufw disable

Chặn IP

Để chặn tất cả các kết nối bắt nguồn từ một địa chỉ IP cụ thể, hãy chạy lệnh sau, thay thế địa chỉ Block_IP bằng địa chỉ IP mà bạn muốn chặn:

sudo ufw deny from Block_IP

Thử kiểm tra lại trạng thái

Trong ví dụ này, mình đã block IP 111.65.250.2.
→ Chặn subnet

sudo ufw deny from Block_IP/24

Chặn các kết nối đến giao diện mạng cụ thế

Để chặn các kết nối đến từ một địa chỉ IP cụ thể, hãy chạy lệnh sau, thay thế địa chỉ IP được đánh dấu bằng địa chỉ IP bạn muốn chặn:

sudo ufw deny in on eth0 from Block_IP

Tham số "in" cho biết ufw chỉ áp dụng quy tắc cho các kết nối đến và "on eth0" chỉ rằng quy tắc chỉ áp dụng cho eth0.
Điều này có thể hữu ích nếu bạn có một hệ thống có nhiều giao diện mạng (bao gồm cả giao diện ảo) và bạn cần chặn quyền truy cập từ bên ngoài vào một số giao diện này, nhưng không phải tất cả.
→ Bonus: Kiểm tra giao diện mạng

ifconfig -a

Cho phép địa chỉ IP kết nối

sudo ufw allow from Allow_IP

Trong đó, Allow_IP là địa chỉ bạn cần cho kết nối.

Bạn cũng có thể cho phép các kết nối từ toàn bộ mạng con bằng cách cung cấp mặt nạ mạng con tương ứng cho một máy chủ, chẳng hạn như Allow_IP/24.

Cho phép địa chỉ IP kết nối đến giao diện mạng cụ thể

sudo ufw allow in on eth0 from Allow_IP

Tham số "in" cho biết ufw chỉ áp dụng quy tắc cho các kết nối đến và "on eth0" tham số chỉ định rằng quy tắc chỉ áp dụng cho eth0.

Xóa UFW Rule

Để xóa Rule đã áp dụng, sử dụng "ufw delete" Ví dụ như

sudo ufw delete allow in on eth0 from Allow_IP

Tuy nhiên, quy tắc đã nhập vào có thể hơi khó nhớ. Do đó chúng ta có thể xóa bằng cách xóa theo rule ID. Xác định rule ID bằng lệnh

sudo ufw status numbered

Và để xóa rule ID bạn cần xóa

sudo ufw delete rule_ID

Bạn sẽ được yêu cầu xác nhận thao tác và đảm bảo rằng ID chính xác là ID muốn xóa.

Liệt kê những ứng ụng UFW quản lý

Sau khi cài đặt ứng dụng (Apache, Nginx, SSH ...), các ứng dụng sẽ thiết lập một cấu hình UFW mà có thể sử dụng để cho phép kết nối từ các địa chỉ bên ngoài.

sudo ufw app list

Như mình đã cài đặt một số ứng dụng như Apache, OpenSSH, Nginx. Và UFW sẽ quản lý kết nối đến và đi cho các ứng dụng này.

Kích hoạt cho phép ứng dụng đi qua UFW

Để ứng dụng được phép sử dụng qua UFW thì bạn cần kích hoạt chúng. Ví dụ như OpenSSH để chúng ta có thể SSH vào. Để kích hoạt

sudo ufw allow "Tên_ứng_dụng"
#kết quả như dưới là đã kích hoạt thành công
Output
Rule added
Rule added (v6)

→ Lưu ý: tên phải chính xác như lúc chúng ta liệt kê danh sách ra.Ví dụ Nginx HTTP chỉ cho phép Nginx kết nối qua HTTP, tương tự Nginx HTTPS chỉ cho phép Nginx kết nối qua HTTPS, còn Nginx Full sẽ bao gồm cả HTTP và HTTPS. Tên_ứng_dụng phải nằm trong dấu ngoặc kép nhé ("")

Tắt kích hoạt

Tương tự bật, tắt bạn dùng

sudo ufw delete allow "Tên_ứng_dụng"

Một số ví dụ

#cho phép OpenSSH
sudo ufw allow OpenSSH
#cho phép Nginx
sudo ufw allow "Nginx Full"
#cho phép Apache
sudo ufw allow "Apache Full"
#trong trường hợp bạn cài Ghost CMS hay ứng dụng NodeJS bất kỳ, hoặc là khi bạn muốn đổi cổng SSH để tăng tính an toàn cho Server. Khi đó bạn cần cho phép truy cập qua cổng cụ thể
sudo ufw allow port/(TCP/UDP)
#Mở nhiều cổng một lúc qua TCP, thay tcp bằng udp nếu cần
sudo ufw allow proto tcp from any to any port 80,443,8888

Kết luận

UFW là một công cụ mạnh mẽ để cải thiện đáng kể tính bảo mật của Server khi được định cấu hình đúng cách. Bài viết này bao gồm một số quy tắc UFW phổ biến thường được sử dụng để định cấu hình tường lửa trên Ubuntu mà mình hay dùng.

Hầu hết các lệnh trong hướng dẫn này có thể được điều chỉnh để phù hợp với các trường hợp sử dụng và tình huống khác nhau. Để biết thêm thông tin chi tiết về từng tham số lệnh và các công cụ sửa đổi có sẵn, bạn có thể sử dụng mantiện ích để kiểm tra hướng dẫn sử dụng của UFW:

man ufw

Ngoài ra bạn cũng có thể tham khảo trực tiếp tại trợ giúp UFW của Ubuntu. Nếu có khó khăn hay có câu hỏi gì hãy đừng ngại ngần mà viết comment ở phần bên dưới nhé.

Đọc thêm

Cài đặt Ubuntu server 20.04 LTS
Hướng dẫn cài đặt LAMP(Linux, Apache, MariaDB, PHP) trên Ubuntu server 20.04
Hướng dẫn cài đặt Nginx trên Ubuntu Server 20.04
Cài đặt NodeJS trên Ubuntu Server 20.04