Cách thiết lập tường lửa với UFW trên Ubuntu 20.04

3 năm trước, Cài đặt VPS, Ubuntu, 7278 Lượt xem

Đăng ký cập nhập video từ netweb.vn

UFW, hoặc Tường lửa không phức tạp, là một giao diện quản lý tường lửa được đơn giản hóa để che giấu sự phức tạp của các công nghệ lọc gói cấp thấp hơn như iptables và nftables. Nếu bạn đang muốn bắt đầu bảo mật mạng của mình và không chắc chắn nên sử dụng công cụ nào, UFW có thể là lựa chọn phù hợp cho bạn.

Hướng dẫn này sẽ chỉ cho bạn cách thiết lập tường lửa với UFW trên Ubuntu 20.04.

Kiểm tra hệ điều hành đang dùng là centos hay ubuntu

cat /etc/os-release

Kiểm tra trạng thái xem ufw đã được cài đặt hay chưa

sudo ufw status

UFW được cài đặt theo mặc định trên Ubuntu. Nếu nó đã bị gỡ cài đặt vì lý do nào đó, bạn có thể cài đặt nó với 

sudo apt install ufw

Bước 1 – Sử dụng IPv6 với UFW (Tùy chọn)

Hướng dẫn này được viết với IPv4, nhưng sẽ hoạt động cho IPv6 miễn là bạn kích hoạt nó. Nếu máy chủ Ubuntu của bạn đã bật IPv6, hãy đảm bảo rằng UFW được định cấu hình để hỗ trợ IPv6 để nó sẽ quản lý các quy tắc tường lửa cho IPv6 ngoài IPv4. Để thực hiện việc này, hãy mở cấu hình UFW bằng nano hoặc trình chỉnh sửa yêu thích của bạn.

sudo nano /etc/default/ufw

Sau đó, hãy chắc chắn rằng giá trị của IPV6 là yes. Nó sẽ giống như thế này:

IPV6=yes

Lưu và đóng tập tin. Bây giờ, khi UFW được kích hoạt, nó sẽ được cấu hình để viết cả quy tắc tường lửa IPv4 và IPv6. Tuy nhiên, trước khi bật UFW, chúng tôi sẽ muốn đảm bảo rằng tường lửa của bạn được định cấu hình để cho phép bạn kết nối qua SSH. Hãy bắt đầu với việc thiết lập các chính sách mặc định.

Bước 2 – Thiết lập chính sách mặc định

Nếu bạn chỉ mới bắt đầu với tường lửa của mình, các quy tắc đầu tiên cần xác định là các chính sách mặc định của bạn. 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 rõ ràng với bất kỳ quy tắc nào khác. Theo mặc định, UFW được đặt để từ chối tất cả các kết nối đến và cho phép tất cả các kết nối đi. Điều này có nghĩa là bất kỳ ai cố gắng truy cập vào máy chủ của bạn sẽ không thể kết nối, trong khi bất kỳ ứng dụng nào trong máy chủ sẽ có thể tiếp cận với thế giới bên ngoài.

Hãy đặt các quy tắc UFW của bạn trở lại mặc định để chúng tôi có thể chắc chắn rằng bạn sẽ có thể làm theo hướng dẫn này. Để đặt các giá trị mặc định được sử dụng bởi UFW, hãy sử dụng các lệnh sau:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Các lệnh này đặt các giá trị mặc định để từ chối kết nối đến và cho phép các kết nối gửi đi. Chỉ riêng các mặc định tường lửa này đã có thể đủ cho một máy tính cá nhân, nhưng các máy chủ thường cần phản hồi các yêu cầu đến từ người dùng bên ngoài. Chúng tôi sẽ xem xét điều đó tiếp theo.

Bước 3 – Cho phép kết nối SSH

Nếu chúng tôi bật tường lửa UFW ngay bây giờ, nó sẽ từ chối tất cả các kết nối đến. Điều này có nghĩa là chúng tôi sẽ cần tạo các quy tắc cho phép rõ ràng các kết nối đến hợp pháp – ví dụ: kết nối SSH hoặc HTTP – nếu chúng tôi muốn máy chủ của mình phản hồi các loại yêu cầu đó. Nếu bạn đang sử dụng máy chủ đám mây, có thể bạn sẽ muốn cho phép các kết nối SSH đến để bạn có thể kết nối và quản lý máy chủ của mình.

Để định cấu hình máy chủ của bạn để cho phép các kết nối SSH đến, bạn có thể sử dụng lệnh sau:

sudo ufw allow ssh

Điều này sẽ tạo ra các quy tắc tường lửa cho phép tất cả các kết nối trên cổng 22, đó là cổng mà SSH daemon lắng nghe theo mặc định. UFW biết cổng allow ssh có nghĩa là gì vì nó được liệt kê như một dịch vụ trong /etc/services tệp.

Tuy nhiên, chúng ta thực sự có thể viết quy tắc tương đương bằng cách chỉ định cổng thay vì tên dịch vụ. Ví dụ: lệnh này hoạt động giống như lệnh ở trên:

sudo ufw allow 22

Nếu bạn đã định cấu hình daemon SSH của mình để sử dụng một cổng khác, bạn sẽ phải chỉ định cổng thích hợp. Ví dụ: nếu máy chủ SSH của bạn đang nghe trên cổng 2222, bạn có thể sử dụng lệnh này để cho phép các kết nối trên cổng đó:

sudo ufw allow 2222

Bây giờ tường lửa của bạn đã được định cấu hình để cho phép các kết nối SSH đến, chúng tôi có thể kích hoạt nó.

Bước 4 – Bật UFW

Để bật UFW, hãy sử dụng lệnh sau:

sudo ufw enable

Bạn sẽ nhận được một cảnh báo cho biết lệnh có thể làm gián đoạn các kết nối SSH hiện có. Chúng tôi đã thiết lập quy tắc tường lửa cho phép kết nối SSH, vì vậy bạn có thể tiếp tục. Trả lời lời nhắc bằng yvà nhấn ENTER.

Tường lửa hiện đang hoạt động. Chạy sudo ufw status verbose lệnh để xem các quy tắc được thiết lập. Phần còn lại của hướng dẫn này trình bày cách sử dụng UFW chi tiết hơn, chẳng hạn như cho phép hoặc từ chối các loại kết nối khác nhau.

sudo ufw status verbose

Chạy xong sẽ hiển thị như sau

root@103:~# sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)

Bước 5 – Cho phép các kết nối khác

Tại thời điểm này, bạn nên cho phép tất cả các kết nối khác mà máy chủ của bạn cần phản hồi. Các kết nối mà bạn nên cho phép tùy thuộc vào nhu cầu cụ thể của bạn. May mắn thay, bạn đã biết cách viết các quy tắc cho phép kết nối dựa trên tên dịch vụ hoặc cổng; chúng tôi đã làm điều này cho SSH trên cảng 22. Bạn cũng có thể làm điều này cho:

  • HTTP trên cổng 80, là cổng mà máy chủ web không được mã hóa sử dụng, sử dụng sudo ufw allow http hoặc sudo ufw allow 80
  • HTTPS trên cổng 443, là cổng mà máy chủ web được mã hóa sử dụng, sử dụng sudo ufw allow https hoặc sudo ufw allow 443

Có một số cách khác để cho phép các kết nối khác, ngoài việc chỉ định một cổng hoặc dịch vụ đã biết.

Thêm 1 Dãy Port cho phép kết nối

Bạn có thể chỉ định phạm vi cổng với UFW. Một số ứng dụng sử dụng nhiều cổng, thay vì một cổng duy nhất.

Ví dụ: để cho phép các kết nối X11, sử dụng các cổng 6000– 6007, hãy sử dụng các lệnh sau:

sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp

Khi chỉ định phạm vi cổng với UFW, bạn phải chỉ định giao thức ( tcphoặc udp) mà các quy tắc sẽ áp dụng. Chúng tôi chưa đề cập đến vấn đề này trước đây vì việc không chỉ định giao thức sẽ tự động cho phép cả hai giao thức, điều này là OK trong hầu hết các trường hợp.

Thêm 1 Địa chỉ IP truy cập vào vps

Khi làm việc với UFW, bạn cũng có thể chỉ định địa chỉ IP. Ví dụ: nếu bạn muốn cho phép các kết nối từ một địa chỉ IP cụ thể, chẳng hạn như địa chỉ IP cơ quan hoặc nhà riêng 203.0.113.4, bạn cần chỉ định from, sau đó là địa chỉ IP:

sudo ufw allow from 203.0.113.4

Bạn cũng có thể chỉ định một cổng cụ thể mà địa chỉ IP được phép kết nối bằng cách thêm vào to any port sau đó là số cổng. Ví dụ: Nếu bạn muốn cho phép 203.0.113.4 kết nối với cổng 22(SSH), hãy sử dụng lệnh này:

sudo ufw allow from 203.0.113.4 to any port 22

Bước 6 – Từ chối kết nối

Nếu bạn chưa thay đổi chính sách mặc định cho các kết nối đến, UFW được định cấu hình để từ chối tất cả các kết nối đến. Nói chung, điều này đơn giản hóa quá trình tạo chính sách tường lửa an toàn bằng cách yêu cầu bạn tạo các quy tắc cho phép rõ ràng các cổng và địa chỉ IP cụ thể thông qua.

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 mạng con, có lẽ vì bạn biết rằng máy chủ của mình đang bị tấn công từ đó. Ngoài ra, nếu bạn muốn thay đổi chính sách đến mặc định của mình để cho phép (điều này không được khuyến nghị), bạn sẽ cần tạo quy tắc từ chối cho bất kỳ dịch vụ hoặc địa chỉ IP nào mà bạn không muốn cho phép kết nối.

Để viết phủ nhận quy tắc, bạn có thể sử dụng các lệnh mô tả ở trên, thay thế cho phép với từ chối .

Ví dụ: để từ chối các kết nối HTTP, bạn có thể sử dụng lệnh này:

sudo ufw deny http

Hoặc nếu bạn muốn từ chối tất cả các kết nối từ 203.0.113.4bạn có thể sử dụng lệnh này:

sudo ufw deny from 203.0.113.4

Bây giờ chúng ta hãy xem cách xóa các quy tắc.

Bước 7 – Xóa các cổng kết nối

Biết cách xóa các quy tắc tường lửa cũng quan trọng như biết cách tạo chúng. Có hai cách khác nhau để chỉ định quy tắc nào cần xóa: theo số quy tắc hoặc theo quy tắc thực tế (tương tự như cách quy tắc được chỉ định khi chúng được tạo). Chúng tôi sẽ bắt đầu với phương pháp xóa theo số quy tắc vì nó dễ dàng hơn.

Theo số quy tắc cổng kết nối

Nếu bạn đang sử dụng số quy tắc để xóa các quy tắc tường lửa, điều đầu tiên bạn muốn làm là lấy danh sách các quy tắc tường lửa của mình. Lệnh trạng thái UFW có một tùy chọn để hiển thị các số bên cạnh mỗi quy tắc, như được minh họa ở đây:

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 chúng tôi quyết định rằng chúng tôi muốn xóa quy tắc 2, quy tắc cho phép kết nối cổng 80 (HTTP), chúng tôi có thể chỉ định nó trong lệnh xóa UFW như sau:

sudo ufw delete 2

Điều này sẽ hiển thị lời nhắc xác nhận sau đó xóa quy tắc 2, cho phép kết nối HTTP. Lưu ý rằng nếu bạn đã bật IPv6, bạn cũng muốn xóa quy tắc IPv6 tương ứng.

Theo quy tắc thực tế

Thay thế cho số quy tắc là chỉ định quy tắc thực tế để xóa. Ví dụ: nếu bạn muốn xóa allow http quy tắc, bạn có thể viết nó như sau:

sudo ufw delete allow http

Bạn cũng có thể chỉ định quy tắc bằng allow 80, thay vì bằng tên dịch vụ:

sudo ufw delete allow 80

Phương pháp này sẽ xóa cả quy tắc IPv4 và IPv6, nếu chúng tồn tại.

Bước 8 – Kiểm tra trạng thái và quy tắc UFW

Bất cứ lúc nào, bạn có thể kiểm tra trạng thái của UFW bằng lệnh này:

sudo ufw status verbose

Nếu UFW bị tắt, theo mặc định, bạn sẽ thấy một cái gì đó như sau:

Output
Status: inactive

Nếu UFW đang hoạt động, đúng như vậy nếu bạn đã làm theo Bước 3, đầu ra sẽ thông báo rằng nó đang hoạt động và nó sẽ liệt kê bất kỳ quy tắc nào được thiết lập. Ví dụ: nếu tường lửa được đặt để cho phép các 22 kết nối SSH (cổng ) từ bất kỳ đâu, đầu ra có thể trông giống như sau:

Output
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere

Sử dụng status lệnh nếu bạn muốn kiểm tra xem UFW đã cấu hình tường lửa như thế nào.

Bước 9 – Tắt hoặc Đặt lại UFW (tùy chọn)

Nếu bạn quyết định không muốn sử dụng UFW, bạn có thể tắt nó bằng lệnh sau:

sudo ufw disable

Mọi quy tắc bạn đã tạo với UFW sẽ không còn hoạt động. Bạn luôn có thể chạy sudo ufw enablenếu bạn cần kích hoạt nó sau này.

Nếu bạn đã định cấu hình các quy tắc UFW nhưng bạn quyết định muốn bắt đầu lại, bạn có thể sử dụng lệnh đặt lại:

sudo ufw reset

Điều này sẽ vô hiệu hóa UFW và xóa bất kỳ quy tắc nào đã được xác định trước đó. Hãy nhớ rằng các chính sách mặc định sẽ không thay đổi đối với cài đặt ban đầu của chúng, nếu bạn đã sửa đổi chúng bất kỳ lúc nào. Điều này sẽ giúp bạn có một khởi đầu mới với UFW

Phần kết luận

Tường lửa của bạn hiện đã được định cấu hình để cho phép (ít nhất) kết nối SSH. Đảm bảo cho phép bất kỳ kết nối đến nào khác mà máy chủ của bạn cần, đồng thời hạn chế mọi kết nối không cần thiết để máy chủ của bạn hoạt động hiệu quả và an toàn.

Bài viết mới cập nhập

  • Hướng dẫn Plugin floating contact

    Hướng dẫn Plugin floating contact

    10 tháng trước, 336 Lượt xem

    Netweb xin hướng dẫn cách quản lý Plugin floating contact các bạn nhớ làm theo kỹ tường bước để plugin hoạt động Tính năng: Hiển…

  • Backup Yandex Mail

    Backup Yandex Mail

    12 tháng trước, 225 Lượt xem

    Khác với dịch vụ email theo tên của microsoft và google với chi phí đắt đỏ tầm 1tr/năm/1user, vì thế nên netweb khuyên dùng dịch…

Bình luận trên facebook netweb.vn

Đam mê thiết kế web, kinh nghiệm 9 năm trong nghề thiết kế website, đang thiết kế web dạo tại netweb.vn, Callme: 08.9898.2526 (Mr Hải)