Hướng dẫn cấu hình UFW trên Ubuntu 20.04 để bảo vệ VPS hiệu quả

Hướng dẫn cấu hình UFW trên Ubuntu 20.04 để bảo vệ VPS hiệu quả

Bảo mật luôn là ưu tiên hàng đầu khi bạn vận hành máy chủ riêng (VPS) của mình. Dù ở mức cơ bản nhất, bạn cũng cần đảm bảo rằng chỉ những người dùng được ủy quyền mới có quyền truy cập vào máy chủ, ứng dụng, dịch vụ và các cấu hình hệ thống. Điều này không chỉ giúp bạn tránh khỏi các cuộc tấn công từ hacker mà còn hạn chế nguy cơ từ các lỗ hổng bảo mật trong phần mềm bạn đang chạy.

Trên hệ điều hành Ubuntu, có một công cụ bảo mật quan trọng được cài đặt sẵn theo mặc định: Uncomplicated Firewall (UFW). Đúng như tên gọi, UFW là một công cụ firewall đơn giản nhưng hiệu quả, giúp bảo vệ máy chủ trước các cuộc tấn công phổ biến nhắm vào các cổng dịch vụ thường dùng. Với giao diện thân thiện và dễ sử dụng, UFW là lựa chọn tuyệt vời cho cả người mới bắt đầu và quản trị viên hệ thống có kinh nghiệm.

Tuy nhiên, để cấu hình UFW hiệu quả trên máy chủ, bạn cần có kiến thức cơ bản về dòng lệnh và môi trường Linux. Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn cách mở cổng và thiết lập firewall UFW trên Ubuntu 20.04, áp dụng cho các máy chủ được triển khai trên nền tảng DataOnline Cloud Firewalls.

Yêu cầu

  • Triển khai một máy chủ Ubuntu 20.04 trên DataOnline Cloud Firewalls.
  • Có một tài khoản người dùng có quyền sudo (root).
  • Các dịch vụ như web server, cơ sở dữ liệu hay ứng dụng lưu trữ đã được cài đặt sẵn.

Bật UFW

Theo mặc định, UFW đã được cài đặt sẵn nhưng ở trạng thái tắt trên Ubuntu 20.04. Trước khi mở bất kỳ cổng nào trên máy chủ, bạn cần kích hoạt UFW. Nếu cần, bạn có thể cài đặt UFW bằng lệnh sau:

$ sudo apt-get install ufw

Kích hoạt UFW (Uncomplicated Firewall)

$ sudo ufw enable

Command may disrupt existing ssh connections. Proceed with operation (y|n)?

Hãy nhập Y để tiếp tục và cho phép các kết nối đến máy chủ của bạn.

Sau đó, bạn sẽ thấy thông báo:

Firewall is active and enabled on system startup

Lưu ý: Kết nối SSH hiện tại của bạn sẽ không bị ngắt tự động trừ khi bạn không hoạt động trong vòng hơn năm phút. Nếu bạn không cho phép kết nối SSH trước, bạn sẽ không thể đăng nhập lại vào máy chủ sau khi firewall được bật.

Cho phép kết nối đến máy chủ của bạn

Bạn có thể mở các cổng nhất định trên UFW để cho phép truy cập vào các dịch vụ cụ thể trên máy chủ. Có hai cách mở cổng:

Cú pháp đơn giản

Chỉ cần chỉ định số cổng:

$ sudo ufw allow <port>

Cú pháp đầy đủ

Chỉ định số cổng kèm theo giao thức:

$ sudo ufw allow <port>/<protocol>

Ví dụ, nếu bạn đang vận hành một web server, bạn muốn thế giới có thể truy cập website của bạn. Ứng dụng web sử dụng cổng 80 cho HTTP và cổng 443 cho HTTPS. Do đó, cần mở các cổng:

$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp

Để cho phép kết nối FTP, mở cổng 21 và cổng 20 (theo giao thức truyền tải):

$ sudo ufw allow 21/tcp
$ sudo ufw allow 20/tcp

Để cho phép kết nối SSH vào máy chủ, mở cổng 22:

$ sudo ufw allow 22/tcp

Ngoài ra, nếu bạn không biết số cổng của một ứng dụng, có thể cho phép kết nối theo tên ứng dụng. Ví dụ, để kích hoạt MySQL:

$ sudo ufw allow mysql

Bạn cũng có thể thêm chú thích cho các quy tắc firewall để giải thích rõ hơn mục đích của từng quy tắc bằng cách sử dụng tham số comment. Ví dụ:

$ sudo ufw reject telnet comment `telnet is insecure and unencrypted, simply unsafe to use.`

Chỉ định chế độ lọc

Để chỉ định hướng của lưu lượng truy cập, bạn có thể sử dụng tham số in hoặc out:

Lưu lượng vào :

$ sudo ufw allow in ftp

Lưu lượng ra :

$ sudo ufw allow out smtp

Từ chối kết nối đến máy chủ của bạn

Giống như việc mở cổng để cho phép kết nối, việc từ chối truy cập cũng rất quan trọng. Để từ chối kết nối đến một cổng nhất định, sử dụng lệnh deny và (tuỳ chọn) chỉ định giao thức:

$ sudo ufw deny <port>/<optional: protocol>

Ví dụ, để từ chối truy cập cổng mặc định của MySQL:

$ sudo ufw deny 3306

Lệnh trên sẽ chặn tất cả các kết nối đến MySQL qua cổng này. Nếu không thay đổi cổng mặc định hoặc kích hoạt lại, cơ sở dữ liệu sẽ không nhận được kết nối. Bạn cũng có thể sử dụng cú pháp đơn giản theo tên ứng dụng cho các cổng thông dụng:

$ sudo ufw deny mysql

Rule updated
Rule updated (v6)

Khi bạn thực hiện thay đổi, thông báo sẽ xuất hiện như “Rule updated” và “Rule updated (v6)”.

Cho phép kết nối chỉ từ các địa chỉ IP tin cậy

Thông thường, bạn nên cho phép truy cập chỉ với các cổng công khai như cổng 80 để truy cập website, trong khi các cổng khác cần được giới hạn. Ví dụ, bạn có thể chỉ cho phép địa chỉ IP công cộng của bạn (được cấp bởi nhà cung cấp dịch vụ) truy cập vào máy chủ qua SSH hoặc truy cập FTP.

Để cho phép một địa chỉ IP truy cập cổng 22, sử dụng:

$ sudo ufw allow from 192.168.0.1 to any port 22

Để cho phép cùng địa chỉ IP truy cập MySQL (cổng 3306):

$ sudo ufw allow from 192.168.0.1 to any port 3306

Chỉ những địa chỉ IP được cho phép mới có thể kết nối qua các cổng đã chỉ định.

Kiểm tra trạng thái UFW

Sau khi kích hoạt UFW và thiết lập các quy tắc, hãy kiểm tra bảng quy tắc firewall hiện tại:

$ sudo ufw status

Kết quả output của bạn sẽ giống như ví dụ bên dưới:

user@example:~$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
Apache                     DENY        Anywhere                  
80                         DENY        Anywhere                  
22                         ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere

Để xem chi tiết hơn, sử dụng tham số verbose:

$ sudo ufw status verbose

Output :

user@example:~$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
80/tcp (Apache)            DENY IN     Anywhere                  
80                         DENY IN     Anywhere                  
22                         ALLOW IN    Anywhere                  
80/tcp                     ALLOW IN    Anywhere                  
21                         ALLOW IN    Anywhere                   # FTP Connections
3306/tcp                   ALLOW IN    Anywhere                  
21/tcp                     ALLOW IN    Anywhere

Xoá quy tắc Firewall

Để quản lý các quy tắc UFW, bạn có thể liệt kê chúng theo số thứ tự bằng cách sử dụng tham số numbered:

$ sudo ufw status numbered

Output:

user@example:~$ sudo ufw status numbered
Status: active

 To                         Action      From
 --                         ------      ----
[ 1] Apache                     DENY IN     Anywhere
[ 2] 80                         DENY IN     Anywhere
[ 3] 22                         ALLOW IN    Anywhere
[ 4] 80/tcp                     ALLOW IN    Anywhere
[ 5] 21                         ALLOW IN    Anywhere                   # FTP Connections
[ 6] 3306/tcp                   ALLOW IN    Anywhere
[ 7] 21/tcp                     ALLOW IN    Anywhere
[ 8] 25/tcp                     ALLOW OUT   Anywhere                   (out)

Chú ý các số trong ngoặc vuông. Để xoá bất kỳ quy tắc nào, hãy sử dụng số tương ứng với quy tắc đó:

$ sudo ufw delete number

Ví dụ, để xoá quy tắc cho cổng 21:

user@example:~$ sudo ufw delete 5
Deleting:
allow 21 comment 'FTP Connections'
Proceed with operation (y|n)?

Những thay đổi sẽ có hiệu lực ngay lập tức.

Cài đặt mức độ ghi log

Mặc định, mức ghi log của UFW được thiết lập ở mức low. Tuy nhiên, UFW hỗ trợ nhiều mức ghi log khác nhau để bạn chọn theo nhu cầu:

  • off: Tắt ghi log.
  • low: Ghi lại các gói bị chặn không khớp với quy tắc đã đặt, cũng như các gói khớp với quy tắc đã được ghi log.
  • medium: Ghi log mức low, các gói cho phép không khớp với chính sách, các gói không hợp lệ và tất cả các kết nối mới đến máy chủ.
  • high: Ghi log mức medium nhưng không áp dụng giới hạn tần số, và ghi lại tất cả các gói có giới hạn.
  • full: Ghi lại toàn bộ lưu lượng firewall mà không giới hạn tốc độ hay truy cập.

Để đặt mức ghi log cho UFW, sử dụng lệnh:

$ sudo ufw logging LEVEL

Ví dụ:

$ sudo ufw logging medium

Để bật ghi log cho một quy tắc firewall cụ thể, chẳng hạn như SSH, dùng lệnh:

$ sudo allow log 22/tcp

Bật hỗ trợ IPV6

Nếu máy chủ của bạn sử dụng IPv6, bạn cần đảm bảo rằng hỗ trợ IPv6 đã được kích hoạt trong UFW. Mở tập tin cấu hình UFW bằng trình soạn thảo:

$ sudo vim /etc/default/ufw

Tìm dòng IPV6 và đảm bảo nó được đặt thành yes:

IPV6=yes

Lưu và đóng tập tin.

Vô hiệu/hồ tải lại UFW

Để vô hiệu hóa UFW, chạy:

$ sudo ufw disable

Nếu bạn cần tải lại quy tắc (reload), sử dụng:

$ sudo ufw reload

Để khởi động lại UFW, bạn cần vô hiệu hóa rồi bật lại:

$ sudo ufw disable
$ sudo ufw enable

Nhớ rằng trước khi bật lại UFW, hãy đảm bảo rằng cổng SSH đã được cho phép đối với địa chỉ IP của bạn.

Thiết lập lại các cài đặt mặc định

Nếu bạn cần đặt lại UFW về cài đặt mặc định, xoá toàn bộ quy tắc hiện có và đặt lại cấu hình gốc, chạy:

user@example:~$ ufw reset
Resetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)?

Kết luận

Việc cấu hình UFW (Uncomplicated Firewall) trên máy chủ Ubuntu 20.04 là một trong những bước thiết yếu giúp bạn tăng cường lớp phòng thủ bảo mật cho hệ thống. Bằng cách chủ động kích hoạt firewall, chỉ định rõ các cổng cần mở, chặn các kết nối không mong muốn và giới hạn quyền truy cập theo địa chỉ IP đáng tin cậy, bạn có thể giảm thiểu đáng kể nguy cơ bị tấn công từ bên ngoài. Đây là nền tảng quan trọng để vận hành một máy chủ an toàn, ổn định và sẵn sàng phục vụ trong môi trường mạng hiện đại.

Để 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 *