ReactJS: Cơ bản về UFW: Các quy tắc và lệnh tường lửa phổ biến


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Giới thiệu

UFW (Uncomplicated FireWall) là một công cụ cấu hình tường lửa chạy trên cùng iptables, được tích hợp theo mặc định trong các bản phân phối Ubuntu. Nó cung cấp một giao diện được sắp xếp hợp lý để định cấu hình các trường hợp sử dụng tường lửa phổ biến thông qua dòng lệnh.

Bài hướng dẫn kiểu cheat sheet này cung cấp tài liệu tham khảo nhanh về các trường hợp và lệnh sử dụng UFW phổ biến, bao gồm các ví dụ về cách cho phép và chặn các dịch vụ theo cổng, giao diện mạng và địa chỉ IP nguồn.

Cách sử dụng Hướng dẫn này:

  • Hướng dẫn này ở định dạng cheat sheet với các đoạn mã dòng lệnh độc lập.
  • Chuyển đến bất kỳ phần nào có liên quan đến nhiệm vụ bạn đang cố gắng hoàn thành.
  • Khi bạn nhìn thấy văn bản được đánh dấu trong các lệnh của hướng dẫn này, hãy nhớ rằng văn bản này phải tham chiếu đến các địa chỉ IP từ mạng của riêng bạn.

Hãy nhớ rằng bạn có thể kiểm tra bộ quy tắc UFW hiện tại của mình bằng sudo ufw status hoặc sudo ufw status verbose.

Xác minh trạng thái UFW

Để kiểm tra xem ufw đã được bật chưa, hãy chạy:

sudo ufw status
Output

Status: inactive

Output sẽ cho biết tường lửa của bạn có đang hoạt động hay không.

Bật UFW

Nếu bạn nhận được thông báo Status: inactive khi chạy ufw status, điều đó có nghĩa là tường lửa chưa được kích hoạt trên hệ thống. Bạn sẽ cần chạy một lệnh để kích hoạt nó.

Theo mặc định, khi được bật UFW sẽ chặn truy cập bên ngoài vào tất cả các cổng trên máy chủ. Trên thực tế, điều đó có nghĩa là nếu bạn được kết nối với máy chủ qua SSH và bật ufwtrước khi cho phép truy cập qua cổng SSH, bạn sẽ bị ngắt kết nối.

Để bật UFW trên hệ thống của bạn, hãy chạy:

sudo ufw enable

Bạn sẽ thấy đầu ra như thế này:

Output

Firewall is active and enabled on system startup

Để xem những gì hiện bị chặn hoặc được phép, bạn có thể sử dụng tham số verbose khi chạy ufw status, như sau:

sudo ufw status
Output

Status: active

Logging: on (low)

Default: deny (incoming), allow (outgoing), deny (routed)

New profiles: skip

Tắt UFW

Nếu vì lý do nào đó bạn cần tắt UFW, bạn có thể làm như vậy bằng lệnh sau:

sudo ufw disable

Lưu ý rằng lệnh này sẽ vô hiệu hóa hoàn toàn dịch vụ tường lửa trên hệ thống của bạn.

Chặn địa chỉ IP

Để chặn tất cả các kết nối mạng bắt nguồn từ một địa chỉ IP cụ thể, hãy chạy lệnh sau, thay thế địa chỉ IP được đánh dấu bằng địa chỉ IP mà bạn muốn chặn:

sudo ufw deny from 203.0.113.100
Output

Rule added

Trong ví dụ này, from 203.0.113.100 chỉ định địa chỉ IP nguồn là “203.0.113.100”.

Nếu bạn chạy sudo ufw status ngay bây giờ, bạn sẽ thấy địa chỉ IP được chỉ định được liệt kê là bị từ chối:

Output

Status: active

To            Action   From

--            ------   ----

Anywhere      DENY     203.0.113.100

Tất cả các kết nối, đi vào hoặc đi ra, đều bị chặn đối với địa chỉ IP được chỉ định.

Chặn mạng con

Nếu bạn cần chặn một mạng con đầy đủ, bạn có thể sử dụng địa chỉ mạng con làm tham số from trên lệnh ufw deny. Lệnh sau sẽ chặn tất cả các địa chỉ IP trong mạng con mẫu 203.0.113.0/24:

sudo ufw deny from 203.0.113.0/24
Output

Rule added

Chặn các kết nối đến với giao diện mạng

Để chặn các kết nối đến từ một địa chỉ IP cụ thể đến một giao diện mạng cụ thể, hãy chạy lệnh sau, thay thế địa chỉ IP được đánh dấu bằng địa chỉ IP bạn muốn chặn:

sudo ufw deny in on eth0 from 203.0.113.100
Output

Rule added

Tham số in cho biết ufw chỉ áp dụng quy tắc cho các kết nối đến và tham số on eth0 chỉ định rằng quy tắc chỉ áp dụng cho giao diện eth0. Điều này có thể hữu ích nếu bạn có một hệ thống có nhiều giao diện mạng (bao gồm cả giao diện ảo) và bạn cần chặn quyền truy cập từ bên ngoài vào một số giao diện này, nhưng không phải tất cả.

Cho phép địa chỉ IP

Để cho phép tất cả các kết nối mạng bắt nguồn từ một địa chỉ IP cụ thể, hãy chạy lệnh sau, thay thế địa chỉ IP được đánh dấu bằng địa chỉ IP mà bạn muốn cho phép truy cập:

sudo ufw allow from 203.0.113.101

Nếu bạn chạy sudo ufw status ngay bây giờ, bạn sẽ thấy đầu ra tương tự như thế này, hiển thị từ ALLOW bên cạnh địa chỉ IP bạn vừa thêm.

Output

Status: active

To         Action    From

--         ------    ----

...

Anywhere   ALLOW     203.0.113.101

Bạn cũng có thể cho phép các kết nối từ toàn bộ mạng con bằng cách cung cấp mặt nạ mạng con tương ứng cho một máy chủ, chẳng hạn như 203.0.113.0/24.

Cho phép kết nối đến với giao diện mạng

Để cho phép các kết nối đến từ một địa chỉ IP cụ thể đến một giao diện mạng cụ thể, hãy chạy lệnh sau, thay thế địa chỉ IP được đánh dấu bằng địa chỉ IP bạn muốn cho phép:

sudo ufw allow in on eth0 from 203.0.113.102 

Tham số in cho biết ufw chỉ áp dụng quy tắc cho các kết nối đến và tham số on eth0 chỉ định rằng quy tắc chỉ áp dụng cho giao diện eth0.

Nếu bạn chạy sudo ufw status ngay bây giờ, bạn sẽ thấy đầu ra tương tự như sau:

Output

Status: active

To                   Action     From

--                   ------     ----

...

Anywhere on eth0     ALLOW      203.0.113.102

Xóa quy tắc UFW

Để xóa quy tắc mà bạn đã thiết lập trước đó trong UFW, hãy sử dụng ufw delete đã được phép bới  quy tắc ( allow hoặc deny) và theo sau là đặc tả mục tiêu. Ví dụ sau sẽ xóa một quy tắc đã đặt trước đó để cho phép tất cả các kết nối từ địa chỉ IP của 203.0.113.101:

sudo ufw delete allow from 203.0.113.101
Output

Rule deleted

Một cách khác để chỉ định quy tắc bạn muốn xóa là cung cấp ID quy tắc. Thông tin này có thể được lấy bằng lệnh sau:

sudo ufw status numbered
Output

Status: active

To                         Action       From

--                         ------       ----

[ 1] Anywhere              DENY IN      203.0.113.100

[ 2] Anywhere on eth0      ALLOW IN     203.0.113.102

Từ output ở trên bạn có thể thấy rằng có hai quy tắc hoạt động. Quy tắc đầu tiên, với các giá trị được đánh dấu, sẽ từ chối tất cả các kết nối đến từ địa chỉ IP 203.0.113.100. Quy tắc thứ hai cho phép các kết nối trên giao diện eth0 đến từ địa chỉ IP 203.0.113.102.

Bởi vì theo mặc định, UFW đã chặn tất cả các truy cập bên ngoài trừ khi được cho phép một cách rõ ràng, quy tắc đầu tiên là dư thừa, vì vậy bạn có thể xóa nó. Để xóa một quy tắc theo ID của nó, hãy chạy:

sudo ufw delete 1

Bạn sẽ được nhắc xác nhận thao tác và đảm bảo rằng ID bạn đang cung cấp đề cập đến quy tắc chính xác mà bạn muốn xóa.

Output

Deleting:

 deny from 203.0.113.100

Proceed with operation (y|n)? y

Rule deleted

Nếu liệt kê lại các quy tắc với sudo ufw status, bạn sẽ thấy rằng quy tắc đã bị xóa.

Liệt kê các Hồ sơ Ứng dụng Có sẵn

Sau khi cài đặt, các ứng dụng dựa vào giao tiếp mạng thường sẽ thiết lập một cấu hình UFW mà bạn có thể sử dụng để cho phép kết nối từ các địa chỉ bên ngoài. Điều này thường giống như chạy ufw allow from, với lợi thế là cung cấp một phím tắt tóm tắt các số cổng cụ thể mà dịch vụ sử dụng và cung cấp danh pháp thân thiện với người dùng cho các dịch vụ được tham chiếu.

Để liệt kê những cấu hình nào hiện có sẵn, hãy chạy như sau:

sudo ufw app list

Nếu bạn đã cài đặt một dịch vụ chẳng hạn như máy chủ web hoặc phần mềm phụ thuộc vào mạng khác và cấu hình không khả dụng trong UFW, trước tiên hãy đảm bảo rằng dịch vụ đã được bật. Đối với các máy chủ từ xa, bạn thường có sẵn OpenSSH:

Output

Available applications:

  OpenSSH

Bật hồ sơ ứng dụng

Để kích hoạt cấu hình ứng dụng UFW, hãy chạy ufw allow theo sau là tên của cấu hình ứng dụng bạn muốn kích hoạt, bạn có thể lấy tên này bằng một lệnh sudo ufw app list. Trong ví dụ sau, chúng ta đang bật cấu hình OpenSSH, cấu hình này sẽ cho phép tất cả các kết nối SSH đến trên cổng SSH mặc định.

sudo ufw allow “OpenSSH”
Output

Rule added

Rule added (v6)

Hãy nhớ trích dẫn tên hồ sơ bao gồm nhiều từ, chẳng hạn như Nginx HTTPS.

Tắt hồ sơ ứng dụng

Để tắt cấu hình ứng dụng mà bạn đã thiết lập trước đó trong UFW, bạn cần xóa quy tắc tương ứng của nó. Ví dụ, hãy xem xét kết quả đầu ra sau đây từ sudo ufw status:

sudo ufw status
Output

Status: active

To                 Action   From

--                 ------   ----

OpenSSH            ALLOW    Anywhere

Nginx Full         ALLOW    Anywhere

OpenSSH (v6)       ALLOW    Anywhere (v6)

Nginx Full (v6)    ALLOW    Anywhere (v6)

Output này cho biết rằng hồ sơ ứng dụng Nginx Full hiện đang được bật, cho phép bất kỳ và tất cả các kết nối đến máy chủ web qua HTTP cũng như qua HTTPS. Nếu bạn muốn chỉ cho phép các yêu cầu HTTPS từ và đến máy chủ web của mình, trước tiên bạn phải bật quy tắc hạn chế nhất, trong trường hợp này sẽ là Nginx HTTPS, sau đó tắt quy tắc Nginx Full hiện đang hoạt động:

sudo ufw allow "Nginx HTTPS"
sudo ufw delete allow "Nginx Full"

Hãy nhớ rằng bạn có thể liệt kê tất cả các cấu hình ứng dụng có sẵn với sudo ufw app list.

Cho phép SSH

Khi làm việc với máy chủ từ xa, bạn sẽ muốn đảm bảo rằng cổng SSH mở cho các kết nối để bạn có thể đăng nhập vào máy chủ của mình từ xa.

Lệnh sau sẽ kích hoạt cấu hình ứng dụng OpenSSH UFW và cho phép tất cả các kết nối đến cổng SSH mặc định trên máy chủ:

sudo ufw allow OpenSSH
Output

Rule added

Rule added (v6)

Mặc dù ít thân thiện với người dùng hơn, một cú pháp thay thế là chỉ định số cổng chính xác của dịch vụ SSH, thường được đặt thành 22 theo mặc định:

sudo ufw allow 22
Output

Rule added

Rule added (v6)

Cho phép SSH Đến từ Địa chỉ IP hoặc Mạng con Cụ thể

Để cho phép các kết nối đến từ một địa chỉ IP hoặc mạng con cụ thể, bạn sẽ bao gồm một chỉ thị from để xác định nguồn của kết nối. Điều này sẽ yêu cầu bạn cũng chỉ định địa chỉ đích với một tham số to. Để khóa quy tắc này chỉ ở SSH, bạn sẽ giới hạn proto (protocol - giao thức) tcp, sau đó sử dụng tham số port và đặt nó thành 22, cổng mặc định của SSH.

Lệnh sau sẽ chỉ cho phép các kết nối SSH đến từ địa chỉ IP 203.0.113.103:

sudo ufw allow from 203.0.113.103 proto tcp to any port 22 

Bạn cũng có thể sử dụng địa chỉ mạng con làm tham số from để cho phép các kết nối SSH đến từ toàn bộ mạng:

sudo ufw allow from 203.0.113.0/24 proto tcp to any port 22

Cho phép Rsync Đến từ Địa chỉ IP hoặc Mạng con Cụ thể

Chương trình Rsync, chạy trên cổng 873, có thể được sử dụng để truyền tệp từ máy tính này sang máy tính khác.

Để cho phép các rsync kết nối đến từ một địa chỉ IP hoặc mạng con cụ thể, hãy sử dụng tham số from để chỉ định địa chỉ IP nguồn và tham số port để đặt cổng đích 873. Lệnh sau sẽ chỉ cho phép các kết nối Rsync đến từ địa chỉ IP 203.0.113.103:

sudo ufw allow from 203.0.113.103 to any port 873

Để cho phép toàn bộ mạng con 203.0.113.0/24 có thể truy cập rsync vào máy chủ của bạn, hãy chạy:

sudo ufw allow from 203.0.113.0/24 to any port 873
Output

Rule added

Cho phép Nginx HTTP / HTTPS

Sau khi cài đặt, máy chủ web Nginx thiết lập một số cấu hình UFW khác nhau trong máy chủ. Sau khi bạn đã cài đặt và bật Nginx làm dịch vụ, hãy chạy lệnh sau để xác định cấu hình nào khả dụng:

sudo ufw app list | grep Nginx 
Output

Nginx Full Nginx HTTP Nginx HTTPS

Để bật cả lưu lượng HTTP và HTTPS, hãy chọn Nginx Full. Nếu không, hãy chọn Nginx HTTP chỉ cho phép HTTP hoặc Nginx HTTPS chỉ cho phép HTTPS.

Lệnh sau sẽ cho phép cả lưu lượng HTTP và HTTPS trên máy chủ (cổng 80 và 443):

sudo ufw allow "Nginx Full"
Output

Rule added

Rule added (v6)

Cho phép Apache HTTP / HTTPS

Sau khi cài đặt, máy chủ web Apache thiết lập một số cấu hình UFW khác nhau trong máy chủ. Sau khi bạn đã cài đặt và kích hoạt Apache như một dịch vụ, hãy chạy lệnh sau để xác định cấu hình nào khả dụng:

sudo ufw app list | grep Apache
Output

Apache

Apache Full

Apache Secure

Để bật cả lưu lượng HTTP và HTTPS, hãy chọn Apache Full. Nếu không, hãy chọn Apache cho HTTP hoặc Apache Secure cho HTTPS.

Lệnh sau sẽ cho phép cả lưu lượng HTTP và HTTPS trên máy chủ (cổng 80 và 443):

sudo ufw allow "Nginx Full"
Output

Rule added

Rule added (v6)

Cho phép tất cả HTTP đến (cổng 80)

Các máy chủ web, chẳng hạn như Apache và Nginx, thường lắng nghe các yêu cầu HTTP trên cổng 80. Nếu chính sách mặc định của bạn cho lưu lượng đến được đặt thành giảm hoặc từ chối, bạn sẽ cần tạo quy tắc UFW để cho phép truy cập bên ngoài trên cổng 80. Bạn có thể sử dụng số cổng hoặc tên dịch vụ (http) làm tham số cho lệnh này.

Để cho phép tất cả các kết nối HTTP (cổng 80) đến, hãy chạy:

sudo ufw allow http
Output

Rule added

Rule added (v6)

Một cú pháp thay thế là chỉ định số cổng của dịch vụ HTTP:

sudo ufw allow 80 

Cho phép tất cả HTTPS đến (cổng 443)

HTTPS thường chạy trên cổng 443. Nếu chính sách mặc định của bạn cho lưu lượng đến được đặt thành giảm hoặc từ chối, bạn sẽ cần tạo quy tắc UFW để cho phép truy cập bên ngoài trên cổng 443. Bạn có thể sử dụng số cổng hoặc tên dịch vụ (https) làm tham số cho lệnh này.

Để cho phép tất cả các kết nối HTTPS (cổng 443) đến, hãy chạy:

sudo ufw allow https 

Một cú pháp thay thế là chỉ định số cổng của dịch vụ HTTPS:

sudo ufw allow 443

Cho phép tất cả HTTP và HTTPS đến

Nếu bạn muốn cho phép cả lưu lượng HTTP và HTTPS, bạn có thể tạo một quy tắc duy nhất cho phép cả hai cổng. Việc sử dụng này yêu cầu bạn cũng xác định giao thức với proto tham số, trong trường hợp này nên đặt thành tham số tcp.

Để cho phép tất cả các kết nối HTTP và HTTPS (cổng 80 và 443) đến, hãy chạy:

sudo ufw allow proto tcp from any to any port 80,443
Output

Rule added

Rule added (v6)

Cho phép kết nối MySQL từ Địa chỉ IP hoặc Mạng con cụ thể

MySQL lắng nghe các kết nối máy khách trên cổng 3306. Nếu máy chủ cơ sở dữ liệu MySQL của bạn đang được khách hàng sử dụng trên máy chủ từ xa, bạn sẽ cần tạo quy tắc UFW để cho phép truy cập đó.

Để cho phép các kết nối MySQL đến từ một địa chỉ IP hoặc mạng con cụ thể, hãy sử dụng tham số from để chỉ định địa chỉ IP nguồn và tham số port để đặt cổng đích 3306.

Lệnh sau sẽ cho phép địa chỉ IP 203.0.113.103 kết nối với cổng MySQL của máy chủ:

sudo ufw allow from 203.0.113.103 to any port 3306 

Để cho phép toàn bộ mạng con 203.0.113.0/24 có thể kết nối với máy chủ MySQL của bạn, hãy chạy:

sudo ufw allow from 203.0.113.0/24 to any port 3306 

Cho phép kết nối PostgreSQL từ Địa chỉ IP hoặc Mạng con cụ thể

PostgreSQL lắng nghe các kết nối máy khách trên cổng 5432. Nếu máy chủ cơ sở dữ liệu PostgreSQL của bạn đang được khách hàng sử dụng trên máy chủ từ xa, bạn cần đảm bảo cho phép lưu lượng truy cập đó.

Để cho phép các kết nối PostgreSQL đến từ một địa chỉ IP hoặc mạng con cụ thể, hãy chỉ định nguồn với tham số from và đặt cổng thành 5432:

sudo ufw allow from 203.0.113.103 to any port 5432 

Để cho phép toàn bộ mạng con 203.0.113.0/24 có thể kết nối với máy chủ PostgreSQL của bạn, hãy chạy:

sudo ufw allow from 203.0.113.0/24 to any port 5432
Output

Rule added

Chặn thư SMTP đi

Máy chủ thư, chẳng hạn như Sendmail và Postfix, thường sử dụng cổng 25 cho lưu lượng SMTP. Nếu máy chủ của bạn không được gửi thư đi, bạn có thể muốn chặn loại lưu lượng đó. Để chặn các kết nối SMTP đi, hãy chạy:

sudo ufw deny out 25
Output

Rule added

Rule added (v6)

Điều này cấu hình tường lửa của bạn để loại bỏ tất cả lưu lượng đi trên cổng 25. Nếu bạn cần từ chối các kết nối gửi đi trên một số cổng khác, bạn có thể lặp lại lệnh này và thay thế 25 bằng số cổng bạn muốn chặn.

Phần kết luận

UFW là một công cụ mạnh mẽ có thể cải thiện đáng kể tính bảo mật của các máy chủ của bạn khi được định cấu hình đúng cách. Hướng dẫn tham khảo này bao gồm một số quy tắc UFW phổ biến thường được sử dụng để định cấu hình tường lửa trên Ubuntu.

Hầu hết các lệnh trong hướng dẫn này có thể được điều chỉnh để phù hợp với các trường hợp sử dụng và tình huống khác nhau, bằng cách thay đổi các tham số như địa chỉ IP nguồn và / hoặc cổng đích. Để biết thêm thông tin chi tiết về từng tham số lệnh và các công cụ sửa đổi có sẵn, bạn có thể sử dụng tiện ích man để kiểm tra hướng dẫn sử dụng của UFW:

man ufw

Trang UFW chính thức trên tài liệu của Ubuntu là một tài nguyên khác mà bạn có thể sử dụng làm tài liệu tham khảo cho các trường hợp và ví dụ sử dụng nâng cao hơn.

» Tiếp: Thiết lập máy chủ ban đầu với Ubuntu
« Trước: Cách sử dụng Rsync để đồng bộ hóa các thư mục cục bộ và từ xa
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!