Preloader

Business License Address

128 Binh My Street, Binh My Commune, Cu Chi District, Ho Chi Minh City, Viet Nam

Phone Number

+84 865920041

Email

info@photuesoftware.com
supports@photuesoftware.com

Firewalld - Khái niệm cơ bản và cách sử dụng

Firewalld là một firewall động cho phép quản lý các vùng mạng và tường lửa, xác định mức độ tin cậy của kết nối và giao diện. Nó hỗ trợ cài đặt tường lửa cho IPv4, IPv6, ethernet bridge và IP set. Các tùy chọn cấu hình giữa runtime và permanent được tách biệt. Firewalld cũng cung cấp giao diện cho các dịch vụ hoặc ứng dụng để thêm quy tắc trực tiếp. Cùng tìm hiểu thêm về Firewalld trong bài viết.

Lợi ích của việc sử dụng firewalld

Các thay đổi có thể được thực hiện ngay lập tức trong môi trường runtime. Không cần khởi động lại dịch vụ hoặc daemon.

Với giao diện firewalld D-Bus, rất dễ dàng cho các dịch vụ, ứng dụng và cả người dùng để điều chỉnh cài đặt tường lửa. Giao diện hoàn chỉnh và được sử dụng cho các công cụ cấu hình tường lửa firewall-cmd, firewall-config và firewall-applet.

Sự tách biệt giữa runtiem và cấu hình permanent giúp bạn có thể thực hiện các đánh giá và bài test trong runtime. Cấu hình runtime chỉ có hiệu lực cho đến khi reload và restart lại dịch vụ tiếp theo hoặc khởi động lại hệ thống. Sau đó, cấu hình permanent sẽ được tải lại. Với môi trường runtime, có thể sử dụng runtime cho các cài đặt chỉ hoạt động trong một khoảng thời gian giới hạn. Nếu cấu hình runtime đã được sử dụng để đánh giá, đã hoàn tất và hoạt động, thì có thể lưu cấu hình này vào môi trường permanent. 

1) Khái niệm

FirewallD là giải pháp tường lửa mạnh mẽ, toàn diện được cài đặt mặc định trên CentOS/RHEL 7, nhằm thay thế Iptables với những khác biệt cơ bản:

FirewallD sử dụng “zones” và “services” thay vì “chain” và “rules” trong Iptables.

FirewallD quản lý các quy tắc được thiết lập tự động, có tác dụng ngay lập tức mà không làm mất đi các kết nối và session hiện có.

2) Các khái niệm cơ bản trong FirewallD

2.1) Zone

Trong FirewallD, zone là một nhóm các quy tắc nhằm chỉ ra những luồng dữ liệu được cho phép, dựa trên mức độ tin tưởng của điểm xuất phát luồng dữ liệu đó trong hệ thống mạng. Để sử dụng, bạn có thể lựa chọn zone mặc định, thiết lập các quy tắc trong zone hay chỉ định network interface để quy định hành vi được cho phép.

Các zone được xác định trước theo mức độ tin cậy , theo thứ tự từ “ít-tin-cậy-nhất” đến “đáng-tin-cậy-nhất”:

drop : ít tin cậy nhất – toàn bộ các kết nối đến sẽ bị từ chối mà không phản hồi , chỉ cho phép duy nhất kết nối đi ra .

block : tương tự như drop nhưng các kết nối đến bị từ chối và phản hồi bằng tin nhắn từ icmp-host-prohibited ( hoặc icmp6-adm-prohibited ).

public : đại diện cho mạng công cộng , không đáng tin cậy . Các máy tính/services khác không được tin tưởng trong hệ thống nhưng vẫn cho phép các kết nối đến trên cơ sở chọn từng trường hợp cụ thể .

external : hệ thống mạng bên ngoài trong trường hợp bạn sử dụng tường lửa làm gateway, được cấu hình giả lập NAT để giữ bảo mật mạng nội bộ mà vẫn có thể truy cập.

internal : đối lập với external zone , sử dụng cho phần nội bộ của gateway. Các máy tính/services thuộc zone này thì khá đáng tin cậy .

dmz : sử dụng cho các máy tính/service trong khu vực DMZ ( Demilitarized ) – cách ly không cho phép truy cập vào phần còn lại của hệ thống mạng , chỉ cho phép một số kết nối đến nhất định .

work : sử dụng trong công việc, tin tưởng hầu hết các máy tính và một vài services được cho phép hoạt động.

home : môi trường gia đình – tin tưởng hầu hết các máy tính khác và thêm một vài services được cho phép hoạt động .

trusted : đáng tin cậy nhất – tin tưởng toàn bộ thiết bị trong hệ thống .

2.2) Hiệu lực của các quy tắc

Runtime ( mặc định ) : có tác dụng ngay lập tức , mất hiệu lực khi reboot hệ thống .

Permanent : không áp dụng cho hệ thống đang chạy, cần reload mới có hiệu lực , tác dụng vĩnh viễn cả khi reboot hệ thống .

3) Cài đặt Firewalld

FirewallD được cài đặt mặc định trên CentOS 7 . Cài đặt nếu chưa có :

# yum install firewalld

Khởi động firewalld :

# systemctl start firewalld

Thiết lập firewalld khởi động cùng hệ thống :

# systemctl enable firewalld

Khởi động lại firewalld :

# systemctl restart firewalld

hoặc

# firewall-cmd --reload

Tạm dừng và vô hiệu hóa firewalld :

# systemctl stop firewalld

# systemctl disable firewalld

Kiểm tra tình trạng firewalld :

Cách 1 :

# systemctl status firewalld

Cách 2 :

# firewall-cmd --state

Cách 3 :

# systemctl is-active firewalld

# systemctl is-enabled firewalld

4) Cấu hình Firewalld

4.1) Thiết lập các Zone

Liệt kê tất cả các zone trong hệ thống :

# firewall-cmd --get-zones

Kiểm tra zone mặc định :

# firewall-cmd --get-default-zone

Kiểm tra zone active ( được sử dụng bởi card mạng )

Vì FirewallD chưa được thiết lập bất kỳ quy tắc nào nên zone mặc định cũng đồng thời là zone duy nhất được kích hoạt , điều khiển mọi luồng dữ liệu .
 

# firewall-cmd --get-active-zones

Thay đổi default zone ( vd thành home ) :

# firewall-cmd --set-default-zone=home

4.2) Thiết lập các rule

Liệt kê toàn bộ các rule của các zones :

# firewall-cmd --list-all-zones

Liệt kê toàn bộ các rule trong default zone và active zone :

# firewall-cmd --list-all

Liệt kê toàn bộ các quy tắc trong một zone cụ thể , ví dụ home :

# firewall-cmd --zone=home --list-all

Liệt kê danh sách services/port được cho phép trong zone cụ thể :

# firewall-cmd --zone=public --list-services

# firewall-cmd --zone=public --list-ports

4.3) Thiết lập cho services

Xác định các services trên hệ thống :

# firewall-cmd --get-services

Thông tin về services được lưu trữ tại /usr/lib/firewalld/services

Thiết lập cho phép services trên firewalld , sử dụng --add-service :

# firewall-cmd --zone=public --add-service=http

success

# firewall-cmd --zone=public --add-service=http --permanent

success

Thực hiện kiểm tra xem service đã được cho phép chưa :

# firewall-cmd --zone=public --list-services

Vô hiệu hóa services trên firewalld , sử dụng --remove-service :

# firewall-cmd --zone=public --remove-service=http

# firewall-cmd --zone=public --remove-service=http --permanent

4.4) Thiết lập cho port

Mở port với tham số --add-port :

# firewall-cmd --zone=public --add-port=9999/tcp

# firewall-cmd --zone=public --add-port=9999/tcp --permanent

Mở 1 dải port :

# firewall-cmd --zone=public --add-port=4990-5000/tcp

# firewall-cmd --zone=public --add-port=4990-5000/tcp --permanent

Kiểm tra lại các port đã mở :

# firewall-cmd --zone=public --list-ports

Đóng port với tham số --remove-port :

# firewall-cmd --zone=public --remove-port=9999/tcp

# firewall-cmd --zone=public --remove-port=9999/tcp --permanent

5) Cấu hình nâng cao

5.1) Tạo Zone riêng

Mặc dù, các zone có sẵn là quá đủ với nhu cầu sử dụng , vẫn có thể tạo lập zone của riêng mình để mô tả rõ ràng hơn về các chức năng của chúng .

VD : Có thể tạo riêng một zone cho webserver publicweb hay một zone cấu hình riêng cho DNS trong mạng nội bộ private DNS . Cần thiết lập permanent khi thêm một zone :

# firewall-cmd --permanent --new-zone=publicweb

success

# firewall-cmd --permanent --new-zone=privateDNS

success

# firewall-cmd --reload

success

Kiểm tra lại :

# firewall-cmd --get-zones

Khi đã có zone thiết lập riêng , có thể cấu hình như các zone thông thường : thiết lập mặc định , thêm quy tắc :

# firewall-cmd --zone=publicweb --add-service=ssh --permanent

# firewall-cmd --zone=publicweb --add-service=http --permanent

# firewall-cmd --zone=publicweb --add-service=https --permanent

5.2) Định nghĩa services riêng trên FirewallD

Khi có một service mới thêm vào hệ thống , có 2 phương án :

Mở port của service đó trên FirewallD

Tự định nghĩa service đó trên FirewallD

( VD : có thể tự định nghĩa port cho Nhanhoa Admin Port là 9999 )

Tạo file định nghĩa riêng từ file chuẩn ban đầu :

# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/nhanhoa-admin.xml

Chỉnh sửa để định nghĩa servies trên FirewallD :

# vi /etc/firewalld/services/nhanhoa-admin.xml

Lưu lại và khởi động lại FirewallD :

# firewall-cmd --reload

Kiểm tra lại danh sách các services :

# firewall-cmd --get-services

Phạm Thanh Long
Author

Phạm Thanh Long

Pho Tue SoftWare CO.,LTD là Nhà Cung cấp dịch Trung Tâm Dữ Liệu, Điện Toán Đám Mây Và Phát Triển Phần Mềm Hàng Đầu Việt Nam. Hệ Thống Data Center Đáp Ứng Mọi Nhu Cầu Với Kết Nối Internet Nhanh, Băng Thông Lớn, Uptime Lên Đến 99,99% Theo Tiêu Chuẩn TIER III-TIA 942.

Leave a comment

Your email address will not be published. Required fields are marked *