UFW hay Uncomplicated Firewall là một ứng dụng để quản lý tường lửa dựa trên iptables trên Ubuntu. UFW là công cụ cấu hình tường lửa mặc định cho Ubuntu Linux và cung cấp một cách thân thiện với người dùng để cấu hình tường lửa. Lệnh UFW giống như tiếng Anh, vì vậy các lệnh rất dễ nhớ. Tường lửa UFW hỗ trợ IPv4 và IPv6.
UFW cũng cung cấp một ứng dụng GUI. Nếu bạn sử dụng máy tính để bàn GNOME, bạn có thể cài đặt gufw; nếu bạn sử dụng máy tính để bàn KDE, bạn có thể cài đặt kcm-ufw.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2282%22%3E%3C/svg%3E
Nếu không trả về đường dẫn đến lệnh như hiển thị ở trên, hãy cài đặt UFW bằng lệnh apt sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22302%22%3E%3C/svg%3E
Sau đó chạy lệnh sau để bật UFW:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22117%22%3E%3C/svg%3E
Kết quả:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22179%22%3E%3C/svg%3E
Kết quả:
Nếu bạn muốn vô hiệu hóa hoặc tắt UFW, bạn có thể sử dụng:
Kết quả:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22137%22%3E%3C/svg%3E
UFW sẽ từ chối mọi kết nối đến sau khi bạn bật nó lên. Vì vậy, điều đầu tiên bạn nên làm là cho phép truy cập SSH cho máy chủ nếu bạn muốn quản lý hệ thống từ xa. Lệnh "ufw allow sshport" cho phép truy cập bằng SSH, thay SSHPORT bằng cổng của dịch vụ SSH, cổng SSH mặc định là 22.
Kết quả:
Nếu bạn muốn cho phép các kết nối đến trên cổng 22 chỉ dành cho TCP, hãy thêm vào cuối lệnh "/tcp" như được hiển thị trong ví dụ sau.
Khi dịch vụ mà bạn muốn cho phép truy cập đang lắng nghe trên cổng mặc định của nó, thì bạn có thể sử dụng tên dịch vụ thay vì số cổng. Điều này giúp mở cổng dễ dàng hơn vì bạn có thể không biết cổng. UFW sẽ tra cứu số cổng chính xác trong /etc/services cho bạn.
Lệnh này sẽ mở cổng SSH mặc định:
Bây giờ hãy kiểm tra quy tắc bằng:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22264%22%3E%3C/svg%3E
Tùy chọn Deny with Port:
Kết quả:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22126%22%3E%3C/svg%3E
Ví dụ cho "từ chối" với tên dịch vụ. Trong ví dụ này, tôi sẽ chặn cổng http/80:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22303%22%3E%3C/svg%3E
Lưu ý:
Tất cả các cổng và tên dịch vụ của chúng được liệt kê trong tệp "/etc/services".
1. Cho phép một phạm vi cổng
Bạn có thể cho phép một phạm vi cổng trong UFW. Một số dịch vụ như FTP hoặc IRC sử dụng một phạm vi cổng để giao tiếp với các máy khách của mình.
Trong ví dụ này, chúng ta sẽ cho phép phạm vi cổng được ircd sử dụng trên máy chủ của tôi. Phạm vi là cổng 6660 đến 6670:
Lệnh sẽ cho phép kết nối đến các cổng 6660-6670 qua giao thức TCP và UDP.
2. Cho phép một Địa chỉ IP cụ thể
Và bạn có thể thêm một IP cụ thể để cho phép truy cập vào tất cả các dịch vụ bằng cách thêm tùy chọn "từ". Ví dụ, điều này hữu ích nếu bạn có IP tĩnh tại nhà hoặc tại văn phòng và muốn cho phép truy cập vào tất cả các dịch vụ trên máy chủ của mình từ đó. Lệnh bên dưới sẽ cho phép IP 192.168.1.106 truy cập vào tất cả các cổng trên máy chủ:
Kết quả:
3. Cho phép mạng con
Nếu bạn muốn cho phép tất cả các địa chỉ IP trên mạng con của mình, bạn có thể thêm mạng con IP (phạm vi địa chỉ IP) vào lệnh UFW như sau:
Kết quả:
4. Cho phép truy cập từ một địa chỉ IP cụ thể vào một cổng
Nếu bạn muốn chỉ cho phép truy cập vào một cổng từ một IP cụ thể, bạn có thể kết hợp các lệnh UFW mà chúng ta đã học ở trên.
Ví dụ: chỉ IP 192.168.1.106 mới có thể truy cập ssh cổng 22 TCP và các IP khác sẽ bị từ chối khỏi cổng đó, bạn có thể sử dụng lệnh sau lệnh:
Kết quả:
5. Cho phép tất cả lưu lượng truy cập đến một cổng cụ thể
Nếu bạn muốn cho phép tất cả lưu lượng truy cập trên cổng 80, bạn có thể sử dụng lệnh này:
Sau đây là một số ví dụ:
Xóa quy tắc cho phép SSH có tên dịch vụ:
Kết quả:
Lệnh đó sẽ xóa quy tắc "cho phép ssh". Hãy cẩn thận, đừng khóa mình khỏi máy chủ.
Xóa quy tắc "từ chối" trên cổng 80:
Kết quả:
Nếu bạn có một quy tắc phức tạp thì có một cách đơn giản để xác định và xóa quy tắc theo ID quy tắc của nó. Chạy lệnh sau để có danh sách tất cả các quy tắc cùng với ID của chúng:
Kết quả:
Bây giờ hãy xóa quy tắc SSH chỉ dành cho IPv6 bằng cách sử dụng số quy tắc:
Kết quả:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22296%22%3E%3C/svg%3E
Nếu bạn muốn tắt hoàn toàn UFW và xóa tất cả các quy tắc, bạn có thể sử dụng lệnh "đặt lại":
Kết quả:
UFW cũng cung cấp một ứng dụng GUI. Nếu bạn sử dụng máy tính để bàn GNOME, bạn có thể cài đặt gufw; nếu bạn sử dụng máy tính để bàn KDE, bạn có thể cài đặt kcm-ufw.
Điều kiện tiên quyết
- Phiên bản Ubuntu từ 16.04 đến 22.04. Các phiên bản Ubuntu mới hơn cũng có thể hoạt động.
- Quyền root
- Cài đặt UFW.
- Cú pháp lệnh UFW cơ bản.
- Lệnh UFW Allow và Deny.
- Các lệnh UFW nâng cao.
- Xóa quy tắc trong UFW.
- Vô hiệu hóa và đặt lại UFW.
Cài đặt UFW
Theo mặc định, UFW đã được cài đặt trên ubuntu 20.04. Bạn có thể kiểm tra điều này bằng lệnh:
Mã:
which ufw
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2282%22%3E%3C/svg%3E
Nếu không trả về đường dẫn đến lệnh như hiển thị ở trên, hãy cài đặt UFW bằng lệnh apt sau:
Mã:
sudo apt install ufw
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22302%22%3E%3C/svg%3E
Sau đó chạy lệnh sau để bật UFW:
Mã:
sudo ufw enable
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22117%22%3E%3C/svg%3E
Kết quả:
Mã:
Lệnh UFW cơ bản
Lệnh "ufw enable" sẽ bật UFW với các quy tắc mặc định. Bạn có thể xác minh rằng UFW đang chạy bằng cách phát hành lệnh này:
Mã:
sudo ufw status verbose
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22179%22%3E%3C/svg%3E
Kết quả:
Mã:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
Mã:
sudo ufw disable
Mã:
Firewall stopped and disabled on system startup
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22137%22%3E%3C/svg%3E
Lệnh UFW Allow and Deny
1. Lệnh UFW AllowUFW sẽ từ chối mọi kết nối đến sau khi bạn bật nó lên. Vì vậy, điều đầu tiên bạn nên làm là cho phép truy cập SSH cho máy chủ nếu bạn muốn quản lý hệ thống từ xa. Lệnh "ufw allow sshport" cho phép truy cập bằng SSH, thay SSHPORT bằng cổng của dịch vụ SSH, cổng SSH mặc định là 22.
Mã:
sudo ufw allow 22
Mã:
Rules updated
Rules updated (v6) #For IPv6
Mã:
sudo ufw allow 22/tcp
Lệnh này sẽ mở cổng SSH mặc định:
Mã:
sudo ufw allow ssh
Mã:
sudo ufw status
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22264%22%3E%3C/svg%3E
2. Lệnh UFW Deny
Lệnh "deny" hoạt động tương tự như lệnh "allow" và được sử dụng để đóng một cổng trong tường lửa:Tùy chọn Deny with Port:
Mã:
sudo ufw deny 80
Mã:
Rule updated
Rule updated (v6)
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22126%22%3E%3C/svg%3E
Ví dụ cho "từ chối" với tên dịch vụ. Trong ví dụ này, tôi sẽ chặn cổng http/80:
Mã:
sudo ufw deny http
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22303%22%3E%3C/svg%3E
Lưu ý:
Tất cả các cổng và tên dịch vụ của chúng được liệt kê trong tệp "/etc/services".
Các lệnh UFW nâng cao
Bây giờ chúng ta sẽ tìm hiểu sâu hơn về cú pháp lệnh UFW, tìm hiểu cách cho phép các phạm vi một phần (ví dụ: đối với các cổng thụ động FTP) và chỉ truy cập từ một IP hoặc mạng con.1. Cho phép một phạm vi cổng
Bạn có thể cho phép một phạm vi cổng trong UFW. Một số dịch vụ như FTP hoặc IRC sử dụng một phạm vi cổng để giao tiếp với các máy khách của mình.
Trong ví dụ này, chúng ta sẽ cho phép phạm vi cổng được ircd sử dụng trên máy chủ của tôi. Phạm vi là cổng 6660 đến 6670:
Mã:
sudo ufw allow 6660:6670/tcp
sudo ufw allow 6660:6670/udp
2. Cho phép một Địa chỉ IP cụ thể
Và bạn có thể thêm một IP cụ thể để cho phép truy cập vào tất cả các dịch vụ bằng cách thêm tùy chọn "từ". Ví dụ, điều này hữu ích nếu bạn có IP tĩnh tại nhà hoặc tại văn phòng và muốn cho phép truy cập vào tất cả các dịch vụ trên máy chủ của mình từ đó. Lệnh bên dưới sẽ cho phép IP 192.168.1.106 truy cập vào tất cả các cổng trên máy chủ:
Mã:
sudo ufw allow from 192.168.1.106
Mã:
Rule added
Nếu bạn muốn cho phép tất cả các địa chỉ IP trên mạng con của mình, bạn có thể thêm mạng con IP (phạm vi địa chỉ IP) vào lệnh UFW như sau:
Mã:
sudo ufw allow from 192.168.1.1/24
Mã:
WARN: Rule changed after normalization
Rule added
Nếu bạn muốn chỉ cho phép truy cập vào một cổng từ một IP cụ thể, bạn có thể kết hợp các lệnh UFW mà chúng ta đã học ở trên.
Ví dụ: chỉ IP 192.168.1.106 mới có thể truy cập ssh cổng 22 TCP và các IP khác sẽ bị từ chối khỏi cổng đó, bạn có thể sử dụng lệnh sau lệnh:
Mã:
sudo ufw allow from 192.168.1.106 proto tcp to any port 22
Mã:
Rule added
Nếu bạn muốn cho phép tất cả lưu lượng truy cập trên cổng 80, bạn có thể sử dụng lệnh này:
Mã:
sudo ufw allow to any port 80
Xóa quy tắc tường lửa UFW
Trong phần này, bạn sẽ tìm hiểu cách xóa quy tắc được lưu trong UFW. Bạn có thể sử dụng lệnh "delete" để xóa quy tắc ufw. Vui lòng nhập lệnh "ufw delete" theo sau là tùy chọn bạn muốn xóa, cho phép hoặc từ chối.Sau đây là một số ví dụ:
Xóa quy tắc cho phép SSH có tên dịch vụ:
Mã:
sudo ufw delete allow ssh
Mã:
Rule deleted
Rule deleted (v6)
Xóa quy tắc "từ chối" trên cổng 80:
Mã:
sudo ufw delete deny 80
Mã:
Rule deleted
Rule deleted (v6)
Mã:
sudo ufw status numbered
Mã:
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 22/tcp (v6) ALLOW IN Anywhere (v6)
Mã:
sudo ufw delete 2
Vô hiệu hóa và đặt lại UFW
Nếu bạn muốn tắt UFW mà không xóa các quy tắc của mình, bạn có thể sử dụng "vô hiệu hóa" lệnh:
Mã:
sudo ufw disable
Mã:
Firewall stopped and disabled on system startup
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22296%22%3E%3C/svg%3E
Nếu bạn muốn tắt hoàn toàn UFW và xóa tất cả các quy tắc, bạn có thể sử dụng lệnh "đặt lại":
Mã:
sudo ufw reset
Mã:
Resetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20150918_190351'
Backing up 'user.rules' to '/lib/ufw/user.rules.20150918_190351'
Backing up 'after.rules' to '/etc/ufw/after.rules.20150918_190351'
Backing up 'before.rules' to '/etc/ufw/before.rules.20150918_190351'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20150918_190351'
Backing up 'user6.rules' to '/lib/ufw/user6.rules.20150918_190351'