Ở bài viết này, BKHOST sẽ cùng bạn tìm ra câu trả lời cho câu hỏi “Làm thế nào để thiết lập và định cấu hình Firewall với UFW trong Ubuntu 20.04 LTS?”.
Ok, hãy cùng bắt đầu ngay thôi nào.
Nội dung bài viết
UFW là gì?
UFW viết tắt của Uncomplicated FireWall, hay còn được biết đến là một giao diện hướng tới quá trình đơn giản hóa trình cấu hình tường lửa.
Việc đảm bảo trang mạng với firewall đơn giản là rất dễ và luôn được khuyến khích.
Các bước thiết lập và định cấu hình Firewall với UFW trong Ubuntu 20.04 LTS
Bước 1 – Thiết lập các chính sách UFW
Để xem trạng thái của UFW, ta gõ như sau:
sudo ufw status
Ví dụ như sau:
Status: inactive
Các chính xác mặc định của firewall đều hoạt động tốt ở 2 giao diện máy chủ và máy để bàn. Điểm mạnh của chính sách này là việc chúng ta có thể đóng tất cả các port trên máy chủ và chỉ mở các port yêu cầu từng cái một. Dưới đây là cách mà chúng ta chặn tất cả các kết nối đến và chỉ cho phép các kết nối đi từ hộp Ubuntu 20.04 LTS:
sudo ufw default allow outgoing sudo ufw default deny incoming
Cho phép hỗ trợ IPv6
Bạn cần đảm bảo rằng lệnh IPV6=yes xuất hiện trong /etc/default/ufw file. Ví dụ như sau:
cat /etc/default/ufw
Bước 2 – Mở kết nối SSH TCP port 22
Bước tiếp theo là cho phép các đầu vào SSH ports. Chúng ta có thể dễ dàng mở SSH TCP port 22 bằng UFW theo cách sau:
sudo ufw allow ssh
Nếu bạn đang chạy SSH trong TCP port 2222 hay TCP port 2323, chúng ta làm như sau:
sudo ufw allow 2222/tcp sudo ufw allow 2323/tcp
Một số sysadmins có địa chỉ IP tĩnh (như 202.54.2.5) tại nhà hoặc văn phòng. Trong trường hợp này, chỉ cho phép SSH truy cập từ địa chỉ IP tĩnh như 202.54.2.5 đến máy chủ Ubuntu địa chỉ IP 172.24.13.45:
sudo ufw allow proto tcp from 202.54.2.5 to 172.24.13.45 port 22
Để giới hạn SSH port, ta chạy lệnh:
sudo ufw limit ssh
Bước 3 – Mở firewall
Hiện tại chúng ta đã mở cấu hình cơ bản, hay nói cách khác, firewall sẽ hạn chế tất cả lượng truy cập ngoại trừ SSH port 22. Thao tác đó được thực hiện bởi lệnh sau:
sudo ufw enable

Hãy nhớ rằng, một khi UFW được bật, nó cũng chạy trên hệ thống khởi động lại. Chúng ta có thể xác minh dễ dàng bằng cách sử dụng lệnh SystemCTL như sau:
Bạn muốn tắt UFW based firewall? Hãy thử cách sau:
sudo systemctl status ufw.service

Nếu bạn cần dừng tường lửa và vô hiệu hóa khi khởi động hệ thống, dùng lệnh:
sudo ufw disable
Output sau đó sẽ hiển thị như sau:
Firewall stopped and disabled on system startup
Bước 4 – Mở kết nối/port cổng đến cụ thể
Chúng tôi sẽ cho bạn biết thêm một số quy tắc. Giả sử bạn muốn mở các cổng và cho phép địa chỉ IP với UFW. Cú pháp để mở cổng TCP 80 và 443 như sau:
sudo ufw allow 80/tcp comment 'accept Apache' sudo ufw allow 443/tcp comment 'accept HTTPS connections'
Mở UDP/1194 (OpenVPN) server:
sudo ufw allow 1194/udp comment 'OpenVPN server'
Cho phép port ranges thông qua UFW
Chúng ta cũng có thể cho phép port ranges, TCP và UDP 3000 đến 4000:
sudo ufw allow 3000:4000/tcp sudo ufw allow 3000:4000/udp
Ở ví dụ sau, nếu bạn muốn cho phép tất cả các kết nối từ địa chỉ IP 104.22.10.214, dùng dòng lệnh sau:
sudo ufw allow from 104.22.10.214
Nếu muốn cho phép các kết nối từ địa chỉ IP 104.22.11.213 đến port 25:
sudo ufw allow from 104.22.11.213 to any port 25 proto tcp
Chúng ta cũng có thể thể lập dest IP 222.222.222.222 cho port 25:
sudo ufw allow from 104.22.11.213 to 222.222.222.222 port 25 proto tcp
Cho phép kết nối trên giao diện xác định
Chỉ mở port 22 cho giao diện WG0:
sudo ufw allow in on wg0 to any port 22
Giả sử bạn muốn cho phép kết nối cho TCP port 3306 trên giao diện LXDBR0 từ 10.105.28.22, hãy thêm:
ufw allow in on lxdbr0 from 10.105.28.22 to any port 3306 proto tcp
Thêm sub/net thay vì địa chỉ IP đơn lẻ:
ufw allow in on lxdbr0 from 10.105.28.0/24 to any port 3306 proto tcp
Bước 5 – Khóa hoặc từ chối kết nối/port đầu vào
Bạn có muốn đóng các port hay chặn một địa chỉ IP cụ thể không? Nếu có, cú pháp sau đây chính là cách từ chối truy cập. Nói cách khác, cách từ chối truy cập đến port 25, ta có thể làm như sau:
Nếu bạn chắc chắn muốn từ chối tất cả truy cập từ địa chỉ IP 203.5.1.43, dùng dòng lệnh sau:
sudo ufw deny from 203.5.1.43
Từ chối tất cả truy cập từ địa chỉ IP/subnet 103.13.42.13/29:
sudo ufw deny from 103.13.42.13/29
Nếu bạn muốn từ chối truy cập từ địa chỉ IP 1.1.1.2 (địa chỉ IP xấu) đến port 22, thử cách sau:
sudo ufw deny from 1.1.1.2 to any port 22 proto tcp
Bước 6 – Xác nhận trạng thái của UFW
Dùng lệnh trạng thái như sau:
sudo ufw status
Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere 80/tcp ALLOW Anywhere # accept Apache 443/tcp ALLOW Anywhere # accept HTTPS connections 1194/udp ALLOW Anywhere # OpenVPN server 3000:4000/tcp ALLOW Anywhere 3000:4000/udp ALLOW Anywhere Anywhere ALLOW 104.22.10.214 25/tcp ALLOW 104.22.11.213 222.222.222.222 25/tcp ALLOW 104.22.11.213 Anywhere DENY 203.5.1.43 Anywhere DENY 103.13.42.8/29 22/tcp DENY 1.1.1.2 22/tcp (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) # accept Apache 443/tcp (v6) ALLOW Anywhere (v6) # accept HTTPS connections 1194/udp (v6) ALLOW Anywhere (v6) # OpenVPN server 3000:4000/tcp (v6) ALLOW Anywhere (v6) 3000:4000/udp (v6) ALLOW Anywhere (v6)
Nếu bạn muốn xem status dài, hãy thử như sau:
sudo ufw status verbose
Xóa quy tắc trên Ubuntu 20.04 LTS UFW
Chúng ta đã hiểu được cách thêm, từ chối cũng như liệt kê các quy tắc của firewall. Bây giờ, hãy cùng tìm hiểu cách xóa bớt những quy tắc không mong muốn. Cú pháp liệt kê các quy tắc hiện có trong định dạng danh sách được đánh số như sau:
sudo ufw status numbered
Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] 80/tcp ALLOW IN Anywhere # accept Apache [ 3] 443/tcp ALLOW IN Anywhere # accept HTTPS connections [ 4] 1194/udp ALLOW IN Anywhere # OpenVPN server [ 5] 3000:4000/tcp ALLOW IN Anywhere [ 6] 3000:4000/udp ALLOW IN Anywhere
Ví dụ muốn xóa quy tắc thứ 6, ta gõ dòng lệnh:
sudo ufw delete 6 sudo ufw status numbered
Các lệnh định cấu hình firewall với UFW khác
Chúng ta hãy cùng nhau học thêm một số lệnh quan trọng khác:
Reset UFW
sudo ufw reset
Reload UFW
sudo ufw reload
Xem firewall logs
Để đặt mặc định các mục UFW được nhập vào file /var/log/ufw.log, dùng nixcmd[name_missing] – contact @ webmaster@cyberciti.biz với URL /more command/tail và các lệnh khác để xem UFW logs:
sudo more /var/log/ufw.log sudo tail -f /var/log/ufw.log
In danh sách tất cả các địa chỉ IP đang cố gắng đăng nhập qua SSH port nhưng bị chặn bởi UFW:
grep 'DPT=22' /var/log/ufw.log |\ egrep -o 'SRC=([0-9]{1,3}[\.]){3}[0-9]{1,3}' |\ awk -F'=' '{ print $2 }' | sort -u
Hiển thị danh sách các quy tắc:
sudo ufw show listening sudo ufw show added
Output như sau:
Added user rules (see 'ufw status' for running firewall): ufw allow from 10.8.0.0/24 to 10.8.0.1 port 22 proto tcp ufw allow from 10.8.0.0/24 to 10.8.0.1 port 3128 proto tcp ufw allow from 1t9.xxx.yyy.zzz to 1y2.aaa.bbb.ccc port 22 proto tcp
Thiết lập IP Masquerading với UFW
Đầu tiên, hãy chỉnh lại /etc/ufw/sysctl.conf và đảm bảo là bạn có dòng như sau:
net/ipv4/ip_forward=1 # IPv6 #net/ipv6/conf/default/forwarding=1 #net/ipv6/conf/all/forwarding=1
Tiếp theo thêm đầu của /etc/ufw/befor.rules/file], trước phần *Bộ lọc cho giao diện 10.0.0.0/8 và wg0:
*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.0.0.0/8 -o wg0 -j MASQUERADE COMMIT
Lưu và đóng file lại. Cuối cùng, thêm UFW route để cho phép lưu lượng dữ liệu:
sudo ufw route allow in on eth0 out on wg0 from 10.0.0.0/8
Thiết lập phương thức lọc dữ liệu Egress filtering
Giả sử bạn muốn chặn các địa chỉ RFC1918 khỏi giao diện ETH0 trên VM được kết nối với Internet. Thêm các quy tắc ufw route để từ chối lưu lượng dữ liệu:
$ sudo ufw route reject out on eth0 to 10.0.0.0/8 comment 'RFC1918 reject' $ sudo ufw route reject out on eth0 to 172.16.0.0/12 comment 'RFC1918 reject' $ sudo ufw route reject out on eth0 to 192.168.0.0/16 comment 'RFC1918 reject'
Lời kết
Qua bài hướng dẫn nhanh này, bạn đã học được cách bảo vệ máy chủ Ubuntu Linux 20.04 LTS hay desktop của mình bằng UFW.
Nếu bạn còn bất cứ câu hỏi nào, hãy để lại bình luận ở bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.
P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.