Hướng dẫn cài đặt Tường Lửa UFW Trên Ubuntu mới nhất

setup UFW ubuntu

UFW (Uncomplicated Firewall) là một giao diện đơn giản cho iptables, được thiết kế nhằm đơn giản hoá quá trình cấu hình tường lửa trên Ubuntu. Mặc dù iptables là một công cụ mạnh mẽ và linh hoạt, nhưng đối với người mới bắt đầu, việc sử dụng nó để cấu hình một tường lửa một cách chính xác có thể gặp khó khăn. Nếu bạn đang tìm cách bảo mật mạng của mình và chưa biết sử dụng công cụ nào, UFW có thể là lựa chọn phù hợp.

Bài hướng dẫn này sẽ chỉ cho bạn cách cài đặt tường lửa với UFW trên Ubuntu (phiên bản 18.04 trở lên).

Yêu cầu tiên quyết trước khi cài đặt Tường Lửa UFW

Nếu bạn đang dùng Ubuntu phiên bản 16.04 hoặc thấp hơn, chúng tôi khuyến nghị bạn nâng cấp lên phiên bản mới hơn vì Ubuntu đã ngừng hỗ trợ các phiên bản này. Bộ sưu tập hướng dẫn của chúng tôi sẽ giúp bạn nâng cấp phiên bản Ubuntu.

Để theo dõi bài hướng dẫn này, bạn cần:

  •  Một máy chủ chạy Ubuntu (phiên bản 18.04 trở lên) cùng với một tài khoản không phải root có quyền sudo. Để biết cách thiết lập, hãy chọn bản phân phối của bạn từ danh sách và theo dõi Hướng Dẫn Cài Đặt Máy Chủ Ban Đầu.
  • UFW được cài đặt sẵn trên Ubuntu. Nếu vì lý do nào đó nó đã bị gỡ bỏ, bạn có thể cài đặt lại bằng sudo apt install ufw

Cài đặt tường lửa Ubuntu với UFW

  1. Bước 1 — Đảm Bảo IPv6 Đã Được Bật
  2. Bước 2 — Thiết Lập Chính Sách Mặc Định
  3. Bước 3 — Cho Phép Kết Nối SSH
    • Cho phép hồ sơ ứng dụng UFW OpenSSH
    • Cho phép SSH theo tên dịch vụ
    • Cho phép SSH theo số cổng
  4. Bước 4 — Bật UFW
  5. Bước 5 — Cho Phép Các Kết Nối Khác
    • Các dải cổng cụ thể
    • Các địa chỉ IP cụ thể
    • Các mạng con
    • Kết nối đến giao diện mạng cụ thể
  6. Bước 6 — Từ Chối Các Kết Nối
  7. Bước 7 — Xóa Các Quy Tắc UFW
    • Xóa quy tắc UFW theo số thứ tự
    • Xóa quy tắc UFW theo tên
  8. Bước 8 — Kiểm Tra Trạng Thái và Các Quy Tắc UFW
  9. Bước 9 — Vô Hiệu Hoá hoặc Reset Tường Lửa

Bước 1 — Đảm Bảo IPv6 Đã Được Bật trước khi cài đặt Tường Lửa UFW Trên Ubuntu

Trong các phiên bản Ubuntu mới, IPv6 thường được bật mặc định. Điều này có nghĩa là hầu hết các quy tắc tường lửa bạn thêm vào máy chủ sẽ bao gồm cả phiên bản IPv4 và IPv6 (phiên bản IPv6 được đánh dấu bằng “v6” trong đầu ra của lệnh ufw status).
Để đảm bảo IPv6 đã được bật, hãy kiểm tra file cấu hình UFW tại /etc/default/ufw. Mở file này bằng nano (hoặc trình soạn thảo bạn ưa thích):

sudo nano /etc/default/ufw

Sau đó, đảm bảo rằng giá trị của IPV6 được đặt là yes. File sẽ có đoạn như sau:

IPV6=yes

Lưu và đóng file (với nano: nhấn CTRL+X, sau đó Y và ENTER).

Khi UFW được bật ở bước sau, nó sẽ tự động cấu hình các quy tắc cho cả IPv4 và IPv6.

Bước 2 — Thiết Lập Chính Sách Mặc Định UFW trên Ubuntu

Nếu bạn mới bắt đầu với UFW, bước đầu tiên nên làm là kiểm tra các chính sách mặc định của tường lửa. Các quy tắc này kiểm soát cách xử lý lưu lượng không khớp với bất kỳ quy tắc nào khác.

Mặc định, UFW được thiết lập để từ chối (deny) tất cả các kết nối đến và cho phép (allow) tất cả các kết nối đi. Điều này có nghĩa là nếu ai đó cố gắng truy cập máy chủ của bạn, họ sẽ không thể kết nối, trong khi các ứng dụng trên máy chủ có thể truy cập Internet.

Để thiết lập chính sách mặc định, chạy:

sudo ufw default deny incoming

Output

Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)

Tiếp theo, để thiết lập chính sách outgoing mặc định là cho phép:

sudo ufw default allow outgoing

Output

Default outgoing policy changed to 'allow'
(be sure to update your rules accordingly)

Những lệnh này thiết lập các chính sách cơ bản: từ chối lưu lượng đến và cho phép lưu lượng đi. Đối với một máy tính cá nhân, các chính sách này có thể đủ, nhưng các máy chủ thường cần phản hồi các yêu cầu từ bên ngoài, điều này sẽ được thiết lập trong các bước tiếp theo.

setup UFW ubuntu 2

Bước 3 — Cho Phép Kết Nối SSH

Nếu bạn bật tường lửa ngay bây giờ, nó sẽ chặn tất cả các kết nối đến, do đó bạn cần tạo quy tắc cho phép các kết nối hợp lệ như SSH hoặc HTTP để máy chủ có thể phản hồi.

Cho Phép Hồ Sơ Ứng Dụng UFW OpenSSH

Khi cài đặt, hầu hết các ứng dụng dựa trên mạng sẽ đăng ký một hồ sơ ứng dụng (UFW application profile) để cho phép bạn nhanh chóng cho phép hoặc từ chối truy cập đến một dịch vụ. Để kiểm tra các hồ sơ hiện có, chạy:

sudo ufw app list

Output

Available applications:
  OpenSSH

Để kích hoạt hồ sơ ứng dụng OpenSSH, chạy:

sudo ufw allow OpenSSH

Output

Rule added
Rule added (v6)

Cho Phép SSH theo Tên Dịch Vụ

Một cách khác để cho phép kết nối SSH đến là tham chiếu theo tên dịch vụ (ssh):

sudo ufw allow ssh

Output

Rule added
Rule added (v6)

Cho Phép SSH theo Số Cổng

Ngoài ra, bạn có thể chỉ định số cổng thay vì tên dịch vụ. Ví dụ, nếu SSH mặc định sử dụng cổng 22:

sudo ufw allow 2222

Output

Rule added
Rule added (v6)

Nếu SSH của bạn chạy trên cổng khác (ví dụ: 2222), hãy thay số cổng tương ứng.

Bước 4 — Bật UFW

Bây giờ, khi bạn đã cấu hình quy tắc cho phép kết nối SSH, hãy bật UFW.
Để kiểm tra các quy tắc đã được thêm (mặc dù tường lửa vẫn ở trạng thái tắt), chạy:

sudo ufw show added

Output

Added user rules (see 'ufw status' for running firewall):
ufw allow OpenSSH

Sau khi xác nhận rằng quy tắc cho phép SSH đã có, bật tường lửa bằng:

sudo ufw enable

Output

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system st

Bạn sẽ nhận được cảnh báo rằng lệnh có thể làm gián đoạn các kết nối SSH hiện tại. Vì bạn đã thiết lập quy tắc cho phép SSH, hãy trả lời “y” và nhấn ENTER.
Bây giờ, tường lửa đã được bật. Bạn có thể dùng lệnh sudo ufw status verbose , để xem các quy tắc hiện hành.

Bước 5 — Cho Phép Các Kết Nối Khác

Ở bước này, bạn cần cho phép tất cả các kết nối khác mà máy chủ của bạn cần phản hồi. Các kết nối này phụ thuộc vào nhu cầu cụ thể của bạn. Bạn đã biết cách tạo quy tắc cho SSH, và bây giờ bạn có thể làm tương tự cho:

  • HTTP (cổng 80): Sử dụng lệnh sudo ufw allow http hoặc sudo ufw allow 80
  • HTTPS (cổng 443): Sử dụng lệnh sudo ufw allow https hoặc sudo ufw allow 443
  • Apache: Cho phép cả HTTP và HTTPS với hồ sơ “Apache Full” sudo ufw allow "Apache Full"
  • Nginx: Cho phép cả HTTP và HTTPS với hồ sơ “Nginx Full” sudo ufw allow "Nginx Full"

Ngoài ra, bạn có thể tạo các quy tắc khác bằng cách chỉ định các dải cổng, địa chỉ IP cụ thể, hoặc mạng con, như được minh họa trong các phần dưới đây.

Các Dải Cổng Cụ Thể

Ví dụ, để cho phép kết nối X11 (sử dụng các cổng 6000–6007):

sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp

Khi chỉ định dải cổng, bạn phải xác định giao thức (tcp hoặc udp).

Các Địa Chỉ IP Cụ Thể và Mạng Con

Để cho phép kết nối từ một địa chỉ IP cụ thể, ví dụ 203.0.113.4:

sudo ufw allow from 203.0.113.4

Output

Rule added

Nếu bạn chỉ muốn cho phép kết nối đến cổng 22 từ địa chỉ đó:

sudo ufw allow from 203.0.113.4 to any port 22

Output

Rule added

Để cho phép một mạng con, ví dụ 203.0.113.0/24, chạy:

sudo ufw allow from 203.0.113.0/24

Output

Rule added

Nếu bạn muốn chỉ định cả cổng đích (ví dụ cổng 22):

sudo ufw allow from 203.0.113.0/24 to any port 22

Output

Rule added

Kết Nối Đến Giao Diện Mạng Cụ Thể

Nếu bạn muốn tạo một quy tắc tường lửa chỉ áp dụng cho một giao diện mạng cụ thể, bạn có thể làm điều đó bằng cách chỉ định “allow in on” theo sau là tên của giao diện mạng.

Bạn có thể kiểm tra các giao diện mạng hiện có trước khi tiếp tục. Để làm điều đó, hãy sử dụng lệnh:

ip addr

Đoạn đầu ra mẫu:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
. . .
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
. . .

Đầu ra được làm nổi bật cho biết tên của các giao diện mạng. Thông thường, các giao diện này được đặt tên như eth0 hoặc enp3s2.

Vì vậy, nếu máy chủ của bạn có một giao diện mạng công cộng tên là eth0, bạn có thể cho phép lưu lượng HTTP (cổng 80) đến nó bằng lệnh:

sudo ufw allow in on eth0 to any port 80

Output

Rule added
Rule added (v6)

Lệnh trên sẽ cho phép máy chủ của bạn nhận các yêu cầu HTTP từ Internet công cộng.

Ngược lại, nếu bạn muốn máy chủ cơ sở dữ liệu MySQL (cổng 3306) lắng nghe các kết nối trên giao diện mạng riêng (ví dụ: eth1), bạn có thể sử dụng lệnh:

sudo ufw allow in on eth1 to any port 3306

Output

Rule added
Rule added (v6)

Lệnh này sẽ cho phép các máy chủ khác trong mạng nội bộ kết nối đến cơ sở dữ liệu MySQL của bạn.

setup UFW ubuntu 3

Bước 6 — Từ Chối Các Kết Nối

Nếu bạn chưa thay đổi chính sách mặc định cho các kết nối đến, UFW đã được thiết lập để từ chối tất cả các kết nối đến trừ khi có quy tắc cho phép. Tuy nhiên, đôi khi bạn cần từ chối các kết nối cụ thể dựa trên địa chỉ IP nguồn hoặc mạng con.

Để viết quy tắc từ chối, hãy sử dụng các lệnh đã trình bày ở trên nhưng thay thế allow bằng deny.

Ví dụ, để từ chối các kết nối HTTP:

sudo ufw deny http

Output

Rule added
Rule added (v6)

Hoặc, để từ chối tất cả các kết nối từ địa chỉ 203.0.113.4:

sudo ufw deny from 203.0.113.4

Output

Rule added

Ngoài ra, nếu bạn muốn chặn lưu lượng xuất đi trên một cổng cụ thể (ví dụ, cổng 25 cho SMTP):

sudo ufw deny out 25

Output

Rule added
Rule added (v6)

Bước 7 — Xóa Các Quy Tắc UFW

Biết cách xóa các quy tắc tường lửa cũng quan trọng như biết tạo chúng. Có hai cách để chỉ định quy tắc cần xóa: theo số thứ tự hoặc theo tên (định danh).

Xóa Quy Tắc UFW Theo Số Thứ Tự

Đầu tiên, hiển thị danh sách các quy tắc có số thứ tự:

sudo ufw status numbered

Numbered Output:

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    15.15.15.0/24
[ 2] 80                         ALLOW IN    Anywhere

Nếu bạn muốn xóa quy tắc số 2 (cho phép kết nối HTTP trên cổng 80), chạy:

sudo ufw delete 2

Output

Deleting:
 allow 80
Proceed with operation (y|n)? y
Rule deleted

Xóa Quy Tắc UFW Theo Tên

Thay vì dùng số thứ tự, bạn cũng có thể xóa quy tắc dựa trên tên (định danh) của quy tắc. Ví dụ, để xóa quy tắc cho phép kết nối từ hồ sơ “Apache Full”:

sudo ufw delete allow "Apache Full"

Output

Rule deleted
Rule deleted (v6)

Lưu ý: Khi xóa quy tắc theo tên, cả quy tắc IPv4 và IPv6 sẽ bị xóa nếu có.

Bạn cũng có thể xóa quy tắc bằng cách thay thế tên dịch vụ bằng số cổng. Ví dụ, thay vì allow http, bạn có thể dùng allow 80.

sudo ufw delete allow 80

Output

Rule deleted
Rule deleted (v6)

Bước 8 — Kiểm Tra Trạng Thái và Các Quy Tắc UFW

Ở bất kỳ thời điểm nào, bạn có thể kiểm tra trạng thái của UFW bằng lệnh:

sudo ufw status verbose

Nếu UFW chưa được bật, đầu ra sẽ như sau:

Output

Status: inactive

Nếu UFW đang hoạt động, đầu ra sẽ cho biết trạng thái là active và liệt kê các quy tắc đã được thiết lập. Ví dụ, nếu máy chủ của bạn được cấu hình cho phép các kết nối SSH trên cổng 22, đầu ra có thể như sau:

Output

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere

Sử dụng lệnh này để xác nhận rằng các quy tắc của UFW đã được áp dụng chính xác.

setup UFW ubuntu 4

Bước 9 — Vô Hiệu Hoá hoặc Reset Tường Lửa

Nếu bạn quyết định không sử dụng tường lửa UFW, bạn có thể vô hiệu hoá nó bằng lệnh:

sudo ufw disable

Output

Firewall stopped and disabled on system startup

Lệnh này sẽ tắt hoàn toàn dịch vụ tường lửa trên hệ thống của bạn.

Nếu bạn đã cấu hình các quy tắc UFW nhưng muốn khởi đầu lại từ đầu, bạn có thể sử dụng lệnh reset:

sudo ufw reset

Output

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.20210729_170353'
Backing up 'before.rules' to '/etc/ufw/before.rules.20210729_170353'
Backing up 'after.rules' to '/etc/ufw/after.rules.20210729_170353'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20210729_170353'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20210729_170353'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20210729_170353'

Lệnh reset sẽ vô hiệu hoá UFW và xóa mọi quy tắc đã được định nghĩa, mang lại một cấu hình mới ban đầu cho UFW. Lưu ý rằng các chính sách mặc định sẽ không trở lại giá trị ban đầu nếu bạn đã thay đổi chúng.

Kết Luận

Tường lửa của bạn hiện đã được cấu hình để cho phép (ít nhất) các kết nối SSH đến. Hãy đảm bảo rằng bạn cũng cho phép những kết nối đến khác mà máy chủ của bạn cần để hoạt động, đồng thời hạn chế các kết nối không cần thiết để bảo vệ an toàn cho máy chủ.

Để tìm hiểu thêm về các cấu hình UFW thông dụng, hãy tham khảo bài hướng dẫn UFW Essentials: Common Firewall Rules and Commands.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *