Cách bắt đầu với tường lửa Firewalld trên Linux

Tác giả sysadmin, T.Mười 27, 2023, 01:35:12 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách bắt đầu với tường lửa Firewalld trên Linux


Tường lửa dễ nhất trên Linux?

  • Tường lửa Firewalld là một Tường lửa Firewalld hiện đại và mạnh mẽ dành cho Linux, dễ dàng cấu hình thông qua dòng lệnh hoặc giao diện GUI.
  • Tường lửa Firewalld rất quan trọng trong việc hạn chế và kiểm soát các kết nối mạng tới máy tính của bạn nhằm tăng cường bảo mật.
  • Tường lửa Firewalld sử dụng các vùng để tổ chức các quy tắc Tường lửa Firewalld và cho phép tinh chỉnh và tùy chỉnh dựa trên các nhu cầu bảo mật khác nhau.

Nếu bạn đang tìm kiếm một Tường lửa Firewalld hiện đại, mạnh mẽ cho Linux, dễ cấu hình trên dòng lệnh hoặc bằng giao diện GUI của nó thì có lẽ  firewalld chính là thứ bạn đang tìm kiếm.

Bài viết về Tuần nhận thức về An ninh mạng này được mang đến cho bạn cùng với Incogni.

1. Tại sao bạn cần Tường lửa Firewalld?

Kết nối mạng có điểm gốc và điểm đến. Phần mềm tại nguồn yêu cầu kết nối và phần mềm tại đích chấp nhận hoặc từ chối kết nối. Nếu được chấp nhận, các gói dữ liệu - thường được gọi là lưu lượng mạng - có thể truyền theo cả hai hướng qua kết nối. Điều đó đúng cho dù bạn đang chia sẻ khắp phòng trong nhà riêng của mình, kết nối từ xa để làm việc từ văn phòng tại nhà hay sử dụng tài nguyên dựa trên đám mây ở xa.

Thực hành bảo mật tốt cho biết bạn nên hạn chế và kiểm soát các kết nối với máy tính của mình. Đây là những gì Tường lửa Firewalld làm. Chúng lọc lưu lượng truy cập mạng theo địa chỉ IP, cổng hoặc giao thức và từ chối các kết nối không đáp ứng bộ tiêu chí được xác định trước — các quy tắc Tường lửa Firewalld — mà bạn đã định cấu hình. Họ giống như nhân viên an ninh tại một sự kiện độc quyền. Nếu tên của bạn không có trong danh sách, bạn sẽ không được vào trong.

Tất nhiên, bạn không muốn các quy tắc Tường lửa Firewalld của mình quá hạn chế đến mức các hoạt động bình thường của bạn bị hạn chế. Việc cấu hình Tường lửa Firewalld của bạn càng đơn giản thì bạn càng ít có nguy cơ vô tình thiết lập các quy tắc xung đột hoặc hà khắc. Chúng tôi thường nghe người dùng nói rằng họ không sử dụng Tường lửa Firewalld vì nó quá phức tạp để hiểu hoặc cú pháp lệnh quá mờ.

Tường lửa firewalld mạnh mẽ nhưng thiết lập đơn giản, cả trên dòng lệnh và thông qua ứng dụng GUI chuyên dụng. Về cơ bản, Tường lửa Firewalld Linux dựa vào netfilterkhung lọc mạng phía nhân. Ở đây trong vùng đất của người dùng, chúng tôi có nhiều lựa chọn về công cụ để tương tác netfilter, chẳng hạn như tường lửa đơn giản iptables và tường lửa ufw.

Theo quan điểm của chúng tôi, firewalld nó mang lại sự cân bằng tốt nhất về chức năng, độ chi tiết và tính đơn giản.

2. Cài đặt Tường lửa Firewalld

Có hai phần để firewalld. Có firewalld tiến trình daemon cung cấp chức năng Tường lửa Firewalld và firewall-config. Đây là GUI tùy chọn cho firewalld. Lưu ý rằng không có "d" trong firewall-config.

Việc cài đặt firewalld trên Ubuntu, Fedora và Manjaro rất đơn giản trong mọi trường hợp, mặc dù mỗi trường hợp đều có cách riêng về những gì được cài đặt sẵn và những gì được đóng gói.

Để cài đặt trên Ubuntu, chúng ta cần cài đặt firewalld và firewall-config.

Mã nguồn [Chọn]
sudo apt install firewalld
Mã nguồn [Chọn]
sudo apt install firewall-config
Cài đặt cấu hình Tường lửa Firewalld trên Ubuntu

Trên Fedora, firewalld đã được cài đặt. Chúng ta chỉ cần thêm firewall-config.

Mã nguồn [Chọn]
sudo dnf install firewall-config
Trên Manjaro, không thành phần nào được cài đặt sẵn nhưng chúng được gói thành một gói duy nhất để chúng ta có thể cài đặt cả hai bằng một lệnh duy nhất.

Mã nguồn [Chọn]
sudo pacman -Sy firewalld
Chúng ta cần kích hoạt firewalld daemon để nó chạy mỗi khi máy tính khởi động.

Mã nguồn [Chọn]
sudo systemctl enable firewalld
Và chúng ta cần khởi động daemon để nó chạy ngay bây giờ.

Mã nguồn [Chọn]
sudo systemctl start firewalld
Chúng tôi có thể sử dụng systemctl để kiểm tra xem firewalld đã bắt đầu và đang chạy mà không gặp sự cố:

Mã nguồn [Chọn]
sudo systemctl status firewalld

Chúng ta cũng có thể sử dụng firewalld để kiểm tra xem nó có đang chạy hay không. Điều này sử dụng firewall-cmd lệnh với --state tùy chọn. Lưu ý không có "d" trong firewall-cmd:

Mã nguồn [Chọn]
sudo firewall-cmd --state

Bây giờ chúng ta đã cài đặt và chạy Tường lửa Firewalld, chúng ta có thể chuyển sang cấu hình nó.

3. Khái niệm về khu vực

Tường lửa firewalld dựa trên các khu vực. Các vùng là tập hợp các quy tắc Tường lửa Firewalld và kết nối mạng liên quan. Điều này cho phép bạn điều chỉnh các vùng khác nhau — và một loạt giới hạn bảo mật khác — mà bạn có thể vận hành theo. Ví dụ: bạn có thể có một vùng được xác định để chạy thường xuyên, hàng ngày, một vùng khác để chạy an toàn hơn và vùng khóa hoàn toàn "không vào, không ra".

Để di chuyển từ vùng này sang vùng khác và từ cấp độ bảo mật này sang cấp độ bảo mật khác một cách hiệu quả, bạn di chuyển kết nối mạng của mình từ vùng đó đến vùng mà bạn muốn chạy.

Điều này làm cho việc di chuyển từ bộ quy tắc Tường lửa Firewalld được xác định này sang bộ quy tắc Tường lửa Firewalld khác trở nên rất nhanh chóng. Một cách khác để sử dụng các vùng là để máy tính xách tay của bạn sử dụng một vùng khi bạn ở nhà và một vùng khác khi bạn ra ngoài và sử dụng Wi-Fi công cộng.

firewalld đi kèm với chín vùng được cấu hình sẵn. Chúng có thể được chỉnh sửa và thêm hoặc xóa nhiều vùng hơn.

  • drop : Tất cả các gói tin đến đều bị loại bỏ. Lưu lượng đi được cho phép. Đây là bối cảnh hoang tưởng nhất.
  • block : Tất cả các gói đến sẽ bị loại bỏ và một icmp-host-prohibitedtin nhắn được gửi đến người khởi tạo. Lưu lượng đi được cho phép.
  • trusted : Tất cả các kết nối mạng đều được chấp nhận và các hệ thống khác được tin cậy. Đây là cài đặt đáng tin cậy nhất và nên được giới hạn ở các môi trường rất an toàn như mạng thử nghiệm cố định hoặc nhà của bạn.
  • public : Vùng này được sử dụng trên các mạng công cộng hoặc các mạng khác mà không có máy tính nào khác có thể tin cậy được. Một lựa chọn nhỏ các yêu cầu kết nối phổ biến và thường an toàn được chấp nhận.
  • external : Vùng này được sử dụng trên các mạng bên ngoài có bật tính năng giả mạo NAT (chuyển tiếp cổng). Tường lửa Firewalld của bạn hoạt động như một bộ định tuyến chuyển tiếp lưu lượng truy cập đến mạng riêng của bạn, mạng này vẫn có thể truy cập được nhưng vẫn ở chế độ riêng tư.
  • internal : Vùng này được thiết kế để sử dụng trên các mạng nội bộ khi hệ thống của bạn hoạt động như một cổng hoặc bộ định tuyến. Các hệ thống khác trên mạng này thường được tin cậy.
  • dmz : Vùng này dành cho các máy tính nằm trong "khu phi quân sự" bên ngoài phạm vi phòng thủ của bạn và có quyền truy cập hạn chế vào mạng của bạn.
  • work : Vùng này dành cho máy làm việc. Các máy tính khác trên mạng này thường được tin cậy.
  • home : Vùng này dành cho máy gia đình. Các máy tính khác trên mạng này thường được tin cậy.

Các khu vực ở nhà, cơ quan và nội bộ có chức năng rất giống nhau nhưng việc tách chúng thành các khu vực khác nhau cho phép bạn tinh chỉnh một khu vực theo ý thích của mình, gói gọn một bộ quy tắc cho một tình huống cụ thể.

Điểm khởi đầu tốt là tìm hiểu vùng mặc định là gì. Đây là vùng mà các giao diện mạng của bạn sẽ được thêm vào khi firewalld cài đặt.

Mã nguồn [Chọn]
sudo firewall-cmd --get-default-zone

Vùng mặc định của chúng tôi là vùng công cộng. Để xem chi tiết cấu hình của một vùng, hãy sử dụng --list-alltùy chọn. Điều này liệt kê mọi thứ đã được thêm hoặc kích hoạt cho một vùng.

Mã nguồn [Chọn]
sudo firewall-cmd --zone=public --list-all

Chúng ta có thể thấy rằng vùng này được liên kết với kết nối mạng enp0s3 và đang cho phép lưu lượng truy cập liên quan đến DHCP, mDNS và SSH. Vì ít nhất một giao diện đã được thêm vào vùng này nên vùng này đang hoạt động.

firewalld cho phép bạn thêm các dịch vụ mà bạn muốn chấp nhận lưu lượng truy cập từ một vùng. Vùng đó sau đó cho phép loại lưu lượng truy cập đó đi qua. Điều này dễ dàng hơn việc nhớ rằng mDNS, chẳng hạn, sử dụng cổng 5353 và giao thức UDP, đồng thời thêm các chi tiết đó vào vùng theo cách thủ công. Mặc dù bạn cũng có thể làm điều đó.

Nếu chúng ta chạy lệnh trước đó trên máy tính xách tay có kết nối ethernet và thẻ Wi-Fi, chúng ta sẽ thấy điều gì đó tương tự nhưng có hai giao diện.

Mã nguồn [Chọn]
sudo firewall-cmd --zone=public --list-all

Cả hai giao diện mạng của chúng tôi đã được thêm vào vùng mặc định. Vùng này có các quy tắc cho ba dịch vụ giống như ví dụ đầu tiên, nhưng DHCP và SSH đã được thêm dưới dạng dịch vụ được đặt tên, trong khi mDNS đã được thêm dưới dạng ghép nối cổng và giao thức.

Để liệt kê tất cả các vùng sử dụng --get-zones tùy chọn.

Mã nguồn [Chọn]
sudo firewall-cmd --get-zones

Để xem cấu hình cho tất cả các vùng cùng một lúc, hãy sử dụng --list-all-zones tùy chọn. Bạn sẽ muốn chuyển cái này vào less.

Mã nguồn [Chọn]
sudo firewall-cmd --list-all-zones | less
Điều này rất hữu ích vì bạn có thể cuộn qua danh sách hoặc sử dụng công cụ tìm kiếm để tìm số cổng, giao thức và dịch vụ.


Trên máy tính xách tay của chúng tôi, chúng tôi sẽ chuyển kết nối Ethernet của mình từ vùng công cộng sang vùng gia đình. Chúng ta có thể làm điều đó với các tùy chọn --zone và --change-interface.

Mã nguồn [Chọn]
sudo firewall-cmd --zone=home --change-interface=enp3s0
Chúng ta hãy nhìn vào khu vực sân nhà và xem liệu sự thay đổi của chúng ta đã được thực hiện chưa.

Mã nguồn [Chọn]
sudo firewall-cmd --zone=home --list-all

Và nó đã. Kết nối Ethernet của chúng tôi được thêm vào vùng chính.

Tuy nhiên, đây không phải là một sự thay đổi vĩnh viễn. Chúng tôi đã thay đổi cấu hình đang chạy của Tường lửa Firewalld chứ không phải cấu hình được lưu trữ. Nếu chúng tôi khởi động lại hoặc sử dụng --reload tùy chọn này, chúng tôi sẽ hoàn nguyên về cài đặt trước đó.

Để thực hiện thay đổi vĩnh viễn, chúng ta cần sử dụng --permanent tùy chọn được đặt tên phù hợp.

Điều này có nghĩa là chúng tôi có thể thay đổi Tường lửa Firewalld theo yêu cầu một lần mà không thay đổi cấu hình được lưu trữ của Tường lửa Firewalld. Chúng tôi cũng có thể kiểm tra các thay đổi trước khi gửi chúng đến cấu hình. Để thực hiện thay đổi vĩnh viễn, định dạng chúng ta nên sử dụng là:

Mã nguồn [Chọn]
sudo firewall-cmd --zone=home --change-interface=enp3s0 --permanent
Nếu bạn thực hiện một số thay đổi nhưng quên sử dụng --permanentmột số trong số chúng, bạn có thể ghi cài đặt của phiên chạy hiện tại của Tường lửa Firewalld vào cấu hình bằng tùy chọn --runtime-to-permanent.

Mã nguồn [Chọn]
sudo firewall-cmd --runtime-to-permanent

4. Thêm và xóa dịch vụ

firewalld biết về rất nhiều dịch vụ. Bạn có thể liệt kê chúng bằng cách sử dụng --get-services tùy chọn.

Mã nguồn [Chọn]
sudo firewall-cmd --get-services
Phiên bản của chúng tôi về firewalld 192 dịch vụ được liệt kê. Để kích hoạt một dịch vụ trong một vùng, hãy sử dụng --add-service tùy chọn này.


Chúng ta có thể thêm dịch vụ vào một vùng bằng --add-service tùy chọn này.

Mã nguồn [Chọn]
sudo firewall-cmd --zone=public --add-service=http

Tên của dịch vụ phải khớp với mục nhập của nó trong danh sách dịch vụ từ firewalld.

Để xóa một dịch vụ thay thế --add-service bằng--remove-service

5. Thêm và xóa cổng và giao thức

Nếu bạn muốn chọn cổng và giao thức nào được thêm vào, bạn cũng có thể làm điều đó. Bạn sẽ cần biết số cổng và giao thức cho loại lưu lượng truy cập bạn đang thêm.

Hãy thêm lưu lượng HTTPS vào vùng công cộng. Cổng đó sử dụng cổng 443 và là một dạng lưu lượng TCP.

Mã nguồn [Chọn]
sudo firewall-cmd --zone=public --add-port=443/tcp

Bạn có thể cung cấp nhiều cổng bằng cách cung cấp cho cổng đầu tiên và cổng cuối cùng một dấu gạch nối " -" giữa chúng, chẳng hạn như "400-450".

Để xóa một cổng, hãy thay thế --add-port bằng --remove-port.

6. Sử dụng GUI

Nhấn phím "Super" và bắt đầu nhập "Tường lửa Firewalld". Bạn sẽ thấy biểu tượng bức tường gạch của firewall-config ứng dụng.


Nhấp vào biểu tượng đó để khởi chạy ứng dụng.

Để thêm một dịch vụ bằng firewalld GUI cũng dễ dàng như chọn một vùng từ danh sách các vùng và chọn dịch vụ từ danh sách dịch vụ.

Bạn có thể chọn sửa đổi phiên đang chạy hoặc cấu hình cố định bằng cách chọn "Thời gian chạy" hoặc "Vĩnh viễn" từ menu thả xuống "Cấu hình".


Để thực hiện các thay đổi đối với phiên đang chạy và chỉ thực hiện các thay đổi sau khi bạn đã kiểm tra chúng hoạt động, hãy đặt menu "Cấu hình" thành "Thời gian chạy". Thực hiện thay đổi của bạn. Khi bạn hài lòng khi họ làm những gì bạn muốn, hãy sử dụng tùy chọn menu Tùy chọn > Thời gian chạy đến vĩnh viễn.

Để thêm cổng và mục nhập giao thức vào một vùng, hãy chọn vùng đó từ danh sách vùng và nhấp vào "Cổng". Nhấp vào nút thêm cho phép bạn cung cấp số cổng và chọn giao thức từ menu.


Để thêm một giao thức, hãy nhấp vào "Giao thức", nhấp vào nút "Thêm" và chọn giao thức từ menu bật lên.


Để di chuyển giao diện từ vùng này sang vùng khác, hãy nhấp đúp vào giao diện trong danh sách "Kết nối", sau đó chọn vùng từ menu bật lên.


7. Đỉnh của tảng băng trôi

Bạn có thể làm được nhiều điều hơn nữa với firewalld, nhưng điều này là đủ để giúp bạn bắt đầu và hoạt động. Với thông tin chúng tôi đã cung cấp cho bạn, bạn sẽ có thể tạo các quy tắc có ý nghĩa trong khu vực của mình.