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-prohibitedicmp6-adm-prohibitedhoặcicmp6-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 
outputrunning Đ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 
outputpublic 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 
outputpublic   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  ( eth0 và eth1 ). 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 
outputpublic (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 eth0 và eth1 đượ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 
outputblock 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 
outputhome   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 
outputsuccess 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 
outputhome   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 
outputsuccess Đặ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 
outputRH-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  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:
<?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 
outputdhcpv6-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 
outputsuccess 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 
outputdhcpv6-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 
outputsuccess  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 
output5000/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 
outputsuccess 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:
<?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:
 <?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 
outputRH-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 
outputblock 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 
outputblock 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 
outputblock 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 
outputpublicweb   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 
outputprivateDNS   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 
outputprivateDNS   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 
outputhttp https ssh - sudo firewall-cmd --zone=privateDNS --list-services 
outputdns 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.
Các tin liên quan
Cách thiết lập firewall bằng FirewallD trên CentOS 72015-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
 

