Cách thiết lập firewall với UFW trên Debian 10
UFW, hay Tường lửa không phức tạp, là một giao diện củaiptables nhằm mục đích đơn giản hóa quá trình  cấu hình  firewall . 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  firewall  đúng cách. Nếu bạn đang tìm cách bắt đầu bảo mật mạng  của bạn  và không chắc 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 cài đặt firewall với UFW trên Debian 10.
Yêu cầu
 Để làm theo hướng dẫn này, bạn  cần  một  server  Debian 10 với  user  không phải root sudo ,  bạn có thể cài đặt   server  này  theo  các Bước 1-3 trong hướng dẫn  Cài đặt   Server  Ban đầu với Debian 10 .
Bước 1 - Cài đặt UFW
 Debian không cài đặt UFW theo mặc định. Nếu bạn đã làm theo toàn bộ hướng dẫn  Cài đặt   Server  Ban đầu , bạn sẽ cài đặt và bật UFW. Nếu không, hãy cài đặt nó ngay bây giờ bằng cách sử dụng apt :
- sudo apt install ufw 
 
Ta sẽ cài đặt UFW và kích hoạt nó trong các bước sau.
Bước 2 - 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 với IPv6 miễn là bạn bật nó. Nếu  server  Debian của bạn đã bật IPv6,  bạn cần   đảm bảo  UFW được cấu hình để hỗ trợ IPv6; điều này sẽ  đảm bảo  UFW sẽ quản lý các  luật  firewall  cho IPv6 ngoài IPv4. Để  cấu hình  điều này, hãy mở file  cấu hình UFW /etc/default/ufw bằng nano  hoặc editor bạn quen dùng :
- sudo nano /etc/default/ufw 
 
Sau đó, đảm bảo giá trị của IPV6 là yes . Nó sẽ giống như thế này:
IPV6=yes Lưu và đóng file . Bây giờ khi UFW được bật, nó sẽ được cấu hình để viết cả luật firewall IPv4 và IPv6. Tuy nhiên, trước khi bật UFW, bạn cần đảm bảo firewall của bạn được cấu hình để cho phép bạn kết nối qua SSH. Hãy bắt đầu với việc cài đặt các policy mặc định.
Bước 3 - Cài đặt policy mặc định
Nếu bạn chỉ mới bắt đầu với firewall của bạn , các luật đầu tiên cần xác định là các policy mặc định của bạn. Các luật này xử lý lưu lượng truy cập không khớp rõ ràng với bất kỳ luật 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 nghĩa là bất kỳ ai cố gắng truy cập server của bạn sẽ không thể kết nối, trong khi bất kỳ ứng dụng nào trong server sẽ có thể tiếp cận thế giới bên ngoài.
Hãy đặt các luật UFW của bạn trở lại mặc định để ta có thể chắc chắn rằng bạn 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 firewall này có thể đủ cho một máy tính cá nhân, nhưng các server thường cần phản hồi các yêu cầu đến từ user bên ngoài. Ta sẽ xem xét điều đó tiếp theo.
Bước 4 - Cho phép kết nối SSH
Nếu ta bật firewall UFW ngay bây giờ, nó sẽ từ chối tất cả các kết nối đến. Điều này nghĩa là ta cần tạo các luật cho phép rõ ràng các kết nối đến hợp lệ - ví dụ: kết nối SSH hoặc HTTP - nếu ta muốn server của bạn phản hồi các loại yêu cầu đó. Nếu bạn đang sử dụng server cloud , có thể bạn cần cho phép các kết nối SSH đến để bạn có thể kết nối và quản lý server của bạn .
Để cấu hình server 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  luật  firewall  cho phép tất cả các kết nối trên cổng 22 , là cổng mà  trình  SSH lắng nghe theo mặc định. UFW biết cổng allow ssh nghĩa là gì vì nó được liệt kê là một dịch vụ trong file  /etc/services .
Tuy nhiên, ta có thể viết luật tương đương bằng cách chỉ định cổng thay vì tên dịch vụ. Ví dụ: lệnh này tạo ra kết quả giống như lệnh ở trên:
- sudo ufw allow 22 
 
Nếu bạn đã  cấu hình  daemon SSH  của bạn  để 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  server  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ờ firewall của bạn đã được cấu hình để cho phép các kết nối SSH đến, bạn có thể bật nó.
Bước 5 - 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ó.  Ta  đã  cài đặt   luật  firewall  cho phép kết nối SSH, vì vậy bạn có thể tiếp tục. Trả lời  dấu nhắc  bằng y và nhấn ENTER .
 Tường lửa hiện đang hoạt động. Chạy sudo ufw status verbose để xem các  luật  mà bạn đã đặt. 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, bao gồm cả việc cho phép và từ chối các loại kết nối khác nhau.
Bước 6 - Cho phép các kết nối khác
  Đến đây,  bạn nên cho phép tất cả các kết nối khác mà  server  của bạn cần hoạt động bình thường. 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 là  bạn đã biết cách viết các  luật  cho phép kết nối dựa trên tên dịch vụ hoặc cổng;  ta  đã 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à web server không được mã hóa sử dụng. Để cho phép loại lưu lượng này, bạn phải nhậpsudo ufw allow httphoặcsudo ufw allow 80. -  HTTPS trên cổng 
443, là cổng mà web server được mã hóa sử dụng. Để cho phép loại lưu lượng này, bạn sẽ nhậpsudo ufw allow httpshoặcsudo ufw allow 443. 
Tuy nhiên, có nhiều cách khác để cho phép kết nối, ngoài việc chỉ định một cổng hoặc dịch vụ đã biết. Ta sẽ thảo luận về những điều đó tiếp theo.
Dãy cổng cụ thể
Bạn có thể chỉ định phạm vi cổng với UFW. Ví dụ, 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 kết nối X11 , sử dụng 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 ( tcp hoặc udp ) mà các  luật  sẽ áp dụng.  Ta  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.
Địa chỉ IP cụ thể
 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 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 là 203.0.113.4 , bạn cần chỉ định from và 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 to any port theo 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 
 
Mạng con
 Nếu bạn muốn cho phép một mạng con địa chỉ IP, bạn  có thể thực hiện bằng cách  sử dụng ký hiệu CIDR để chỉ định một mặt nạ mạng. Ví dụ: nếu bạn muốn cho phép tất cả các địa chỉ IP từ 203.0.113.1 đến 203.0.113.254 bạn có thể sử dụng lệnh này:
- sudo ufw allow from 203.0.113.0/24 
 
Tương tự như vậy, bạn cũng có thể chỉ định cổng đích mà mạng con 203.0.113.0/24 được phép kết nối.   ,  ta  sẽ sử dụng cổng 22 (SSH) làm ví dụ:
- sudo ufw allow from 203.0.113.0/24 to any port 22 
 
Kết nối với một network interface cụ thể
 Nếu bạn muốn tạo  luật  firewall  chỉ áp dụng cho một  network interface  cụ thể, bạn có thể thực hiện việc này bằng cách chỉ định bật allow in on , theo sau là tên của  network interface .
Bạn có thể cần tra cứu các network interface của bạn trước khi tiếp tục. Để làm như vậy, hãy sử dụng lệnh sau:
- ip addr 
 
Output2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state . . . 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default . . . Đầu ra được tô sáng cho biết tên  network interface . Chúng thường được đặt tên như eth0 hoặc enp3s2 .
 Ví dụ: nếu  server  của bạn có  network interface  công cộng được gọi là eth0 , bạn có thể cho phép lưu lượng truy cập HTTP vào nó bằng lệnh sau:
- sudo ufw allow in on eth0 to any port 80 
 
Làm như vậy sẽ cho phép server của bạn nhận được các yêu cầu HTTP từ internet công cộng.
 Hoặc, nếu bạn muốn  server  database  MySQL  của bạn  (cổng 3306 ) lắng nghe các kết nối trên  network interface  riêng eth1 , bạn có thể sử dụng lệnh này:
- sudo ufw allow in on eth1 to any port 3306 
 
Điều này sẽ cho phép các server khác trên mạng riêng của bạn kết nối với database MySQL của bạn.
Bước 7 - Từ chối kết nối
Nếu bạn chưa thay đổi policy 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 policy firewall an toàn bằng cách yêu cầu bạn tạo các luật 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 cầ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 server của bạn đang bị tấn công từ đó. Ngoài ra, nếu bạn muốn thay đổi policy đến mặc định của bạn để cho phép (không được khuyến khích ), bạn cần tạo luật 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 luật , 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.4 bạn có thể sử dụng lệnh này:
- sudo ufw deny from 203.0.113.4 
 
Bây giờ ta hãy xem cách xóa các luật .
Bước 8 - Xóa luật
Biết cách xóa các luật firewall cũng quan trọng như biết cách tạo chúng. Có hai cách để chỉ định luật nào cần xóa: theo số luật hoặc theo chính luật . Điều này tương tự như cách các luật được chỉ định khi chúng được tạo. Ta sẽ bắt đầu bằng cách giải thích xóa theo phương pháp số luật .
Theo số luật
 Nếu bạn đang sử dụng số  luật  để xóa các  luật  firewall , điều đầu tiên bạn muốn làm là lấy danh sách các  luật  firewall   của bạn . Lệnh status UFW có tùy chọn numbered , hiển thị các số bên cạnh mỗi  luật :
- sudo ufw status numbered 
 
OutputStatus: active       To                         Action      From      --                         ------      ---- [ 1] 22                         ALLOW IN    15.15.15.0/24 [ 2] 80                         ALLOW IN    Anywhere Nếu  ta  quyết định rằng  ta  muốn xóa  luật  2 , cho phép kết nối HTTP trên cổng 80 ,  ta  có thể chỉ định điều này trong lệnh delete UFW sau:
- sudo ufw delete 2 
 
Thao tác này sẽ hiển thị  dấu nhắc  xác nhận mà bạn có thể trả lời bằng y/n . Nhập y sau đó sẽ xóa  luật  2 .  Lưu ý  nếu bạn đã bật IPv6, bạn  cũng cần  xóa  luật  IPv6 tương ứng.
Theo luật thực tế
 Thay thế cho số  luật  là chỉ định  luật  thực tế để xóa. Ví dụ: nếu bạn muốn xóa  luật  allow http , bạn có thể viết nó như sau:
- sudo ufw delete allow http 
 
Bạn cũng có thể chỉ định  luật  với allow 80 thay vì tên dịch vụ:
- sudo ufw delete allow 80 
 
Phương pháp này sẽ xóa cả luật IPv4 và IPv6, nếu chúng tồn tại.
Bước 9 - Kiểm tra trạng thái và luật 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, là mặc định, bạn sẽ thấy thông tin như sau:
OutputStatus: inactive Nếu UFW đang hoạt động, điều này sẽ xảy ra nếu bạn đã làm theo Bước 3,  kết quả  sẽ thông báo rằng nó đang hoạt động và sẽ liệt kê bất kỳ  luật  nào bạn đã đặt. Ví dụ: nếu firewall  được đặt để cho phép các kết nối SSH (cổng 22 ) từ bất kỳ đâu,  kết quả  có thể trông giống như sau:
OutputStatus: active  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 firewall  như thế nào.
Bước 10 - Tắt hoặc Đặt lại UFW (tùy chọn)
Nếu bạn không còn cần sử dụng UFW, bạn có thể tắt nó bằng lệnh sau:
- sudo ufw disable 
 
Mọi  luật  bạn đã tạo bằng UFW sẽ không còn hoạt động. Bạn luô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 các luật UFW nhưng bạn cầ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 mọi luật mà bạn đã xác định trước đó. Lưu ý các policy mặc định sẽ không thay đổi thành 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.
Kết luận
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. Đảm bảo cho phép bất kỳ kết nối đến nào khác mà server của bạn cần, đồng thời hạn chế các kết nối không cần thiết. Điều này sẽ đảm bảo server của bạn vừa hoạt động vừa an toàn.
Để tìm hiểu về các cấu hình UFW phổ biến hơn, hãy xem hướng dẫn này về UFW Essentials: Common Firewall Rules and Commands .
Các tin liên quan

