FirewallD 是 CentOS 7 站群伺服器上預設可用的防火牆管理工具。基本上,它是 iptables 的封裝,有圖形配置工具 firewall-config 和命令列工具 firewall-cmd 。使用 iptables 服務,每次改動都要求重新整理舊規則,並且從 /etc/sysconfig/iptables 讀取新規則,然而 firewalld 只應用改動了的不同部分。
FirewallD 的區域(zone)
FirewallD 使用服務(service)和區域(zone)來代替 iptables 的規則(rule)和鏈(chain)。
預設情況下,有以下的區域(zone)可用:
drop – 丟棄所有傳入的網際網路資料包並且無回應,只有傳出網際網路連線可用。
block — 拒絕所有傳入網際網路資料包並回應一條 WordPress 主機禁止的 ICMP 訊息,只有傳出網際網路連線可用。
public — 只接受被選擇的傳入網際網路連線,用於公共區域。
external — 用於啟用了地址偽裝的外部網際網路,只接受選定的傳入網際網路連線。
dmz — DMZ 隔離區,外部受限地訪問內部網際網路,只接受選定的傳入網際網路連線。
work — 對於處在你工作區域內的計算機,只接受被選擇的傳入網際網路連線。
home — 對於處在你家庭區域內的計算機,只接受被選擇的傳入網際網路連線。
internal — 對於處在你內部網際網路的計算機,只接受被選擇的傳入網際網路連線。
trusted — 所有網際網路連線都接受。
要列出所有可用的區域,執行:
# firewall-cmd –get-zones
work drop internal external trusted home dmz public block
列出預設的區域 :
# firewall-cmd –get-default-zone
public
改變預設的區域 :
# firewall-cmd –set-default-zone=dmz
# firewall-cmd –get-default-zone
dmz
FirewallD 服務
FirewallD 服務使用 XML 配置檔案,記錄了 firewalld 服務資訊。
列出所有可用的服務:
# firewall-cmd –get-services
amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap 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
XML 配置檔案儲存在 /usr/lib/firewalld/services/ 和 /etc/firewalld/services/ 目錄下。
用 FirewallD 配置你的防火牆
作為一個例子,假設你正在執行一個 web 站群伺服器,SSH 服務埠為 7022 ,以及郵件服務,你可以利用 FirewallD 這樣配置你的站群伺服器:
首先設定預設區為 dmz 。
# firewall-cmd –set-default-zone=dmz
# firewall-cmd –get-default-zone
dmz
為 dmz 區新增永續性的 HTTP 和 HTTPS 規則:
# firewall-cmd –zone=dmz –add-service=http –permanent
# firewall-cmd –zone=dmz –add-service=https –permanent
開啟埠 25 (SMTP) 和埠 465 (SMTPS) :
firewall-cmd –zone=dmz –add-service=smtp –permanent
firewall-cmd –zone=dmz –add-service=smtps –permanent
開啟 IMAP 、 IMAPS 、 POP3 和 POP3S 埠:
firewall-cmd –zone=dmz –add-service=imap –permanent
firewall-cmd –zone=dmz –add-service=imaps –permanent
firewall-cmd –zone=dmz –add-service=pop3 –permanent
firewall-cmd –zone=dmz –add-service=pop3s –permanent
因為將 SSH 埠改到了 7022,所以要移除 ssh 服務(埠 22),開啟埠 7022:
firewall-cmd –remove-service=ssh –permanent
firewall-cmd –add-port=7022/tcp –permanent
要應用這些更改,我們需要重新載入防火牆:
firewall-cmd –reload
最後可以列出這些規則:
# firewall-cmd –list-all
dmz
target: default
icmp-block-inversion: no
interfaces:
sources:
services: http https imap imaps pop3 pop3s smtp smtps
ports: 7022/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
原文連結:https://linux.cn/article-8323-1.html