Firewall là một chương trình phần mềm thực hiện một tập hợp các quy tắc cho phép hoặc từ chối gói dữ liệu trong mạng. Firewalld là một công cụ quản lý tường lửa linh hoạt. Trong bài viết này, bạn sẽ tìm hiểu cách cài đặt và quản lý tường lửa trên máy chủ của bạn.
Cài đặt và kích hoạt Firewall
yum install firewalld
systemctl enable firewalld
sudo reboot
Để biết trạng thái của tường lửa, sử dụng lệnh sau:
sudo firewall-cmd --state
hoặc
systemctl status firewalld
Nếu kết quả của lệnh hiển thị "running" thì đây là biểu thị cho việc tường lửa đang hoạt động với cấu hình mặc định.
Để tải lại cấu hình của tường lửa, sử dụng lệnh sau:
sudo firewall-cmd --reload
Tắt và dừng tường lửa
systemctl stop firewalld
systemctl disable firewalld
Zone của tường lửa
Các zone là tập hợp các quy tắc cho phép lưu lượng giao thông và dịch vụ mạng cụ thể dựa trên các mức độ tin cậy khác nhau. Mỗi zone cho phép các loại dịch vụ và cổng khác nhau. Khi chúng ta kích hoạt FirewallD lần đầu tiên, "public" sẽ là zone mặc định.
-
Drop Zone - Đây là mức độ tin cậy thấp nhất. Chỉ cho phép kết nối ra. Mọi kết nối vào sẽ bị loại bỏ mà không có phản hồi.
-
Block Zone - Block Zone tương tự như Drop Zone. Sự khác biệt duy nhất là nếu chúng ta sử dụng zone này, yêu cầu kết nối vào sẽ bị từ chối với thông báo "icmp-host-prohibited".
-
Public Zone - Các kết nối được chọn được chấp thuận bằng cách định nghĩa các quy tắc trong zone này, các kết nối khác sẽ bị loại bỏ.
-
External Zone - Zone này dành cho các mạng bên ngoài với tính năng masquerading được kích hoạt. Các kết nối khác sẽ bị từ chối, chỉ các kết nối được chỉ định mới được phép.
-
DMZ Zone - Vùng phi quân sự cung cấp quyền truy cập giới hạn vào mạng nội bộ của bạn. Chỉ các kết nối được chỉ định mới được phép.
-
Work Zone - Zone này được sử dụng cho các khu vực làm việc. Hầu hết các máy tính được tin tưởng trong mạng. Chỉ các kết nối được chỉ định mới được phép.
-
Home Zone - Zone này được sử dụng cho các khu vực nhà ở. Một số kết nối khác được phép.
-
Internal Zone - Zone này được sử dụng cho các mạng nội bộ với các kết nối được chỉ định được phép.
-
Trusted Zone - Tin cậy tất cả các kết nối mạng. Nếu chúng ta thiết lập zone này, tất cả lưu lượng sẽ được chấp nhận.
Để biết về zone mặc định, sử dụng lệnh sau:
firewall-cmd --get-default-zone
Để biết zone hiện tại đang hoạt động, sử dụng lệnh sau:
firewall-cmd --get-active-zone
Để thay đổi zone mặc định, sử dụng lệnh sau:
sudo firewall-cmd --set-default-zone=internal
Để liệt kê tất cả các dịch vụ, cổng và quy tắc đang hoạt động, sử dụng lệnh sau:
sudo firewall-cmd --list-all
Cấu hình Firewalld
Dịch vụ Firewalld được cấu hình bằng các tệp XML và nằm tại các thư mục /usr/lib/firewalld/services/ và /etc/firewalld/services/.
Firewalld có hai bộ cấu hình:
- Bộ cấu hình Runtime: Những thay đổi này sẽ không được lưu lại sau khi khởi động lại Firewalld hoặc khởi động lại máy chủ.
- Thêm quy tắc vĩnh viễn cho dịch vụ HTTP và HTTPS:
sudo firewall-cmd --zone=public --add-service=http
sudo firewall-cmd --zone=public --add-service=https
- Bộ cấu hình Permanent: Những thay đổi cấu hình vĩnh viễn sẽ được giữ lại sau khi khởi động lại máy chủ.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=http
Để thêm dịch vụ SMTP (cổng 25) và SMTPS (cổng 465):
firewall-cmd --zone=public --add-service=smtp --permanent
firewall-cmd --zone=public --add-service=smtps --permanent
Quy tắc tường lửa
Mở và xóa cổng cho các Zone
Để mở một cổng cụ thể để chạy một ứng dụng nào đó:
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=21/tcp
Chúng ta có thể mở một khoảng cổng bằng cách sử dụng lệnh sau:
sudo firewall-cmd --permanent --add-port=200-300/tcp
Bạn có thể kiểm tra tất cả các cổng đã mở bằng lệnh sau:
sudo firewall-cmd --zone=public --list-ports
Để xóa một cổng đã thêm, sử dụng lệnh sau:
firewall-cmd --zone=public --remove-port=5000/tcp
Thêm và xóa cổng bằng cách sử dụng Firewalld:
firewall-cmd --zone=public --add-service=ftp
firewall-cmd --zone=public --remove-service=ftp
firewall-cmd --zone=public --list-services
Cấu hình Nâng cao
Dịch vụ và cổng là phù hợp với cấu hình đơn giản nhưng cho các tình huống nâng cao có thể hạn chế quá mức. Rich Rules và Direct Interface cho phép bạn thêm quy tắc tường lửa tùy chỉnh cho bất kỳ cổng, giao thức, địa chỉ và hành động nào trong bất kỳ khu vực nào.
Rich Rules
Cú pháp Rich Rules được mô tả cụ thể trong trang man firewalld.richlanguage(5) (hoặc trong terminal của bạn, gõ man firewalld.richlanguage). Để điều khiển chúng, sử dụng --add-rich-rule
, --list-rich-rules
và --remove-rich-rule
với lệnh firewall-cmd
.
Cho phép lưu lượng IPv4 từ máy chủ 192.0.2.0:
sudo firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.0.2.0 accept'
Từ chối lưu lượng IPv4 qua giao thức TCP từ máy chủ 192.0.2.0 đến cổng 22:
sudo firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.0.2.0" port port=22 protocol=tcp reject'
Để liệt kê các Rich Rule hiện tại trong zone public:
sudo firewall-cmd --zone=public --list-rich-rules
Cảm ơn bạn!