天天看點

CentOS7下firewallD簡單上手

FirewallD 是 CentOS 7 伺服器上預設可用的防火牆管理工具。基本上,它是 iptables 的封裝,有圖形配置工具firewall-config和指令行工具firewall-cmd。使用 iptables 服務,每次改動都要求重新整理舊規則,并且從/etc/sysconfig/iptables讀取新規則,然而 firewalld 隻應用改動了的不同部分。
CentOS7下firewallD簡單上手

FirewallD 的區域(zone)

FirewallD 使用服務(service) 和區域(zone)來代替 iptables 的規則(rule)和鍊(chain)。

預設情況下,有以下的區域(zone)可用:

  1. drop – 丢棄所有傳入的網絡資料包并且無回應,隻有傳出網絡連接配接可用。
  2. block — 拒絕所有傳入網絡資料包并回應一條主機禁止的 ICMP 消息,隻有傳出網絡連接配接可用。
  3. public — 隻接受被選擇的傳入網絡連接配接,用于公共區域。
  4. external — 用于啟用了位址僞裝的外部網絡,隻接受標明的傳入網絡連接配接。
  5. dmz — DMZ 隔離區,外部受限地通路内部網絡,隻接受標明的傳入網絡連接配接。
  6. work — 對于處在你工作區域内的計算機,隻接受被選擇的傳入網絡連接配接。
  7. home — 對于處在你家庭區域内的計算機,隻接受被選擇的傳入網絡連接配接。
  8. internal — 對于處在你内部網絡的計算機,隻接受被選擇的傳入網絡連接配接。
  9. 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://www.linuxprobe.com/centos7-firewalld-guide.html

繼續閱讀