CentOS 7.6 Firewalld防火墙基础与配置

一、概述

Firewalld防火墙是CentOS 7版本系统默认的防火墙管理工具,取代了之前的iptables防火墙,与iptables防火墙一样也属于典型的包过滤防火墙或称之为网络层防火墙,firewalld和iptables都是用来管理防火墙的的工具(属于用户态)来定义防火墙的各种规则功能,内部结构都指向netfilter这一强大的网络过滤子系统(属于内核态)以实现包过滤防火墙功能

二、特点

  • 支持动态更新
  • 同时支持ipv4和ipv6
  • 可以通过字符管理工具(Firewall-cmd)和图形化管理工具(Firewall-config)进行管理
  • 加入了“zone”(区域)的概念

三、Firewall的区域

防火墙为了简化管理,将所有网络流量分为多个区域(zone),然后根据数据包的源ip地址或传入的网络接口条件等将流量传入相应区域,每个区域都定义了自己打开或者关闭的端口和服务列表。其中默认区域为public

区域名称 默认配置说明
Trusted 允许所有的传入流量
Block 拒绝所有传入流量
Drop 丢弃所有传入流量
Public 允许与ssh、dhcpv6-client预定义服务匹配的传入流量,其余都拒绝,也是新添加网络接口的默认区域
Home 允许与ssh、mdns、ipp-client、samba-client、dhcpv6-client预定义服务匹配的传入流量,其余都拒绝
Work 允许与ssh、ipp-client、dhcpv6-client预定义服务匹配的传入流量,其余都拒绝
Internal 默认值时与home相同
External 允许与ssh预定义服务匹配的传入流量,其余都拒绝;默认将进过此区域转发的ipv4地址传出流量进行地址伪装
Dmz 允许与ssh预定义服务匹配的传入流量,其余都拒绝

四、字符管理工具(firewall-cmd)

Firewall-cmd是Firewalld防火墙自带的字符管理工具,可以用来设置Firewalld防火墙的各种规则,但Firewalld防火墙规则分为两种状态,runtime和permanent。

  • runtime:运行时配置,即时生效,但重启或重载后失效

  • permanent:永久配置,不及时生效,需要reload

在使用firewall-cmd命令管理防火墙时,需要添加为永久生效的规则需在配置规则时添加–permanent选项,如果要让这个规则立即生效,还要使用firewall-cmd --reload命令重新加载防火墙配置

firewall-cmd命令 说明
–get-default-zone 查看当前默认区域
–get-active-zones 列出当前正在使用的区域及其所对应的网卡接口
–get-zones 列出所有可用的区域
–set-default-zone=<zone> 设置默认区域(会同时修改运行时配置和永久配置)
–add-source=<ip地址> --zone=<zone> 将来自ip地址或网段的所有流量路由到指定区域,没有指定为默认区域
–remove-source=<ip地址> --zone=<zone> 从指定区域中删除来自ip地址或网段的所有路由流量规则,没有指定为默认区域
–add-interface=<interface> --zone=<zone> 将来自该接口的所有流量都路由到指定区域,没有指定为默认区域
–change-interface=<interface> --zone=<zone> 将接口与指定区域做关联,没有指定为默认区域
–list-all --zone=<zone> 列出指定区域已配置接口、源、服务、端口等信息,没有指定为默认区域
–add-service<service> --zone=<zone> 允许到该服务的流量通过指定区域,没有指定为默认区域
–remove-service<service> --zone=<zone> 从指定区域的允许列表中删除该服务,没有指定为默认区域
–add-port<port/Protocol> --zone=<zone> 允许到该端口的流量通过指定区域,没有指定为默认区域
–remove-port<port/Protocol> --zone=<zone> 从指定区域的允许列表中删除该端口,没有指定为默认区域

1、配置管理

(1)区域管理

查看默认区域

[root@server ~]# firewall-cmd --get-default-zone 
public

查看当前活动区域和接口网卡

[root@server ~]# firewall-cmd --get-active-zones 
public
  interfaces: ens33

查看所有区域

[root@server ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

设置默认区域

[root@server ~]# firewall-cmd --set-default-zone=work
success

[root@server ~]# firewall-cmd --get-default-zone 
work

(2)服务管理

查看预定义服务

[root@server ~]# firewall-cmd --get-services 
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry docker-swarm dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls managesieve mdns minidlna mongodb mosh mountd ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

查看public区域的详细信息

[root@server ~]# firewall-cmd --list-all --zone=public 
public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

把http服务加入到public区域中,永久生效

[root@server ~]# firewall-cmd --add-service=http --zone=public --permanent
success
[root@server ~]# firewall-cmd --reload 
success
[root@server ~]# firewall-cmd --list-all --zone=public 
public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh dhcpv6-client http
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

把http服务从public区域中永久移除

[root@server ~]# firewall-cmd --remove-service=http --zone=public --permanent
success
[root@server ~]# 
[root@server ~]# firewall-cmd --reload 
success

在默认区域中添加http和https2个服务

[root@server ~]# firewall-cmd --add-service=http --add-service=https
success
[root@server ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client http https
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

(3)端口管理

在默认区域中添加tcp的3306端口

[root@server ~]# firewall-cmd --add-port=3306/tcp
success
[root@server ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client http https
  ports: 3306/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	
[root@server ~]# firewall-cmd --remove-port=3306/tcp
success

在默认区域中添加udp端口2048-2050

[root@server ~]# firewall-cmd --add-port=2048-2050/udp
success
[root@server ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client http https
  ports: 2048-2050/udp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

(4)综合配置实例

例1:将默认区域设置为dmz区域,来自192.168.100.0网段的流量全部分配给internal区域,并且打开internal区域的80端口供用户访问

[root@server ~]# firewall-cmd --set-default-zone=dmz
success
[root@server ~]# firewall-cmd --add-source=192.168.100.0/24 --zone=internal --permanent
success
[root@server ~]# firewall-cmd --add-service=http --zone=internal --permanent
success
[root@server ~]# firewall-cmd --reload 
success


[root@server ~]# firewall-cmd --list-all
dmz (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	
[root@server ~]# firewall-cmd --list-all --zone=internal 
internal (active)
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 192.168.100.0/24
  services: ssh mdns samba-client dhcpv6-client http
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

五、图形管理工具(firewall-config)

除了字符管理工具以外,firewalld防火墙还提供了图形管理工具firewall-config,可用于查看和更改firewalld防火墙正在运行时的配置和永久的配置,可以使用firewall-config软件包
进行安装使用,安装好后,可以直接使用firewall-config命令启动图形管理工具,或者从菜单“应用程序”→“杂项”→“防火墙”启动,如图:

在这里插入图片描述
在这里插入图片描述
例1:配置防火墙的端口转发功能,将访问本地默认区域的80端口临时转发到8080端口
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/shengjie87/article/details/107759486