Thứ năm, 18/06/2015 | 00:00 GMT+7

Cách thiết lập firewall bằng FirewallD trên CentOS 7

Firewalld là một giải pháp quản lý firewall có sẵn cho nhiều bản phân phối Linux, hoạt động như một giao diện user cho hệ thống lọc gói tin iptables do nhân Linux cung cấp. Trong hướng dẫn này, ta sẽ trình bày cách cài đặt firewall cho server của bạn và chỉ cho bạn những kiến thức cơ bản về quản lý firewall bằng công cụ quản trị firewall-cmd (nếu bạn muốn sử dụng iptables với CentOS, hãy làm theo hướng dẫn này ).

Lưu ý: Có khả năng bạn đang làm việc với version firewalld mới hơn hiện có tại thời điểm viết bài này hoặc server của bạn được cài đặt hơi khác so với server mẫu được sử dụng trong hướng dẫn này. Do đó, hoạt động của một số lệnh được giải thích trong hướng dẫn này có thể khác nhau tùy thuộc vào cấu hình cụ thể của bạn.

Các khái niệm cơ bản trong Firewalld

Trước khi bắt đầu nói về cách thực sự sử dụng trình firewall-cmd để quản lý cấu hình firewall của bạn, ta nên làm quen với một vài khái niệm cơ bản mà công cụ này giới thiệu.

Khu vực

Daemon firewalld quản lý các group luật bằng cách sử dụng các thực thể được gọi là "zones" . Về cơ bản, vùng là tập hợp các luật quy định lưu lượng truy cập nào được phép tùy thuộc vào mức độ tin cậy của bạn đối với các mạng mà máy tính của bạn được kết nối. Các network interface được gán một vùng để chỉ định hành vi mà firewall sẽ cho phép.

Đối với các máy tính có thể di chuyển giữa các mạng thường xuyên (như notebook ), loại linh hoạt này cung cấp một phương pháp tốt để thay đổi các luật của bạn tùy thuộc vào môi trường của bạn. Bạn có thể có các quy định nghiêm ngặt cấm hầu hết lưu lượng khi hoạt động trên mạng WiFi công cộng, đồng thời cho phép các hạn chế thoải mái hơn khi kết nối với mạng gia đình của bạn. Đối với một server , các vùng này không quan trọng ngay lập tức vì môi trường mạng hiếm khi thay đổi.

Dù môi trường mạng của bạn có thể năng động như thế nào, vẫn hữu ích khi làm quen với ý tưởng chung đằng sau mỗi vùng được định nghĩa cho firewalld . Để từ ít tin cậy nhất đến tin cậy nhất , các khu vực được định nghĩa trong firewalld là:

  • drop : Mức độ tin cậy thấp nhất. Tất cả các kết nối đến đều bị chặn mà không có phản hồi và chỉ có thể thực hiện các kết nối đi.
  • chặn : Tương tự như ở trên, nhưng thay vì chỉ đơn giản là bỏ kết nối, các yêu cầu đến sẽ bị từ chối với thông báo icmp-host-prohibited icmp6-adm-prohibited hoặc icmp6-adm-prohibited .
  • public : Đại diện cho các mạng công khai, không tin cậy . Bạn không tin tưởng các máy tính khác nhưng có thể cho phép các kết nối đến đã chọn tùy theo từng trường hợp.
  • bên ngoài : Các mạng bên ngoài trong trường hợp bạn đang sử dụng firewall làm cổng của bạn . Nó được cấu hình cho NAT giả mạo để mạng nội bộ của bạn vẫn riêng tư nhưng có thể truy cập được.
  • nội bộ : Phía bên kia của vùng bên ngoài, được sử dụng cho phần bên trong của cổng. Các máy tính này khá tin cậy và một số dịch vụ bổ sung có sẵn.
  • dmz : Được sử dụng cho các máy tính nằm trong DMZ (các máy tính bị cô lập sẽ không có quyền truy cập vào phần còn lại của mạng của bạn). Chỉ một số kết nối đến mới được phép.
  • công việc : Dùng cho máy làm việc. Tin tưởng hầu hết các máy tính trong mạng.Một số dịch vụ khác có thể được cho phép.
  • home : Môi trường gia đình. Nó thường ngụ ý rằng bạn tin tưởng hầu hết các máy tính khác và một vài dịch vụ nữa sẽ được chấp nhận.
  • tin cậy : Tin tưởng tất cả các máy trong mạng. Tùy chọn mở nhất trong số các tùy chọn có sẵn và nên được sử dụng một cách tiết kiệm.

Để sử dụng firewall , ta có thể tạo các luật và thay đổi các thuộc tính của vùng của ta và sau đó gán các network interface của ta cho bất kỳ vùng nào thích hợp nhất.

Quy luật Permanence

Trong firewalld, các luật có thể được chỉ định là vĩnh viễn hoặc ngay lập tức. Nếu luật được thêm vào hoặc sửa đổi, theo mặc định, hoạt động của firewall hiện đang chạy sẽ được sửa đổi. Ở lần khởi động tiếp theo, các luật cũ sẽ được hoàn nguyên.

Hầu hết các hoạt động firewall-cmd có thể lấy cờ --permanent để cho biết firewall không tạm thời nên được nhắm đến . Điều này sẽ ảnh hưởng đến bộ luật được reload khi khởi động. Sự tách biệt này nghĩa là bạn có thể kiểm tra các luật trong version firewall đang hoạt động của bạn và sau đó reload nếu có vấn đề. Bạn cũng có thể sử dụng cờ --permanent để xây dựng toàn bộ bộ luật theo thời gian, tất cả sẽ được áp dụng cùng một lúc khi lệnh reload được đưa ra.

Cài đặt và kích hoạt firewall của bạn để bắt đầu khi server khởi động

firewalld được cài đặt theo mặc định trên một số bản phân phối Linux, bao gồm nhiều hình ảnh của CentOS 7. Tuy nhiên, có thể bạn cần tự cài đặt firewalld:

  • sudo yum install firewalld

Sau khi cài đặt firewalld , bạn có thể kích hoạt dịch vụ và khởi động lại server của bạn . Lưu ý việc bật firewalld sẽ khiến dịch vụ khởi động khi server khởi động . Cách tốt nhất là tạo các luật firewall của bạn và tận dụng cơ hội để kiểm tra chúng trước khi cấu hình hành vi này để tránh các vấn đề tiềm ẩn.

  • sudo systemctl enable firewalld
  • sudo reboot

Khi server khởi động lại, firewall của bạn sẽ được kích hoạt, các network interface của bạn phải được đưa vào các vùng bạn đã cấu hình (hoặc quay trở lại vùng mặc định đã cấu hình ) và mọi luật liên quan đến (các) vùng sẽ được áp dụng cho các các giao diện.

Ta có thể xác minh dịch vụ đang chạy và có thể truy cập được bằng lệnh :

  • sudo firewall-cmd --state
output
running

Điều này cho biết firewall của ta đang hoạt động với cấu hình mặc định.

Làm quen với các luật firewall hiện tại

Trước khi bắt đầu thực hiện các sửa đổi, ta nên tự làm quen với môi trường và luật mặc định được cung cấp bởi daemon.

Khám phá các giá trị mặc định

Ta có thể thấy vùng nào hiện được chọn làm mặc định bằng lệnh :

  • firewall-cmd --get-default-zone
output
public

Vì ta chưa đưa cho firewalld bất kỳ lệnh nào để đi chệch khỏi vùng mặc định và không có giao diện nào của ta được cấu hình để liên kết với một vùng khác, vùng đó cũng sẽ là vùng “hoạt động” duy nhất (vùng đang kiểm soát lưu lượng giao diện). Ta có thể xác minh điều đó bằng lệnh :

  • firewall-cmd --get-active-zones
output
public interfaces: eth0 eth1

Ở đây, ta có thể thấy rằng server mẫu của ta có hai network interface đang được điều khiển bởi firewall ( eth0eth1 ). Cả hai hiện đang được quản lý theo các luật được xác định cho khu vực công cộng.

Làm thế nào để ta biết những luật nào được liên kết với khu vực công cộng? Ta có thể in ra cấu hình của vùng mặc định bằng lệnh :

  • sudo firewall-cmd --list-all
output
public (default, active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Ta có thể cho biết từ kết quả rằng vùng này vừa là mặc định vừa hoạt động và các giao diện eth0eth1 được liên kết với vùng này ( ta đã biết tất cả điều này từ các yêu cầu trước đây của ta ). Tuy nhiên, ta cũng có thể thấy rằng vùng này cho phép thực hiện các hoạt động bình thường liên quan đến client DHCP (để gán địa chỉ IP) và SSH (để quản trị từ xa).

Khám phá các vùng thay thế

Bây giờ ta có một ý tưởng tốt về cấu hình cho vùng mặc định và vùng hoạt động. Ta cũng có thể tìm hiểu thông tin về các khu vực khác.

Để nhận danh sách các khu vực khả dụng, hãy nhập:

  • firewall-cmd --get-zones
output
block dmz drop external home internal public trusted work

Ta có thể thấy cấu hình cụ thể được liên kết với một vùng bằng cách bao gồm tham số --zone= trong lệnh --list-all của ta :

  • sudo firewall-cmd --zone=home --list-all
output
home interfaces: sources: services: dhcpv6-client ipp-client mdns samba-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:

Bạn có thể xuất ra tất cả các định nghĩa vùng bằng cách sử dụng tùy chọn --list-all-zones . Bạn có thể cần chuyển kết quả vào một máy nhắn tin để xem dễ dàng hơn:

  • sudo firewall-cmd --list-all-zones | less

Chọn vùng cho giao diện của bạn

Trừ khi bạn đã cấu hình các network interface của bạn theo cách khác, mỗi giao diện sẽ được đặt trong vùng mặc định khi firewall được khởi động.

Thay đổi vùng của giao diện

Bạn có thể chuyển đổi giao diện giữa các vùng trong một phiên bằng cách sử dụng tham số --zone= kết hợp với tham số --change-interface= . Như với tất cả các lệnh sửa đổi firewall , bạn cần sử dụng sudo .

Ví dụ: ta có thể chuyển giao diện eth0 mình sang vùng “nhà” bằng lệnh :

  • sudo firewall-cmd --zone=home --change-interface=eth0
output
success

Ghi chú
Khi nào bạn chuyển một giao diện sang một vùng mới, hãy lưu ý bạn có thể đang sửa đổi các dịch vụ sẽ hoạt động. Ví dụ, ở đây ta đang chuyển sang vùng “nhà”, nơi có sẵn SSH. Điều này nghĩa là kết nối của ta sẽ không bị ngắt. Một số vùng khác không được bật SSH theo mặc định và nếu kết nối của bạn bị ngắt khi sử dụng một trong các vùng này, bạn có thể thấy mình không thể đăng nhập lại.

Ta có thể xác minh điều này đã thành công bằng cách yêu cầu lại các vùng đang hoạt động:

  • firewall-cmd --get-active-zones
output
home interfaces: eth0 public interfaces: eth1

Điều chỉnh vùng mặc định

Nếu tất cả các giao diện của bạn có thể được xử lý tốt nhất bởi một vùng duy nhất, có lẽ sẽ dễ dàng hơn khi chỉ cần chọn vùng mặc định tốt nhất và sau đó sử dụng vùng đó cho cấu hình của bạn.

Bạn có thể thay đổi vùng mặc định với tham số --set-default-zone= . Điều này sẽ ngay lập tức thay đổi bất kỳ giao diện nào đã trở lại mặc định thành vùng mới:

  • sudo firewall-cmd --set-default-zone=home
output
success

Đặt luật cho ứng dụng của bạn

Cách cơ bản để xác định ngoại lệ firewall cho các dịch vụ bạn muốn cung cấp rất dễ dàng. Ta sẽ chạy qua ý tưởng cơ bản ở đây.

Thêm dịch vụ vào vùng của bạn

Phương pháp đơn giản nhất là thêm các dịch vụ hoặc cổng bạn cần vào các khu vực bạn đang sử dụng. , bạn có thể nhận được danh sách các dịch vụ có sẵn với tùy chọn --get-services :

  • firewall-cmd --get-services
output
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
Ghi chú

Bạn có thể biết thêm chi tiết về từng dịch vụ này bằng cách xem .xml liên kết của chúng trong folder /usr/lib/firewalld/services . Ví dụ: dịch vụ SSH được định nghĩa như sau:

/usr/lib/firewalld/services/ssh.xml
<?xml version="1.0" encoding="utf-8"?> <service>   <short>SSH</short>   <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>   <port protocol="tcp" port="22"/> </service> 


Bạn có thể bật dịch vụ cho một vùng bằng cách sử dụng tham số --add-service= . Thao tác sẽ nhắm đến đến vùng mặc định hoặc bất kỳ vùng nào được chỉ định bởi tham số --zone= . Theo mặc định, điều này sẽ chỉ điều chỉnh phiên firewall hiện tại. Bạn có thể điều chỉnh cấu hình firewall vĩnh viễn bằng cách --permanent cờ --permanent .

Ví dụ: nếu ta đang chạy một web server phục vụ truy cập HTTP thông thường, ta có thể cho phép lưu lượng này cho các giao diện trong vùng “công cộng” của ta cho phiên này bằng lệnh :

  • sudo firewall-cmd --zone=public --add-service=http

Bạn có thể bỏ dấu --zone= nếu bạn muốn sửa đổi vùng mặc định. Ta có thể xác minh hoạt động thành công bằng cách sử dụng hoạt động --list-all hoặc --list-services :

  • sudo firewall-cmd --zone=public --list-services
output
dhcpv6-client http ssh

Khi bạn đã kiểm tra rằng mọi thứ đang hoạt động bình thường, có thể bạn cần sửa đổi các luật firewall vĩnh viễn để dịch vụ của bạn vẫn có sẵn sau khi khởi động lại. Ta có thể thực hiện thay đổi khu vực “công cộng” vĩnh viễn bằng lệnh :

  • sudo firewall-cmd --zone=public --permanent --add-service=http
output
success

Bạn có thể xác minh việc này đã thành công bằng cách thêm cờ --permanent vào hoạt động --list-services . Bạn cần sử dụng sudo cho bất kỳ --permanent hoạt động --permanent nào:

  • sudo firewall-cmd --zone=public --permanent --list-services
output
dhcpv6-client http ssh

Khu vực “công cộng” của bạn bây giờ sẽ cho phép lưu lượng truy cập web HTTP trên cổng 80. Nếu web server của bạn được cấu hình để sử dụng SSL / TLS, bạn cũng cần thêm dịch vụ https . Ta có thể thêm điều đó vào phiên hiện tại và luật vĩnh viễn được đặt bằng lệnh :

  • sudo firewall-cmd --zone=public --add-service=https
  • sudo firewall-cmd --zone=public --permanent --add-service=https

Điều gì xảy ra nếu Không có Dịch vụ Thích hợp?

Các dịch vụ firewall đi kèm với cài đặt firewalld đại diện cho nhiều yêu cầu phổ biến nhất đối với các ứng dụng mà bạn có thể cần cho phép truy cập. Tuy nhiên, có thể sẽ có những trường hợp mà các dịch vụ này không phù hợp với yêu cầu của bạn.

Trong tình huống này, bạn có hai lựa chọn.

Mở cổng cho vùng của bạn

Cách dễ nhất để thêm hỗ trợ cho ứng dụng cụ thể của bạn là mở các cổng mà nó sử dụng trong (các) vùng thích hợp. Điều này cũng dễ dàng như chỉ định cổng hoặc phạm vi cổng và giao thức liên quan cho các cổng bạn cần mở.

Ví dụ: nếu ứng dụng của ta chạy trên cổng 5000 và sử dụng TCP, ta có thể thêm phần này vào vùng “công cộng” cho phiên này bằng cách sử dụng tham số --add-port= . Giao thức có thể là tcp hoặc udp :

  • sudo firewall-cmd --zone=public --add-port=5000/tcp
output
success

Ta có thể xác minh điều này đã thành công bằng cách sử dụng thao tác --list-ports :

  • sudo firewall-cmd --zone=public --list-ports
output
5000/tcp

Cũng có thể chỉ định một phạm vi cổng tuần tự bằng cách tách cổng đầu và cổng kết thúc trong phạm vi bằng dấu gạch ngang. Ví dụ: nếu ứng dụng của ta sử dụng các cổng UDP 4990 đến 4999, ta có thể mở các cổng này trên "công khai" bằng lệnh :

  • sudo firewall-cmd --zone=public --add-port=4990-4999/udp

Sau khi thử nghiệm, ta có thể cần thêm chúng vào firewall vĩnh viễn. Bạn có thể thực hiện bằng cách gõ:

  • sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp
  • sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
  • sudo firewall-cmd --zone=public --permanent --list-ports
output
success success 5000/tcp 4990-4999/udp

Xác định một dịch vụ

Việc mở các cổng cho các khu vực của bạn rất dễ dàng, nhưng có thể khó theo dõi xem từng khu vực đó dùng để làm gì. Nếu bạn đã từng ngừng hoạt động một dịch vụ trên server của bạn , bạn có thể gặp khó khăn khi nhớ những cổng nào đã được mở vẫn được yêu cầu. Để tránh tình huống này, có thể xác định một dịch vụ.

Dịch vụ chỉ đơn giản là tập hợp các cổng có tên và mô tả liên quan. Sử dụng các dịch vụ dễ quản lý hơn các cổng, nhưng yêu cầu một chút công việc trả trước. Cách dễ nhất để bắt đầu là sao chép một tập lệnh hiện có (được tìm thấy trong /usr/lib/firewalld/services ) vào folder /etc/firewalld/services nơi firewall tìm kiếm các định nghĩa không chuẩn.

Ví dụ: ta có thể sao chép định nghĩa dịch vụ SSH để sử dụng cho định nghĩa dịch vụ “ví dụ” của ta như thế này. Tên file trừ hậu tố .xml sẽ chỉ ra tên của dịch vụ trong danh sách dịch vụ firewall :

  • sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml

Bây giờ, bạn có thể điều chỉnh định nghĩa được tìm thấy trong file bạn đã sao chép:

sudo vi /etc/firewalld/services/example.xml 

Để bắt đầu, file sẽ chứa định nghĩa SSH mà bạn đã sao chép:

/etc/firewalld/services/example.xml
<?xml version="1.0" encoding="utf-8"?> <service>   <short>SSH</short>   <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>   <port protocol="tcp" port="22"/> </service> 

Phần lớn định nghĩa này thực sự là metadata . Bạn cần thay đổi tên viết tắt của dịch vụ trong các <short> . Đây là tên mà con người có thể đọc được cho dịch vụ của bạn. Bạn cũng nên thêm mô tả để có thêm thông tin nếu bạn cần kiểm tra dịch vụ. Cấu hình duy nhất bạn cần thực hiện thực sự ảnh hưởng đến chức năng của dịch vụ có thể sẽ là định nghĩa cổng, nơi bạn xác định số cổng và giao thức bạn muốn mở. Điều này có thể được chỉ định nhiều lần.

Đối với dịch vụ “ví dụ” của ta , hãy tưởng tượng rằng ta cần mở cổng 7777 cho TCP và 8888 cho UDP. Bằng cách vào chế độ INSERT bằng cách nhấn i , ta có thể sửa đổi định nghĩa hiện có với thông tin như sau:

/etc/firewalld/services/example.xml
 <?xml version="1.0" encoding="utf-8"?> <service>   <short>Example Service</short>   <description>This is just an example service.  It probably shouldn't be used on a real system.</description>   <port protocol="tcp" port="7777"/>   <port protocol="udp" port="8888"/> </service> 

Nhấn ESC , sau đó nhập :x để lưu file .

Cập nhật firewall của bạn để có quyền truy cập vào dịch vụ mới của bạn:

  • sudo firewall-cmd --reload

Bạn có thể thấy rằng nó hiện nằm trong danh sách các dịch vụ có sẵn:

  • firewall-cmd --get-services
output
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch example freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

Đến đây bạn có thể sử dụng dịch vụ này trong khu vực của bạn như bình thường.

Tạo vùng của bạn

Mặc dù các vùng được định nghĩa có thể là quá đủ đối với hầu hết user , nhưng có thể hữu ích khi xác định các vùng của bạn mô tả rõ hơn về chức năng của chúng.

Ví dụ: bạn có thể cần tạo một vùng cho web server của bạn , được gọi là “publicweb”. Tuy nhiên, bạn có thể cần có một vùng khác được cấu hình cho dịch vụ DNS mà bạn cung cấp trên mạng riêng của bạn . Bạn có thể cần một vùng gọi là "privateDNS" cho điều đó.

Khi thêm vùng, bạn phải thêm vùng đó vào cấu hình firewall vĩnh viễn. Sau đó, bạn có thể reload để đưa cấu hình vào phiên đang chạy của bạn . Ví dụ: ta có thể tạo hai vùng mà ta đã thảo luận ở trên bằng lệnh :

  • sudo firewall-cmd --permanent --new-zone=publicweb
  • sudo firewall-cmd --permanent --new-zone=privateDNS

Bạn có thể xác minh chúng có trong cấu hình vĩnh viễn của bạn bằng lệnh :

  • sudo firewall-cmd --permanent --get-zones
output
block dmz drop external home internal privateDNS public publicweb trusted work

Như đã nêu trước đây, những điều này sẽ không khả dụng trong version hiện tại của firewall :

  • firewall-cmd --get-zones
output
block dmz drop external home internal public trusted work

Cập nhật firewall để đưa các vùng mới này vào cấu hình đang hoạt động:

  • sudo firewall-cmd --reload
  • firewall-cmd --get-zones
output
block dmz drop external home internal privateDNS public publicweb trusted work

Bây giờ, bạn có thể bắt đầu gán các dịch vụ và cổng thích hợp cho các khu vực của bạn . Thông thường, bạn nên điều chỉnh version đang hoạt động và sau đó chuyển những thay đổi đó sang cấu hình vĩnh viễn sau khi thử nghiệm. Ví dụ: đối với vùng “mạng công cộng”, bạn có thể cần thêm các dịch vụ SSH, HTTP và HTTPS:

  • sudo firewall-cmd --zone=publicweb --add-service=ssh
  • sudo firewall-cmd --zone=publicweb --add-service=http
  • sudo firewall-cmd --zone=publicweb --add-service=https
  • sudo firewall-cmd --zone=publicweb --list-all
output
publicweb target: default icmp-block-inversion: no interfaces: sources: services: ssh http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Tương tự như vậy, ta có thể thêm dịch vụ DNS vào vùng “privateDNS” của bạn :

  • sudo firewall-cmd --zone=privateDNS --add-service=dns
  • sudo firewall-cmd --zone=privateDNS --list-all
output
privateDNS interfaces: sources: services: dns ports: masquerade: no forward-ports: icmp-blocks: rich rules:

Sau đó, ta có thể thay đổi giao diện của bạn sang các khu vực mới này để kiểm tra chúng:

  • sudo firewall-cmd --zone=publicweb --change-interface=eth0
  • sudo firewall-cmd --zone=privateDNS --change-interface=eth1

Đến đây, bạn có cơ hội để kiểm tra cấu hình của bạn . Nếu các giá trị này phù hợp với bạn, bạn cần thêm các luật tương tự vào cấu hình vĩnh viễn. Bạn có thể thực hiện bằng cách áp dụng lại các luật với cờ --permanent :

  • sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh
  • sudo firewall-cmd --zone=publicweb --permanent --add-service=http
  • sudo firewall-cmd --zone=publicweb --permanent --add-service=https
  • sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns

Sau khi áp dụng vĩnh viễn các luật này, bạn có thể khởi động lại mạng và reload dịch vụ firewall của bạn :

  • sudo systemctl restart network
  • sudo systemctl reload firewalld

Xác thực rằng các khu vực chính xác đã được chỉ định:

  • firewall-cmd --get-active-zones
output
privateDNS interfaces: eth1 publicweb interfaces: eth0

Và xác nhận các dịch vụ thích hợp có sẵn cho cả hai khu vực:

  • sudo firewall-cmd --zone=publicweb --list-services
output
http https ssh
  • sudo firewall-cmd --zone=privateDNS --list-services
output
dns

Bạn đã cài đặt thành công vùng của riêng mình! Nếu bạn muốn đặt một trong những vùng này làm mặc định cho các giao diện khác, hãy nhớ cấu hình hành vi đó với tham số --set-default-zone= :

sudo firewall-cmd --set-default-zone=publicweb 

Kết luận

Đến đây bạn đã hiểu khá rõ về cách quản lý dịch vụ firewalld trên hệ thống CentOS của bạn để sử dụng hàng ngày.

Dịch vụ firewalld cho phép bạn cấu hình các luật có thể bảo trì và các bộ luật có tính đến môi trường mạng của bạn. Nó cho phép bạn chuyển đổi liền mạch giữa các policy firewall khác nhau thông qua việc sử dụng các vùng và cung cấp cho administrator khả năng tóm tắt việc quản lý cổng thành các định nghĩa dịch vụ thân thiện hơn. Có được kiến thức làm việc của hệ thống này sẽ cho phép bạn tận dụng sự linh hoạt và sức mạnh mà công cụ này cung cấp.


Tags:

Các tin liên quan

Cách thiết lập firewall bằng FirewallD trên CentOS 7
2015-06-18
Cách phát hiện bất thường với Skyline trên CentOS 7
2015-06-16
Cách cài đặt và cấu hình mod_deflate trên CentOS 7
2015-06-12
Cách hạn chế tài nguyên bằng cách sử dụng nhóm trên CentOS 6
2015-06-10
Cách phân tích chỉ số hệ thống với InfluxDB trên CentOS 7
2015-06-04
Cách quản lý / vv với Kiểm soát phiên bản bằng Etckeeper trên CentOS 7
2015-04-20
Cách cài đặt WordPress với OpenLiteSpeed trên CentOS 7
2015-04-16
Cách backup server CentOS 7 bằng Bacula
2015-04-13
Cách sử dụng MariaDB với Ứng dụng Django của bạn trên CentOS 7
2015-03-25
Cách thiết lập LEPP hai node trên CentOS 7
2015-03-19