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.