Nếu bạn đang tìm kiếm một tường lửa hiện đại, mạnh mẽ dành cho Linux, dễ cấu hình trên dòng lệnh hoặc với giao diện GUI của nó, thì firewalld
có lẽ là những gì bạn đang tìm kiếm.
Sự cần thiết của tường lửa
Các kết nối mạng có nguồn gốc và đích đến. Phần mềm ở nguồn gốc yêu cầu kết nối và phần mềm ở đích chấp nhận hoặc từ chối nó. 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 giới hạn 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 làm. Chúng lọc lưu lượng 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 một bộ tiêu chí được xác định trước—các quy tắc tường lửa—mà bạn đã 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 bên trong.
Tất nhiên, bạn không muốn các quy tắc tường lửa của mình bị hạn chế đến mức các hoạt động bình thường của bạn bị cắt giảm. Cấu hình tường lửa của bạn càng đơn giản thì bạn càng ít có khả năng vô tình thiết lập các quy tắc mâu thuẫn hoặc hà khắc. Chúng tôi thường nghe từ những người dùng nói rằng họ không sử dụng tường lửa vì nó quá phức tạp để hiểu hoặc cú pháp lệnh quá mờ.
Các firewalld
tường lửa mạnh mẽ nhưng đơn giản để thiết lập, cả trên dòng lệnh và thông qua ứng dụng GUI chuyên dụng của nó. Về cơ bản, tường lửa Linux dựa vào netfilter
, khung 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 công cụ để tương tác với netfilter
Như là iptables
, ufw
tường lửa không phức tạp, và firewalld
.
Theo quan điểm của chúng tôi, firewalld
cung cấp sự cân bằng tốt nhất về chức năng, độ chi tiết và đơn giản.
cài đặt tường lửa
Có hai phần để firewalld
. có firewalld
quy trình daemon cung cấp chức năng tường lửa và có firewall-config
. Đây là GUI tùy chọn cho firewalld
. Lưu ý rằng không có “d” trong firewall-config
.
cài đặt firewalld
trên Ubuntu, Fedora và Manjaro đều đơn giản trong mọi trường hợp, mặc dù mỗi người đều có cách xử lý riêng đối với 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
.
sudo apt install firewalld
sudo apt install firewall-config
Trên Fedora, firewalld
đã được cài đặt. Chúng ta chỉ cần thêm firewall-config
.
sudo dnf install firewall-config
Trên Manjaro, không có thành phần nào được cài đặt sẵn nhưng chúng được gói gọn trong một gói duy nhất để chúng tôi có thể cài đặt cả hai bằng một lệnh duy nhất.
sudo pacman -Sy firewalld
Chúng ta cần kích hoạt firewalld
daemon để cho phép nó chạy mỗi khi máy tính khởi động.
sudo systemctl enable firewalld
Và chúng ta cần khởi động daemon để nó chạy ngay bây giờ.
sudo systemctl start firewalld
chúng ta 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ố:
sudo systemctl status firewalld
Chúng ta cũng có thể sử dụng firewalld
để kiểm tra xem nó có đang chạy không. Điều này sử dụng firewall-cmd
lệnh với --state
quyền mua. Lưu ý không có “d” trong firewall-cmd
:
sudo firewall-cmd --state
Bây giờ chúng ta đã cài đặt và chạy tường lửa, chúng ta có thể chuyển sang cấu hình nó.
Khái niệm về Khu vực
Các firewalld
tường lửa dựa trên khu vực. Vùng là tập hợp các quy tắc tường lửa 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 tập hợp các 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 có nó đến vùng mà bạn muốn chạy bên dưới.
Điều này làm cho việc di chuyển một quy tắc tường lửa từ bộ quy tắc tường lửa này sang bộ quy tắc tường lửa khác 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.
- làm rơi: Tất cả các gói đến đều bị loại bỏ. Lưu lượng truy cập đi được cho phép. Đây là thiết lập hoang tưởng nhất.
-
khối: Tất cả các gói đến bị loại bỏ và một
icmp-host-prohibited
thông điệp được gửi đến người khởi tạo. Lưu lượng truy cập đi được cho phép. - đáng tin cậy: Tất cả các kết nối mạng đượ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 trong 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.
- công cộng: 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 máy tính nào khác có thể tin cậy được. Một số yêu cầu kết nối phổ biến và thường an toàn được chấp nhận.
- bên ngoài: Vùng này được sử dụng trên các mạng bên ngoài có bật NAT masquerading (chuyển tiếp cổng). Tường lửa 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ư.
- nội bộ: 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.
- đmz: Khu vực này dành cho các máy tính nằm trong “khu vực phi quân sự” bên ngoài vành đai 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.
- công việc: 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.
- Trang Chủ: Khu 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 gia đình, cơ quan và nội bộ rất giống nhau về chức năng, 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ể.
Một đ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 được thêm vào khi firewalld
được cài đặt.
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-all
quyền mua. Điều này liệt kê mọi thứ đã được thêm hoặc kích hoạt cho một vùng.
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 dịch vụ mà bạn muốn chấp nhận lưu lượng truy cập từ một khu vực. Khu vực đó sau đó cho phép loại lưu lượng truy cập đó đi qua. Điều này dễ dàng hơn là ghi 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 một cái gì đó tương tự, nhưng có hai giao diệ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 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 làm dịch vụ được đặt tên, trong khi mDNS đã được thêm làm cổng và giao thức ghép nối.
Để liệt kê tất cả các vùng sử dụng --get-zones
quyền mua.
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
quyền mua. Bạn sẽ muốn đưa nó vào less
.
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ừ khu vực công cộng sang khu vực gia đình. Chúng ta có thể làm điều đó với --zone
và --change-interface
tùy chọn.
sudo firewall-cmd --zone=home --change-interface=enp3s0
Hãy xem khu vực nhà và xem liệu thay đổi của chúng ta đã được thực hiện chưa.
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 gia đì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 đang chạy cấu hình của tường lửa, không phải của nó lưu trữ cấu hình. Nếu chúng tôi khởi động lại hoặc sử dụng --reload
tùy chọn, chúng tôi sẽ hoàn nguyên về cài đặt trước đó của mình.
Để thực hiện thay đổi vĩnh viễn, chúng ta cần sử dụng phương thức được đặt tên phù hợp --permanent
quyền mua.
Điều này có nghĩa là chúng tôi có thể thay đổi tường lửa cho các yêu cầu một lần mà không làm thay đổi cấu hình được lưu trữ của tường lửa. 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 của chúng tôi vĩnh viễn, định dạng chúng tôi nên sử dụng là:
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 --permanent
trên một số trong số chúng, bạn có thể ghi cài đặt của phiên chạy tường lửa hiện tại vào cấu hình bằng cách sử dụng --runtime-to-permanent
quyền mua.
sudo firewall-cmd --runtime-to-permanent
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
quyền mua.
sudo firewall-cmd --get-services
phiên bản của chúng tôi firewalld
liệt kê 192 dịch vụ. Để kích hoạt một dịch vụ trong một khu vực, hãy sử dụng --add-service
quyền mua.
Chúng ta có thể thêm một dịch vụ vào một khu vực bằng cách sử dụng --add-service
quyền mua.
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
.
Để loại bỏ một dịch vụ thay thế --add-service
với --remove-service
Thêm và xóa cổng và giao thức
Nếu 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 mà bạn đang thêm vào.
Hãy thêm lưu lượng HTTPS vào khu vực công cộng. Điều đó sử dụng cổng 443 và là một dạng lưu lượng TCP.
sudo firewall-cmd --zone=public --add-port=443/tcp
Bạn có thể cung cấp nhiều loại 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.”
Để loại bỏ một cổng thay thế --add-port
với --remove-port
.
Sử dụng GUI
Nhấn phím “Super” của bạn và bắt đầu nhập “firewall”. Bạn sẽ thấy biểu tượng bức tường gạch cho firewall-config
đăng kí.
Nhấp vào biểu tượng đó để khởi chạy ứng dụng.
Để thêm một dịch vụ vào firewalld
sử dụng GUI 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 chạy hoặc cấu hình cố định bằng cách chọn “Thời gian chạy” hoặc “Thường trực” 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 xem chúng có hoạt động hay không, hãy đặt menu “Cấu hình” thành “Thời gian chạy”. Thực hiện các thay đổi của bạn. Khi bạn hài lòng rằng họ đang làm những gì bạn muốn, hãy sử dụng tùy chọn menu Options > Runtime to Permanent.
Để thêm mục nhập cổng và 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 một giao diện từ vùng này sang vùng khác, bấm đú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.
Đỉnh của tảng băng trôi
Còn rất nhiều điều bạn có thể làm với firewalld
, nhưng điều này là đủ để giúp bạn bắt đầu và chạy. 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.