UFW (Uncomplicated Firewall) là một giao diện quản lý tường lửa đơn giản, phù hợp với những người mới, giúp nhanh chóng triển khai các quy tắc bảo vệ mạng an toàn nhất. Bài viết này sẽ hướng dẫn cách thiết lập tường lửa bằng UFW trên Ubuntu 20.04.
Yêu cầu để thiết lập tường lửa bằng UFW trên Ubuntu 20.04
Trước tiên, để bắt đầu hướng dẫn này thì bạn cần có một user non-root với quyền sudo. UFW là một công cụ được cài đặt sẵn trên Ubuntu. Nếu chưa có sẵn UFW trên máy thì bạn có thể cài đặt bằng lệnh sudo apt install ufw
.
Dưới đây là 9 bước chi tiết để cài đặt và cấu hình UFW trên Ubuntu 20.04.
Bước 1 – Sử dụng IPv6 với UFW (Không bắt buộc)
Hướng dẫn dưới đây áp dụng chủ yếu cho mạng IPv4, tuy nhiên nếu đang sử dụng mạng IPv6 thì bạn cần đảm bảo cấu hình UFW để hỗ trợ các quy tắc tường lửa cho IPv6.
Trước tiên, mở file cấu hình UFW:
sudo nano /etc/default/ufw
Đảm bảo rằng giá trị IPV6
được đặt thành yes
:
IPV6=yes
Sau đó lưu rồi đóng file lại. Bây giờ bạn có thể thiết lập quy tắc cho cả IPv4 lẫn IPv6. Tuy nhiên, trước hết cần phải đảm bảo tường lửa cho phép kết nối thông qua SSH.
Bước 2 – Thiết lập các chính sách mặc định
Nếu đây là lần đầu tiên sử dụng tường lửa thì bạn cần ưu tiên định nghĩa các chính sách mặc định trước. Các quy tắc này kiểm soát cách xử lý lưu lượng truy cập không khớp với bất kỳ quy tắc nào khác. Theo mặc định thì UFW sẽ từ chối mọi kết nối đến và cho phép tất cả kết nối đi. Do đó sẽ không ai có thể kết nối được đến server, nhưng mọi ứng dụng trong server đều có thể kết nối ra thế giới bên ngoài.
Trước tiên hãy đặt các quy tắc của UFW về mặc định để làm theo được các bước trong hướng dẫn này:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Các thiết lập mặc định của tường lửa vẫn phù hợp với các máy tính cá nhân, tuy nhiên với server sẽ cần phải cấu hình thêm để có thể phản hồi lại request từ những người dùng bên ngoài.
Bước 3 – Cho phép kết nối SSH
Bây giờ bạn cần tạo các quy tắc cho phép những kết nối hợp lệ đến server, chẳng hạn như SSH hoặc HTTP. Đặc biệt nếu bạn đang sử dụng một server cloud thì tốt nhất nên cho phép phản hồi các kết nối SSH đến server để có thể quản lý server hiệu quả hơn.
Sử dụng lệnh dưới đây để cho phép kết nối SSH đến server:
sudo ufw allow ssh
Lệnh này sẽ tạo các quy tắc cho phép mọi kết nối trên cổng 22
– cổng mà daemon SSH nghe theo mặc định. UFW có thể nhận biết được cổng allow ssh
vì đã được định nghĩa sẵn trong file /etc/services
.
Ngoài ra bạn cũng có thể chỉ định cụ thể cổng thay vì tên dịch vụ. Lệnh sau đây cũng có kết quả tương tự như lệnh ở trên:
sudo ufw allow 22
Nếu đã cấu hình daemon SSH sử dụng một cổng khác thì bạn cần chỉ định cổng phù hợp. Ví dụ, nếu server SSH đang nghe trên cổng 2222
thì bạn có thể dùng lệnh sau để cho phép kết nối đến cổng này:
sudo ufw allow 2222
Bước 4 – Bật UFW
Sau khi cho phép nhận kết nối SSH đến server, bạn có thể bật UFW bằng lệnh sau:
sudo ufw enable
Sau đó bạn sẽ được thông báo rằng lệnh này có thể làm gián đoạn các kết nối SSH đang có sẵn. Nhập y
rồi nhấn ENTER
để tiếp tục.
Như vậy là bạn đã kích hoạt tường lửa thành công. Bây giờ hãy thử chạy lệnh sudo ufw status verbose
để xem các quy tắc được thiết lập. Ở phần sau của bài viết, Vietnix sẽ đi vào chi tiết cách sử dụng UFW và xử lý các kết nối.
UFW là một giải pháp tuyệt vời để đảm bảo tính riêng tư, bảo mật và ổn định của hệ thống của bạn. Tuy nhiên, để đạt được hiệu suất tối đa và sự ổn định của máy chủ, tốc độ cũng là một yếu tố quan trọng cần được chú trọng. VPS tốc độ cao của Vietnix là giải pháp tối ưu để đáp ứng những yêu cầu này. Hiện tại, Vietnix cung cấp nhiều gói đa dạng cấu hình và mức giá để đáp ứng nhu cầu của khách hàng như: VPS NVMe, VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp và VPS GPU.
Bên cạnh đó, Vietnix cũng cung cấp dịch vụ tư vấn khách hàng nhanh chóng và chuyên nghiệp. Đội ngũ nhân viên hỗ trợ túc trợ 247 sẽ giúp bạn chọn gói VPS tốc độ cao phù hợp nhất với nhu cầu. Hãy liên hệ với Vietnix ngay hôm nay nếu cần thêm thông tin chi tiết về các gói dịch vụ.
Bước 5 – Cho phép các kết nối khác đến server
Bây giờ bạn có thể bắt đầu cấu hình server cho phép các kết nối nó cần phải phản hồi. Những kết nối này sẽ tùy thuộc vào nhu cầu của từng server. Trong đó có thể bao gồm:
- HTTP ở cổng 80, chủ yếu được dùng bởi các web server không được mã hóa. Chạy lệnh
sudo ufw allow http
hoặcsudo ufw allow 80
để cho phép kết nối. - HTTPS ở cổng
443
, được sử dụng bởi các web server được mã hóa. Bạn có thể cho phép kết nối bằng lệnhsudo ufw allow https
hoặcsudo ufw allow 443
.
Bên cạnh việc chỉ định service hoặc port cụ thể, bạn cũng có thể làm theo các cách dưới đây để cho phép kết nối đến server.
Chỉ định phạm vi của port
Một số ứng dụng sử dụng nhiều cổng, do đó bạn có thể cần chỉ định phạm vi các cổng mà server chấp nhận kết nối.
Lấy ví dụ, để cho phép các kết nối X11 (cổng 6000
–6007
) thì bạn có thể chạy lệnh sau:
sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp
Lưu ý rằng khi chỉ định khoảng port trong UFW, bạn cần nêu rõ giao thức (tcp
hay udp
) cần áp dụng quy tắc. Nếu không nói rõ giao thức thì tường lửa sẽ mặc định cho phép cả hai.
Chỉ định địa chỉ IP
UFW cũng cho phép người dùng chỉ định địa chỉ IP để áp dụng quy tắc. Ví dụ nếu muốn cho phép các kết nối từ một địa chỉ IP cụ thể thì có thể dùng from
như dưới đây:
sudo ufw allow from 203.0.113.4
Ngoài ra bạn cũng có thể chỉ định một cổng mà địa chỉ IP được phép kết nối đến. Ví dụ nếu muốn cho phép 203.0.113.4
kết nối qua cổng 22
(SSH) thì có thể dùng lệnh sau:
sudo ufw allow from 203.0.113.4 to any port 22
Subnet
Nếu muốn cho phép một subnet (mạng con) của địa chỉ IP thì bạn có thể dùng ký hiệu CIDR để chỉ định netmask (mặt nạ mạng). Ví dụ nếu muốn cho phép các địa chỉ IP trong khoảng 203.0.113.1
đến 203.0.113.254
:
sudo ufw allow from 203.0.113.0/24
Tương tự, bạn cũng có thể cho phép một subnet kết nối qua cổng nhất định. Chẳng hạn như subnet 203.0.113.0/24
kết nối qua cổng 22
:
sudo ufw allow from 203.0.113.0/24 to any port 22
Các kết nối đến một giao diện mạng
Nếu muốn tạo một quy tắc tường lửa chỉ cho phép các kết nối đến một giao diện mạng cụ thể thì bạn có thể sử dụng allow in on
trong lệnh.
Trước tiên, hãy xem các giao diện mạng hiện có bằng lệnh dưới đây:
ip addr
Output Excerpt
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
. . .
Trong đó eth0
và eth1
chính là tên của các giao diện mạng. Bây giờ giả sử server có một giao diện mạng public eth0
thì bạn có thể cho phép lưu lượng truy cập HTTP (ở cổng 80
) đến giao diện này bằng lệnh sau:
sudo ufw allow in on eth0 to any port 80
Hoặc nếu muốn server database MySQL (cổng 3306
) nghe các kết nối trên giao diện mạng private eth1
thì có thể dùng lệnh:
sudo ufw allow in on eth1 to any port 3306
Bước 6 – Từ chối các kết nối
Theo chính sách mặc định thì UFW sẽ từ chối tất cả các kết nối đến. Nói chung, điều này giúp đơn giản hóa quá trình tạo chính sách tường lửa an toàn, bắt buộc người dùng phải chỉ định các cổng và địa chỉ IP cụ thể mà server cần phản hồi.
Tuy nhiên, đôi khi bạn sẽ muốn từ chối các kết nối cụ thể dựa trên địa chỉ IP nguồn hoặc subnet. Chẳng hạn như trong trường hợp nghi ngờ server đang bị tấn công bởi các lưu lượng đến từ subnet đó.
Để viết quy tắc từ chối các kết nối cụ thể, bạn có thể sử dụng các lệnh được mô tả ở các bước trên, trong đó thay allow
trong lệnh thành deny
.
Ví dụ để từ chối kết nối HTTP, bạn có thể sử dụng lệnh sau:
sudo ufw deny http
Hoặc từ chối mọi kết nối từ địa chỉ 203.0.113.4
:
sudo ufw deny from 203.0.113.4
Bước 7 – Xóa quy tắc
Việc nắm được cách xóa các quy tắc tường lửa cũng quan trọng không kém so với việc tạo ra những quy tắc này. Nhìn chung thì có hai cách khác nhau để xóa quy tắc: Theo số thứ tự hoặc theo ý nghĩa của quy tắc.
Xóa theo số thứ tự của quy tắc
Trước tiên, hãy xem danh sách các tường lửa hiện có trên hệ thống bằng lệnh sau:
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 muốn xóa quy tắc số 2
(cho phép các kết nối đến cổng 80
– HTTP) thì có thể sử dụng lệnh sau:
sudo ufw delete 2
Xóa theo quy tắc
Cách thứ hai là xóa theo ý nghĩa của quy tắc. Giả sử bạn cần xóa quy tắc cho phép kết nối HTTP, tức là allow
http
thì có thể dùng lệnh sau:
sudo ufw delete allow http
Hoặc:
sudo ufw delete allow 80
Lưu ý rằng cách này sẽ xóa quy tắc áp dụng cho kết nối IPv4 lẫn IPv6.
Bước 8 – Kiểm tra trạng thái UFW và các quy tắc
Bạn có thể kiểm tra trạng thái của UFW bằng lệnh sau:
sudo ufw status verbose
Nếu UFW chưa được bật thì output sẽ như dưới đây:
Output
Status: inactive
Ngược lại nếu UFW đã được bật thì bạn sẽ xem được danh sách các quy tắc đã được thiết lập:
Output
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
Bước 9 – Tắt hoặc reset UFW (Không bắt buộc)
Cuối cùng, nếu không muốn sử dụng UFW nữa thì bạn có thể tắt bằng lệnh:
sudo ufw disable
Mọi quy tắc được tạo sẽ không còn hiệu lực nữa. Nếu muốn kích hoạt lại thì bạn có thể chạy lệnh sudo ufw enable
.
Hoặc nếu muốn khởi reset lại các quy tắc:
sudo ufw reset
Lệnh này sẽ tắt UFW và xóa mọi quy tắc đã được định nghĩa trước đó, tuy nhiên các chính sách mặc định sẽ không được khôi phục về thiết lập ban đầu.
Nếu bạn đang gặp vấn đề khi thực hiện các thao tác cấu hình tường lửa bằng UFW trên máy tính hoặc cảm thấy chúng quá phức tạp, đừng quá lo lắng. Bạn có thể sử dụng dịch vụ VPS của Vietnix để được hỗ trợ cài đặt nhanh chóng và dễ dàng hơn. Với hơn 11 năm kinh nghiệm trong lĩnh vực này, Vietnix đã được tin tưởng và sử dụng bởi hơn 50.000 khách hàng cá nhân và doanh nghiệp, bao gồm cả các thương hiệu lớn như GTV, UB Group, iVIVU, Vietnamworks, SEOSONA, SAGO Media,…
Với hơn 100.000 dịch vụ được kích hoạt và tỷ lệ khách hàng giới thiệu dịch vụ lên tới 97%, Vietnix tự hào là một trong những nhà cung cấp giải pháp lưu trữ số hàng đầu tại Việt Nam. Đặc biệt, Vietnix đã được trao giải thưởng Thương hiệu Việt Nam xuất sắc năm 2022, đó là niềm tự hào và động lực lớn để chúng tôi tiếp tục nỗ lực và phục vụ khách hàng tốt hơn. Hãy để Vietnix đồng hành cùng bạn trên con đường kinh doanh trực tuyến trên internet.
Mọi vấn đề thắc mắc cần tư vấn, quý khách vui lòng liên hệ:
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Hotline: 1800 1093.
- Email: sales@vietnix.com.vn.
Lời kết
Bài viết này đã hướng dẫn chi tiết cách cấu hình và thiết lập tường lửa bằng UFW trên Ubuntu 20.04. Bây giờ bạn có thể thêm các quy tắc để cho phép hay chặn các kết nối cụ thể trên server để đảm bảo an toàn cho hệ thống hiệu quả nhất. Đừng quên chia sẻ nếu cảm thấy những thông tin này hữu ích nhé.