Kiến Thức Linux Thủ Thuật

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

Giới thiệu

UFW, hay Tường lửa không phức tạp, là một giao diện cho các iptables hướng đến việc đơn giản hóa quá trình cấu hình tường lửa. Mặc dù iptables là một công cụ vững chắc và linh hoạt, nhưng người mới bắt đầu có thể khó học cách sử dụng nó để cấu hình đúng tường lửa. Nếu bạn đang tìm cách bắt đầu bảo mật mạng của mình và bạn 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 18.04.

Điều kiện tiên quyết

Để làm theo hướng dẫn này, bạn sẽ cần:

Một máy chủ Ubuntu 18.04, một user với quyền sudo, bạn có thể thiết lập bằng cách làm theo các bước 1 – 3 trong Hướng dẫn cài đặt máy chủ ban đầu với hướng dẫn Ubuntu 18.04.

UFW được cài đặt theo mặc định trên Ubuntu. Nếu nó đã được gỡ cài đặt vì một số lý do, 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 cũ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 cấu hình để hỗ trợ IPv6, để nó có thể 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 đó, đảm bảo giá trị của IPV6 được thiết lập là “yes”. Nó sẽ giống như thế này:

/etc/default/ufw excerpt
IPV6=yes

Lưu và đóng tập tin. Bây giờ, khi UFW được bật, nó sẽ được cấu hình để ghi 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 rules mặc định.

Bước 2 – Thiết lập Rule mặc định

Nếu bạn chỉ bắt đầu với tường lửa của mình, các rule đầu tiên cần cấu hình là các rule mặc định. Các quy tắc này kiểm soát cách xử lý lưu lượng không khớp với bất kỳ quy tắc nào khác. Theo mặc định, UFW được đặt để chặn tất cả các kết nối vào và cho phép tất cả các kết nối ra. Điều này có nghĩa là bất kỳ ai đang cố gắng truy cập máy chủ của bạn cũng sẽ không được, trong khi bất kỳ ứng dụng nào bên trong máy chủ sẽ có thể  đi ra ngoài mạng public.

Hãy để Lừa đặ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 cùng với hướng dẫn này. Để đặt 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 mặc định để từ chối các kết nối đến và cho phép các kết nối đi. 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ải đáp ứng các yêu cầu đến từ người dùng bên ngoài.

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

Để đị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 này:

  • sudo ufw allow ssh

Điều này sẽ tạo 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, đây là cổng mà  SSH mở mặc định. UFW biết cổng nào cho phép ssh, bạn có thể kiểm tra trong file /etc/services.

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ư ở trên:

  • sudo ufw allow 22

Nếu bạn định cấu hình  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 mở trên cổng 2222, bạn có thể sử dụng lệnh này để cho phép kết nối trên cổng đó:

  • sudo ufw allow 2222

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

Bước 4 — Bật UFW

Để bật UFW, sử dụng lệnh này:

  • sudo ufw enable

Bạn sẽ nhận được cảnh báo cho biết lệnh có thể phá vỡ các kết nối SSH hiện có. Chúng ta đã thiết lập quy tắc tường lửa cho phép kết nối SSH ở phía trên, vì vậy sẽ không ảnh hưởng kết nối . nhấn ‘y’ và  ENTER.

Tường lửa hiện đang hoạt động. Chạy lệnh

sudo ufw status verbose

để xem các quy tắc được đặt. Phần còn lại của hướng dẫn này bao gồm cách sử dụng UFW chi tiết hơn, như cho phép hoặc từ chối các loại kết nối khác nhau.

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 phụ 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 hoặc cổng dịch vụ; chúng tôi đã làm điều này cho SSH trên cổng 22. Bạn cũng có thể tương tự cho:

  • HTTP trên cổng 80, đó là những gì máy chủ web không được mã hóa, dùng câu lệnh sudo ufw allow http hoặc sudo ufw allow 80
  • HTTPS trên cổng 443, đó là những gì máy chủ web được mã hóa, dùng câu lệnh sudo ufw allow https or sudo ufw allow 443

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

 

Bước 6 — Chặn kết nối

Nếu bạn đã thay đổi các rule mặc định cho các kết nối đến, UFW được 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 quy tắc cho phép các cổng và địa chỉ IP cụ thể thông qua.

Tuy nhiên, đôi khi bạn sẽ muốn chặn các kết nối cụ thể dựa từ 1 nguồn địa chỉ IP hoặc mạng con, có lẽ vì bạn biết rằng máy chủ của bạn đang bị tấn công từ nguồn đó. 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 (không được khuyến nghị), bạn cần tạo quy tắc  ngăn chặn 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 các rule deny, bạn có thể sử dụng các lệnh sau.

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 chặn tất cả các kết nối từ 203.0.113.4, bạn có thể sử dụng lệnh:

  • sudo ufw deny from 203.0.113.4

Bây giờ, hãy xem xét về cách xóa các rule.

Bước 7 — Xóa Rules

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 ra chúng. Có hai cách khác nhau để chỉ định quy tắc nào cần xóa: theo sốthứ tự 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 việc xóa theo phương pháp số thứ tự  vì nó dễ dàng hơn.

Theo Rule Number

Nếu bạn sử dụng Rule Number  để 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 một danh sách các quy tắc tường lửa của bạn. 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 như sau:

  • sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    15.15.15.0/24
[ 2] 80                         ALLOW IN    Anywhere

Nếu chúng ta muốn xóa quy tắc 2, quy tắc cho phép kết nối cổng 80 (HTTP), chúng ta có thể chỉ định 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.

Xóa theo Actual Rule

The alternative to rule numbers is to specify the actual rule to delete. For example, if you want to remove the allow http rule, you could write it like this:

Thay thế cho  rule numbers là chỉ định quy tắc thực tế cần xóa.

Ví dụ: nếu bạn muốn xóa quy tắc cho phép http, bạn có thể viết nó như thế này:

  • sudo ufw delete allow http

Bạn cũng có thể chỉ định rule 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 của UFW

Bạn có thể kiểm tra trạng thái của UFW bằng lệnh:

  • sudo ufw status verbose

Theo mặc định, nếu UFW bị tắt,  bạn sẽ thấy :

Output
Status: inactive

Nếu UFW đang hoạt động, điều đó sẽ xảy ra nếu bạn làm theo Bước 3, đầu ra sẽ nói rằng nó hoạt động và nó sẽ liệt kê bất kỳ quy tắc nào được đặt.

Ví dụ: nếu tường lửa được đặt để cho phép kết nối SSH (cổng 22) từ bất kỳ đâu, thì đầu ra có thể trông giống như thế này:

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 lệnh status nếu bạn muốn kiểm tra xem UFW đã cấu hình tường lửa.

Bước 9 – Vô hiệu hóa hoặc đặt lại UFW

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

  • sudo ufw disable

Bất kỳ quy tắc nào bạn đã tạo bằng UFW sẽ không còn hoạt động. Bạn có thể chạy sudo ufw enable nếu bạn cần kích hoạt nó sau này.

Nếu bạn đã cấu hình quy tắc UFW nhưng lại quyết định rằng reset lại trạng thái ban đầu, bạn có thể sử dụng lệnh sau:

  • 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 đó.

Tóm lại

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

 

Add Comment

Click here to post a comment