#

Hướng dẫn cấu hình Firewall với UFW trong Ubuntu 20.04 LTS

 20/05/2022 - 11:27 Trịnh Duy Thanh

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.

Ở 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.

Các bước thiết lập và định cấu hình Firewall với UFW trong Ubuntu 20.04 LTS

cac buoc thiet lap va dinh cau hinh Firewall voi ufw trong Ubuntu 20.04 LTS

Dịch vụ Cloud VPS tiêu chuẩn quốc tế

BKHOST đang có chương trình khuyến mãi cực shock dành cho khách hàng đăng ký dịch vụ Cloud VPS Pro:

  • Giảm giá lên đến 30%.
  • Giá chỉ từ 125k/tháng.
  • Tặng thêm 512MB Ram khi đăng kí từ 12 tháng trở lên.

Đăng ký ngay:

thuê cloud vps

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

mo firewall-1

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

mo firewall-2

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'

Tổng kết về cách thiết lập và định cấu hình Firewall với UFW trong Ubuntu 20.04 LTS

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. 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.

Mua tên miền và hosting tại BKHOST

BKHOST là nhà cung cấp dịch vụ tên miền và hosting uy tín hàng đầu Việt Nam. Rất nhiều chương trình khuyến mãi hấp dẫn đang chờ bạn. Đăng ký ngay hôm nay:

Mua tên miền và hosting

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger