Trong thế giới số hiện nay, việc bảo vệ máy chủ khỏi các mối đe dọa trên không gian mạng là một ưu tiên hàng đầu. Một trong những tuyến phòng thủ đầu tiên và hiệu quả nhất chính là tường lửa. Tường lửa hoạt động như một người gác cổng kỹ thuật số, giám sát và kiểm soát lưu lượng mạng ra vào dựa trên các quy tắc bảo mật đã được xác định trước. Đối với những người quản trị hệ thống Ubuntu, việc thiết lập một tường lửa mạnh mẽ không chỉ giúp ngăn chặn các truy cập trái phép mà còn đảm bảo sự ổn định và an toàn cho toàn bộ hệ thống. Tuy nhiên, việc cấu hình tường lửa đôi khi có thể phức tạp và khó khăn, đặc biệt với những người mới bắt đầu. Đây chính là lúc UFW (Uncomplicated Firewall) tỏa sáng. UFW là một công cụ quản lý tường lửa được thiết kế để đơn giản hóa quá trình phức tạp này, giúp bạn dễ dàng bảo vệ máy chủ của mình mà không cần phải đi sâu vào các chi tiết kỹ thuật của iptables. Bài viết này sẽ hướng dẫn bạn chi tiết cách cài đặt, cấu hình và quản lý tường lửa UFW trên Ubuntu 20.04, giúp bạn nắm vững một kỹ năng quan trọng để tăng cường bảo mật cho máy chủ của mình một cách hiệu quả.

Giới thiệu về UFW và tường lửa trên Ubuntu 20.04
Tường lửa là một thành phần không thể thiếu trong bất kỳ cấu trúc bảo mật hệ thống nào. Nó đóng vai trò như một rào cản giữa mạng nội bộ an toàn của bạn và mạng bên ngoài không đáng tin cậy, chẳng hạn như Internet. Bằng cách lọc lưu lượng truy cập, tường lửa giúp ngăn chặn các hoạt động độc hại như tấn công từ chối dịch vụ (DDoS là gì), quét cổng, và các nỗ lực truy cập trái phép khác. Nếu không có tường lửa, mọi cổng dịch vụ trên máy chủ của bạn sẽ bị phơi bày trực tiếp ra ngoài, tạo cơ hội cho kẻ tấn công khai thác các lỗ hổng bảo mật.
Để giải quyết vấn đề này, Ubuntu đã tích hợp sẵn một công cụ quản lý tường lửa cực kỳ thân thiện với người dùng tên là UFW, viết tắt của “Uncomplicated Firewall”. Đúng như tên gọi, UFW được tạo ra để đơn giản hóa việc cấu hình tường lửa, cung cấp một giao diện dòng lệnh trực quan thay vì phải làm việc trực tiếp với các quy tắc phức tạp của iptables. Điều này giúp cả người mới bắt đầu và các quản trị viên hệ thống có kinh nghiệm đều có thể nhanh chóng thiết lập các quy tắc bảo mật cần thiết.
Sử dụng UFW để bảo vệ máy chủ Ubuntu 20.04 mang lại nhiều lợi ích rõ rệt. Trước hết, nó giúp bạn tiết kiệm thời gian và công sức nhờ cú pháp lệnh đơn giản. Thay vì viết các chuỗi lệnh iptables dài dòng, bạn chỉ cần sử dụng các lệnh ngắn gọn như ufw allow ssh hoặc ufw deny from [IP]. Thứ hai, UFW giúp giảm thiểu sai sót trong quá trình cấu hình, một yếu tố quan trọng vì một quy tắc sai có thể vô tình khóa bạn khỏi máy chủ của chính mình. Cuối cùng, nó cung cấp một lớp bảo vệ vững chắc, cho phép bạn kiểm soát chính xác ai và dịch vụ nào có thể truy cập vào máy chủ của bạn. Trong bài viết này, chúng ta sẽ cùng nhau đi qua từng bước, từ cài đặt cơ bản đến các cấu hình nâng cao, để bạn có thể tự tin làm chủ công cụ mạnh mẽ này.

Các bước cài đặt UFW trên Ubuntu 20.04
Hầu hết các phiên bản Ubuntu hiện đại đều được cài đặt sẵn UFW. Tuy nhiên, việc kiểm tra lại để chắc chắn là một bước không bao giờ thừa. Việc xác nhận trạng thái ban đầu giúp bạn biết được tường lửa đã hoạt động hay chưa và tránh các xung đột không đáng có trong quá trình thiết lập.
Kiểm tra trạng thái UFW trên hệ thống
Trước khi tiến hành bất kỳ thay đổi nào, bạn nên kiểm tra trạng thái hiện tại của UFW trên hệ thống của mình. Mở terminal và chạy lệnh sau:
sudo ufw status
Nếu UFW chưa được kích hoạt, bạn sẽ nhận được thông báo: Status: inactive. Đây là trạng thái mặc định trên một hệ thống Ubuntu mới cài đặt. Nếu nó đã được kích hoạt, bạn sẽ thấy một danh sách các quy tắc hiện có. Việc kiểm tra này đảm bảo rằng bạn đang bắt đầu từ một trạng thái rõ ràng và biết trước được những gì đang diễn ra trên hệ thống của mình. Điều này đặc biệt quan trọng nếu bạn đang làm việc trên một máy chủ không phải do bạn thiết lập từ đầu.
Hướng dẫn cài đặt và kích hoạt UFW
Trong trường hợp UFW chưa được cài đặt trên hệ thống của bạn, bạn có thể dễ dàng cài đặt nó bằng trình quản lý gói APT. Hãy chạy lệnh sau:
sudo apt update
sudo apt install ufw
Sau khi quá trình cài đặt hoàn tất, UFW đã sẵn sàng để được cấu hình và kích hoạt. Tuy nhiên, trước khi bật tường lửa, có một bước cực kỳ quan trọng bạn phải làm: cho phép kết nối SSH. Nếu bạn kích hoạt UFW mà chưa tạo quy tắc cho phép SSH, kết nối hiện tại của bạn sẽ bị ngắt và bạn sẽ không thể truy cập lại máy chủ từ xa. Để cho phép kết nối SSH, hãy chạy lệnh:
sudo ufw allow ssh
Bây giờ, bạn đã có thể kích hoạt UFW một cách an toàn bằng lệnh:
sudo ufw enable
Hệ thống sẽ hỏi bạn xác nhận vì việc kích hoạt tường lửa có thể làm gián đoạn các kết nối hiện có. Nhập y và nhấn Enter. Cuối cùng, hãy kiểm tra lại trạng thái để xác nhận rằng UFW đã hoạt động và quy tắc cho phép SSH đã được áp dụng:
sudo ufw status
Bạn sẽ thấy kết quả tương tự như: Status: active, cùng với danh sách các quy tắc, bao gồm cả quy tắc cho phép lưu lượng trên cổng 22 (SSH).
Hướng dẫn thiết lập và cấu hình UFW để bảo vệ hệ thống
Sau khi đã cài đặt và kích hoạt UFW, bước tiếp theo là thiết lập các quy tắc để kiểm soát lưu lượng truy cập. Một chiến lược bảo mật tốt thường bắt đầu bằng việc từ chối tất cả các kết nối đến theo mặc định và chỉ cho phép những kết nối thực sự cần thiết. Điều này tuân theo nguyên tắc “đặc quyền tối thiểu”, giúp giảm thiểu bề mặt tấn công của máy chủ.
Để thiết lập quy tắc mặc định, hãy sử dụng các lệnh sau:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Lệnh đầu tiên sẽ chặn tất cả các kết nối đến máy chủ. Lệnh thứ hai cho phép tất cả các kết nối đi ra từ máy chủ, giúp các ứng dụng trên server có thể cập nhật hoặc kết nối đến các dịch vụ bên ngoài. Đây là cấu hình cơ bản và an toàn nhất cho hầu hết các trường hợp sử dụng.

Thiết lập các quy tắc cơ bản cho phép và từ chối kết nối
UFW cung cấp một cú pháp rất đơn giản để tạo các quy tắc. Ba loại quy tắc phổ biến nhất là allow (cho phép), deny (chặn), và limit (giới hạn). Quy tắc limit đặc biệt hữu ích để chống lại các cuộc tấn công brute-force, vì nó sẽ chặn một địa chỉ IP nếu nó cố gắng thiết lập quá nhiều kết nối trong một khoảng thời gian ngắn.
Dưới đây là một vài ví dụ về cách tạo quy tắc cơ bản:
- Cho phép truy cập dịch vụ web HTTP (cổng 80):
sudo ufw allow http (SSL là gì)
- Cho phép truy cập dịch vụ web HTTPS (cổng 443):
sudo ufw allow https (TLS là gì)
- Chặn một địa chỉ IP cụ thể:
sudo ufw deny from 203.0.113.100
- Giới hạn kết nối SSH để chống brute-force:
sudo ufw limit ssh (2fa là gì)
Những lệnh này rất dễ đọc và dễ hiểu, giúp bạn nhanh chóng xây dựng bộ quy tắc bảo mật phù hợp cho máy chủ của mình mà không cần phải nhớ các cú pháp phức tạp.
Cấu hình nâng cao với UFW (cổng, giao thức, IP cụ thể)
Ngoài các quy tắc cơ bản, UFW còn cho phép bạn tạo ra các quy tắc chi tiết hơn bằng cách chỉ định số cổng, giao thức (TCP hoặc UDP), và địa chỉ IP nguồn hoặc đích. Điều này mang lại sự linh hoạt tối đa trong việc kiểm soát truy cập.
Ví dụ, nếu bạn có một ứng dụng chạy trên cổng 3000 và chỉ muốn cho phép một địa chỉ IP cụ thể truy cập vào đó, bạn có thể sử dụng lệnh:
sudo ufw allow from 198.51.100.10 to any port 3000 proto tcp
Lệnh này có nghĩa là: “Cho phép kết nối giao thức TCP từ địa chỉ IP 198.51.100.10 đến bất kỳ địa chỉ IP nào trên máy chủ này tại cổng 3000”.
Bạn cũng có thể mở một dải cổng, điều này hữu ích cho các ứng dụng như FTP:
sudo ufw allow 30000:31000/tcp
Hoặc cho phép truy cập từ một dải mạng con (subnet):
sudo ufw allow from 192.168.1.0/24 to any port 22
Lệnh này sẽ cho phép tất cả các thiết bị trong mạng LAN (từ 192.168.1.1 đến 192.168.1.254) kết nối SSH đến máy chủ. Khả năng cấu hình chi tiết này giúp bạn xây dựng một hệ thống phòng thủ nhiều lớp, chỉ mở những gì cần thiết và cho những ai cần truy cập.
Cách bật, tắt và quản lý các quy tắc của tường lửa
Sau khi đã thiết lập các quy tắc, việc quản lý chúng là một phần quan trọng trong vòng đời của máy chủ. Bạn có thể cần tạm thời tắt tường lửa để gỡ lỗi, thêm quy tắc mới khi cài đặt dịch vụ, hoặc xóa các quy tắc cũ không còn sử dụng. UFW cung cấp các lệnh đơn giản để thực hiện tất cả các tác vụ này.

Bật/tắt UFW nhanh chóng bằng lệnh
Việc bật và tắt UFW rất đơn giản. Như đã đề cập ở phần cài đặt, bạn sử dụng lệnh sau để kích hoạt tường lửa:
sudo ufw enable
Trong trường hợp bạn cần tạm thời vô hiệu hóa tường lửa để kiểm tra sự cố kết nối, bạn có thể sử dụng lệnh:
sudo ufw disable
Lưu ý rằng việc tắt tường lửa sẽ khiến máy chủ của bạn không được bảo vệ, vì vậy chỉ nên thực hiện khi thực sự cần thiết và trong thời gian ngắn nhất có thể. Sau khi gỡ lỗi xong, hãy nhớ bật lại nó ngay lập tức.
Nếu bạn muốn xóa tất cả các quy tắc hiện có và bắt đầu lại từ đầu, lệnh reset sẽ rất hữu ích:
sudo ufw reset
Lệnh này sẽ vô hiệu hóa UFW và xóa toàn bộ quy tắc bạn đã tạo. Đây là một hành động mạnh, vì vậy hãy chắc chắn rằng bạn đã sao lưu cấu hình của mình nếu cần.
Quản lý quy tắc hiện có – sửa đổi, xóa, kiểm tra
Để quản lý hiệu quả, trước tiên bạn cần xem danh sách các quy tắc hiện có. Lệnh status có thể được dùng với tùy chọn numbered để hiển thị các quy tắc kèm theo số thứ tự, giúp việc xóa hoặc sửa đổi trở nên dễ dàng hơn.
sudo ufw status numbered
Kết quả sẽ trông giống như sau:
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
[ 4] 22/tcp (v6) ALLOW IN Anywhere (v6)
[ 5] 80/tcp (v6) ALLOW IN Anywhere (v6)
[ 6] 443/tcp (v6) ALLOW IN Anywhere (v6)
Giả sử bạn muốn xóa quy tắc cho phép HTTP (cổng 80) vì bây giờ trang web của bạn chỉ sử dụng HTTPS. Bạn có thể xóa nó bằng số thứ tự:
sudo ufw delete 2
UFW sẽ hỏi bạn xác nhận trước khi xóa quy tắc. Sau khi xóa, số thứ tự của các quy tắc còn lại sẽ được cập nhật. Ngoài ra, bạn cũng có thể xóa quy tắc bằng cách chỉ định chính quy tắc đó:
sudo ufw delete allow http
Phương pháp này hữu ích khi bạn không muốn phải kiểm tra số thứ tự. Hiện tại, UFW không hỗ trợ lệnh sửa đổi trực tiếp một quy tắc. Cách tiếp cận thông thường là xóa quy tắc cũ và thêm một quy tắc mới với các thông số đã được cập nhật. Việc quản lý quy tắc một cách thường xuyên giúp giữ cho cấu hình tường lửa của bạn luôn gọn gàng và an toàn.
Quản lý các kết nối cho phép hoặc chặn bằng UFW
Một trong những chức năng chính của tường lửa là kiểm soát chính xác các dịch vụ nào được phép giao tiếp với thế giới bên ngoài. Với UFW, việc này trở nên cực kỳ trực quan. Bạn có thể dễ dàng mở cổng cho các dịch vụ phổ biến và đồng thời chặn các truy cập không mong muốn để bảo vệ máy chủ khỏi các mối đe dọa tiềm tàng.

Cho phép kết nối dịch vụ phổ biến (SSH, HTTP, HTTPS)
UFW nhận biết được một danh sách các dịch vụ phổ biến, giúp bạn không cần phải nhớ số cổng mặc định của chúng. Thay vì phải gõ sudo ufw allow 22/tcp, bạn chỉ cần sử dụng tên của dịch vụ. Điều này không chỉ tiện lợi mà còn giúp các quy tắc của bạn dễ đọc hơn.
Dưới đây là cách cho phép các dịch vụ web và truy cập từ xa cơ bản:
- Cho phép SSH (Secure Shell, cổng 22): Cần thiết để quản trị máy chủ từ xa.
sudo ufw allow ssh (Xác thực là gì)
- Cho phép HTTP (Hypertext Transfer Protocol, cổng 80): Dành cho các trang web không mã hóa.
sudo ufw allow http
- Cho phép HTTPS (HTTP Secure, cổng 443): Dành cho các trang web được mã hóa SSL/TLS, đây là tiêu chuẩn hiện nay.
sudo ufw allow https (SSL là gì, TLS là gì)
Bạn có thể xem danh sách tất cả các dịch vụ mà UFW hỗ trợ bằng cách xem nội dung tệp /etc/services. Việc sử dụng tên dịch vụ thay vì số cổng được khuyến khích vì nó làm cho cấu hình tường lửa của bạn trở nên minh bạch và dễ quản lý hơn trong dài hạn.
Chặn kết nối không mong muốn và hạn chế rủi ro tấn công
Bên cạnh việc cho phép các kết nối hợp lệ, việc chủ động chặn các truy cập đáng ngờ cũng quan trọng không kém. Nếu bạn phát hiện một địa chỉ IP đang cố gắng tấn công hoặc quét cổng máy chủ của mình qua file log, bạn có thể chặn nó ngay lập tức.
Để chặn một địa chỉ IP cụ thể:
sudo ufw deny from 203.0.113.100
Một trong những mối đe dọa phổ biến nhất đối với máy chủ là tấn công brute-force vào dịch vụ SSH. Kẻ tấn công sẽ thử hàng nghìn mật khẩu khác nhau để cố gắng đăng nhập. UFW cung cấp một quy tắc limit rất hiệu quả để ngăn chặn điều này.
sudo ufw limit ssh
Quy tắc này hoạt động bằng cách theo dõi các kết nối đến cổng SSH. Nếu một địa chỉ IP thực hiện quá nhiều lần thử kết nối trong một khoảng thời gian ngắn (ví dụ: 6 lần trong 30 giây), UFW sẽ tự động chặn địa chỉ IP đó trong một thời gian. Điều này làm cho các cuộc tấn công brute-force tự động trở nên vô hiệu quả mà không làm ảnh hưởng đến các lần đăng nhập hợp lệ của bạn. Việc kết hợp các quy tắc cho phép chặt chẽ và các quy tắc chặn chủ động sẽ tạo ra một lớp phòng thủ vững chắc cho máy chủ Ubuntu của bạn.
Kiểm tra trạng thái và bảo trì tường lửa hiệu quả
Thiết lập tường lửa không phải là một công việc làm một lần rồi quên. Để đảm bảo hệ thống luôn được bảo vệ, bạn cần thường xuyên kiểm tra trạng thái và thực hiện bảo trì định kỳ. UFW cung cấp các công cụ để bạn giám sát hoạt động của tường lửa và đảm bảo nó đang hoạt động đúng như mong đợi.
Để có cái nhìn chi tiết hơn về trạng thái của tường lửa, bạn có thể sử dụng tùy chọn verbose:
sudo ufw status verbose
Lệnh này sẽ hiển thị thông tin chi tiết hơn so với lệnh status thông thường, bao gồm các quy tắc mặc định, trạng thái ghi nhật ký (logging) và giao diện mạng mà các quy tắc đang được áp dụng. Việc kiểm tra định kỳ bằng lệnh này giúp bạn nhanh chóng xác nhận rằng cấu hình của mình vẫn chính xác.
Một công cụ cực kỳ mạnh mẽ khác để giám sát là ghi nhật ký (logging). Bạn có thể bật tính năng này bằng lệnh:
sudo ufw logging on
Sau khi được kích hoạt, UFW sẽ ghi lại thông tin về các gói tin bị chặn hoặc cho phép vào tệp /var/log/ufw.log. Phân tích tệp log này có thể giúp bạn phát hiện các hoạt động đáng ngờ, chẳng hạn như một địa chỉ IP liên tục cố gắng truy cập vào các cổng đã đóng. Dựa vào thông tin này, bạn có thể tạo ra các quy tắc chặn mới để tăng cường an ninh. Tuy nhiên, hãy lưu ý rằng việc bật logging ở mức độ cao có thể tạo ra các tệp log rất lớn, vì vậy bạn nên chọn mức độ ghi nhật ký phù hợp (low, medium, high).
Các bước bảo trì định kỳ nên bao gồm:
- Xem lại các quy tắc hiện có: Liệu có quy tắc nào không còn cần thiết không? Ví dụ, nếu bạn đã gỡ bỏ một dịch vụ, hãy xóa luôn quy tắc tường lửa tương ứng.
- Kiểm tra nhật ký (logs): Tìm kiếm các mẫu truy cập bất thường hoặc các nỗ lực tấn công lặp đi lặp lại.
- Cập nhật phần mềm: Luôn đảm bảo UFW và hệ điều hành Ubuntu của bạn được cập nhật lên phiên bản mới nhất để vá các lỗ hổng bảo mật.
Bằng cách thực hiện các bước kiểm tra và bảo trì này, bạn có thể đảm bảo rằng tường lửa của mình luôn là một tuyến phòng thủ hiệu quả và cập nhật, bảo vệ máy chủ khỏi các mối đe dọa không ngừng phát triển.

Lưu ý khi sử dụng UFW để bảo mật máy chủ Ubuntu
UFW là một công cụ mạnh mẽ, nhưng giống như bất kỳ công cụ quản trị hệ thống nào, việc sử dụng nó đòi hỏi sự cẩn trọng. Một vài sai lầm nhỏ trong cấu hình có thể dẫn đến hậu quả lớn, chẳng hạn như mất quyền truy cập vào máy chủ hoặc vô tình tạo ra lỗ hổng bảo mật. Dưới đây là những lưu ý quan trọng bạn cần ghi nhớ khi làm việc với UFW.
Luôn sao lưu cấu hình trước khi thay đổi: Trước khi thực hiện bất kỳ thay đổi lớn nào đối với các quy tắc tường lửa, hãy sao lưu cấu hình hiện tại. Các tệp cấu hình của UFW thường nằm trong thư mục /etc/ufw. Một bản sao lưu đơn giản sẽ giúp bạn nhanh chóng khôi phục lại trạng thái cũ nếu có sự cố xảy ra.
Cẩn trọng khi mở cổng SSH tránh mất quyền truy cập: Đây là lưu ý quan trọng nhất. Luôn đảm bảo rằng bạn đã có một quy tắc cho phép kết nối SSH (sudo ufw allow ssh) trước khi kích hoạt UFW. Nếu có thể, hãy giới hạn quyền truy cập SSH chỉ từ các địa chỉ IP đáng tin cậy (ví dụ: IP văn phòng, IP nhà của bạn) thay vì mở cho toàn bộ Internet. Lệnh sẽ là: sudo ufw allow from [your_ip_address] to any port 22.

Không tắt UFW nếu chưa thiết lập quy tắc phù hợp: Chỉ nên vô hiệu hóa tường lửa trong một khoảng thời gian ngắn để gỡ lỗi. Chạy một máy chủ mà không có tường lửa giống như để ngỏ cửa nhà bạn. Nếu bạn cần thay đổi nhiều quy tắc, hãy chuẩn bị sẵn các lệnh và thực hiện chúng nhanh chóng, sau đó kiểm tra lại trạng thái ngay lập tức.
Kiểm tra kỹ quy tắc để tránh bị khóa ngoài hệ thống: Sai lầm phổ biến là tạo ra một quy tắc quá chặt chẽ, vô tình chặn luôn cả quyền truy cập của chính bạn. Ví dụ, nếu bạn gõ sai địa chỉ IP của mình trong một quy tắc allow, bạn sẽ bị khóa ngoài. Luôn kiểm tra lại các lệnh của bạn hai lần trước khi nhấn Enter. Nếu bạn có quyền truy cập vào bảng điều khiển ảo (console) của nhà cung cấp dịch vụ VPS/Cloud, đó sẽ là cứu cánh trong trường hợp bạn bị khóa khỏi SSH.
Các vấn đề phổ biến và cách khắc phục
Ngay cả với một công cụ đơn giản như UFW, đôi khi bạn vẫn có thể gặp phải các sự cố không mong muốn. Hiểu rõ các vấn đề phổ biến và cách khắc phục chúng sẽ giúp bạn tiết kiệm thời gian và giảm bớt căng thẳng khi quản lý máy chủ.
Không thể kết nối SSH sau khi bật UFW
Đây là vấn đề kinh điển nhất mà nhiều người dùng gặp phải. Bạn đang làm việc qua SSH, bạn bật UFW, và đột nhiên kết nối bị đóng băng và bạn không thể kết nối lại.
Nguyên nhân: Nguyên nhân hầu như luôn là do bạn đã kích hoạt UFW (sudo ufw enable) trước khi tạo quy tắc cho phép lưu lượng truy cập qua cổng SSH (cổng 22). Khi UFW được kích hoạt với quy tắc mặc định là deny incoming, nó sẽ ngay lập tức chặn tất cả các kết nối đến, bao gồm cả phiên SSH hiện tại của bạn.
Cách khắc phục:
1. Sử dụng Bảng điều khiển (Console Access): Hầu hết các nhà cung cấp VPS và Cloud (như DigitalOcean, Vultr, AWS) đều cung cấp một cách để truy cập máy chủ của bạn thông qua một bảng điều khiển web hoặc VNC. Đây là một kết nối trực tiếp, không đi qua mạng và do đó không bị ảnh hưởng bởi tường lửa.
2. Đăng nhập qua bảng điều khiển: Sử dụng thông tin đăng nhập của bạn để truy cập vào máy chủ.
3. Thêm quy tắc SSH: Sau khi đã vào được, hãy chạy lệnh để cho phép kết nối SSH:
sudo ufw allow ssh
4. Kiểm tra lại: Bây giờ, hãy thử kết nối lại bằng ứng dụng SSH thông thường của bạn. Mọi thứ sẽ hoạt động trở lại. Để phòng tránh, hãy luôn tạo thói quen chạy sudo ufw allow ssh trước khi chạy sudo ufw enable.

Các quy tắc UFW không hoạt động như mong đợi
Đôi khi bạn đã thêm một quy tắc, nhưng kết nối vẫn không được thiết lập, hoặc ngược lại, một kết nối mà bạn nghĩ đã bị chặn lại vẫn có thể đi qua.
Nguyên nhân và cách khắc phục:
- Thứ tự quy tắc: UFW xử lý các quy tắc theo thứ tự chúng xuất hiện trong tệp cấu hình. Một quy tắc cụ thể hơn nên được đặt trước một quy tắc chung chung hơn. Sử dụng
sudo ufw status numbered để xem thứ tự và đảm bảo không có quy tắc nào ở trên đang vô hiệu hóa quy tắc bạn mong đợi.
- Xung đột với các công cụ khác: Mặc dù hiếm, nhưng có thể có các công cụ quản lý tường lửa khác (như iptables được cấu hình thủ công hoặc các script bảo mật) đang chạy và gây xung đột với UFW. Hãy đảm bảo UFW là công cụ quản lý tường lửa chính trên hệ thống của bạn.
- Sai giao thức hoặc cổng: Kiểm tra kỹ xem bạn đã chỉ định đúng giao thức (TCP hay UDP) và đúng cổng cho dịch vụ của mình hay chưa. Một số dịch vụ yêu cầu cả hai giao thức.
- Kiểm tra Log: Bật logging (
sudo ufw logging on) và kiểm tra tệp /var/log/ufw.log. Log sẽ cho bạn biết chính xác gói tin nào đang bị chặn (BLOCK) hoặc cho phép (ALLOW), từ IP nào đến cổng nào, giúp bạn chẩn đoán chính xác vấn đề.
Bằng cách tiếp cận một cách có hệ thống, bạn có thể dễ dàng xác định và giải quyết hầu hết các vấn đề liên quan đến UFW.
Thực hành tốt nhất khi sử dụng UFW cho Ubuntu 20.04
Để tận dụng tối đa sức mạnh của UFW và duy trì một hệ thống bảo mật vững chắc, việc tuân thủ các thực hành tốt nhất là điều cần thiết. Những nguyên tắc này không chỉ giúp bạn tránh được các lỗi phổ biến mà còn đảm bảo rằng cấu hình tường lửa của bạn luôn rõ ràng, hiệu quả và dễ quản lý.
Luôn kiểm tra kỹ trạng thái sau mỗi thay đổi: Sau khi thêm, xóa hoặc thay đổi bất kỳ quy tắc nào, hãy ngay lập tức chạy lệnh sudo ufw status hoặc sudo ufw status numbered. Việc này giúp bạn xác nhận rằng thay đổi đã được áp dụng đúng như ý muốn và không gây ra tác dụng phụ không mong muốn. Đây là một thói quen đơn giản nhưng có thể cứu bạn khỏi nhiều giờ gỡ lỗi sau này.
Giữ quy tắc đơn giản, dễ quản lý: Nguyên tắc vàng của bảo mật là “Deny by default, allow by exception” (Mặc định từ chối, cho phép theo ngoại lệ). Hãy bắt đầu bằng cách chặn tất cả lưu lượng đến (sudo ufw default deny incoming) và chỉ mở những cổng thực sự cần thiết cho các dịch vụ đang chạy. Tránh tạo ra các quy tắc phức tạp hoặc chồng chéo không cần thiết. Một bộ quy tắc gọn gàng sẽ dễ kiểm tra và bảo trì hơn.

Sử dụng logging để theo dõi hoạt động tường lửa: Tính năng ghi nhật ký của UFW là một công cụ vô giá để giám sát an ninh. Bằng cách bật logging (sudo ufw logging on), bạn có thể xem lại lịch sử các kết nối bị chặn. Điều này giúp bạn phát hiện sớm các dấu hiệu của một cuộc tấn công, chẳng hạn như quét cổng hoặc các nỗ lực truy cập lặp đi lặp lại từ một địa chỉ IP cụ thể, từ đó có hành động ngăn chặn kịp thời.
Tránh đặt quy tắc quá rộng, nên giới hạn theo IP khi có thể: Thay vì mở một cổng cho tất cả mọi người (allow from any), hãy tự hỏi: “Ai thực sự cần truy cập vào dịch vụ này?”. Đối với các dịch vụ quản trị như SSH hoặc cơ sở dữ liệu, hãy luôn giới hạn quyền truy cập chỉ từ các địa chỉ IP tĩnh mà bạn tin tưởng. Ví dụ: sudo ufw allow from 203.0.113.100 to any port 22. Nguyên tắc đặc quyền tối thiểu này giúp thu hẹp đáng kể bề mặt tấn công của máy chủ.
Kết luận
Qua bài hướng dẫn chi tiết này, chúng ta đã cùng nhau khám phá UFW (Uncomplicated Firewall) – một công cụ mạnh mẽ nhưng lại vô cùng đơn giản để bảo vệ máy chủ Ubuntu 20.04. Tầm quan trọng của một tường lửa được cấu hình đúng cách là không thể bàn cãi; nó là tuyến phòng thủ đầu tiên và quan trọng nhất, giúp ngăn chặn vô số mối đe dọa từ không gian mạng. Lợi ích mà UFW mang lại là rất rõ ràng: nó loại bỏ sự phức tạp của iptables, cung cấp một giao diện dòng lệnh trực quan, và cho phép ngay cả những người mới bắt đầu cũng có thể thiết lập một lớp bảo vệ vững chắc cho hệ thống của mình chỉ trong vài phút.
Từ việc cài đặt, thiết lập các quy tắc cơ bản và nâng cao, đến việc quản lý, giám sát và khắc phục sự cố, bạn giờ đây đã có đủ kiến thức nền tảng để tự tin làm chủ UFW. Việc áp dụng những nguyên tắc cơ bản như chặn tất cả kết nối đến mặc định và chỉ cho phép các dịch vụ cần thiết là một bước đi cực kỳ quan trọng để tăng cường an ninh cho máy chủ.
Đừng chần chừ, hãy áp dụng ngay những kiến thức này vào máy chủ Ubuntu của bạn. Bảo mật không phải là một điểm đến, mà là một hành trình liên tục. Sau khi đã thành thạo UFW, bạn có thể tìm hiểu sâu hơn về các công cụ bảo mật nâng cao khác như Fail2ban để tự động chặn các IP tấn công, hoặc viết các scripts để tự động hóa việc quản lý quy tắc tường lửa. Chúc bạn thành công trên con đường xây dựng một hệ thống vững chắc và an toàn!