支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具
支持IPv4、IPv6 防火墙设置以及以太网桥
支持服务或应用程序直接添加防火墙规则接口
拥有两种配置模式
firewalld防火墙为了简化管理,将所有网络流量分为多个区域(zone)。然后根据数据包的源IP地址或传入的网络接口条件等将流量传入相应区域。每个区域都定义了自己打开或关闭的端口和服务列表。
区域名称 | 默认配置说明 |
---|---|
drop(丢弃) | 任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接 |
block(限制) | 人和接受的网络连接都被IPv4的imcp-host-prohibited 信息和IPv6的icmp6-adm-prohibited 信息所拒绝 |
public(公共) | 在公共区域内使用,不能详细网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的内容 |
external(外部) | 特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算机,不能相信他们不会对您的计算机造成危害,只能接收经过选择的链接 |
dmz(非军事区) | 用于您的非军事区内的电脑,此区域内可公开访问,可以有限的进入您的内部网络,仅仅接收经过选择的链接 |
work(工作) | 用于工作区。您可以基本详细网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的链接 |
home(家庭) | 用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的链接 |
internal(内部) | 用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接收经过选择的连接 |
trusted(信任) | 可接受所有的网络连接 |
检查数据来源的源地址
使用工具或者操作去管理进程和服务
进程服务去控制封装的iptables命令,间接的去管理内核中的netfiler
真正能跟netfilter交互的是iptables,firewalld去管理iptables
区别 | firewalld | iptables |
---|---|---|
配置文件 | /usr/lib/firewalld/ /etc/firewalld | etc/firewalld /etc/sysconfig/iptables |
对规则的修改 | 不需要全部刷新策略,不丢失现行连接 | 需要全部刷新策略,丢失连接 |
防火墙类型 | 动态防火墙 | 静态防火墙 |
firewall-cmd是firewalld防火墙自带的字符管理工具,可以用来设置firewalld防火墙的各种规则
在使用firewall-cmd命令管理防火墙时,需要添加为永久生效的规则需在配置规则时添加–permanent选项(否则所有命令都是作用于runtime,运行时配置)
如果让永久生效规则立即覆盖当前规则生效使用,还需要使用firewall-cmd --reload命令重新加载防火墙配置。
firewall-config 是图形化工具
firewall-cmd 是字符命令
命令选项 | 说明 |
---|---|
–get-default-zone | 显示网络连接或接口的默认区域 |
–set-default-zone=区域类型 | 设置网络连接或接口的默认区域 |
–get-active-zones | 显示已激活的所有区域 |
–get-zone-of-interface=接口(网卡) | 显示指定接口绑定的区域 |
–zone=区域类型 --add-interface=接口(网卡) | 为指定接口绑定区域 |
–zone=区域类型 --change-interface=接口(网卡) | 为指定的区域更改绑定的网络接口 |
–zone=区域类型 --remove-interface=接口(网卡) | 为指定的区域删除绑定的网络接口 |
–query-interface=接口(网卡) | 查询区域中是否包含某接口 |
–list-all-zones | 显示所有区域及其规则 |
[–zone=区域类型] --list-all | 显示所有指定区域的所有规则 |
[root@localhost ~]# firewall-cmd --get-default-zone
public
[root@localhost ~]# firewall-cmd --get-active-zone
public
interfaces: ens33
[root@localhost ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
[root@localhost ~]# firewall-cmd --set-default-zone=home
success
[root@localhost ~]# firewall-cmd --get-default-zone
home
[root@localhost ~]# firewall-cmd --get-service
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 open 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
[root@localhost ~]# firewall-cmd --add-service=http --zone=public --permanent //加permanent是指永久配置,不加表示即时生效的临时配置
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --list-all --zone=public
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client http
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@localhost ~]# firewall-cmd --remove-service=httpd --permanent
success
也可以同时添加多个服务
[root@localhost ~]# firewall-cmd --add-service=httpd --add-service=https
success
[root@localhost ~]# firewall-cmd --add-port=3360/tcp
success
[root@localhost ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client http https
ports: 3360/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@localhost ~]# firewall-cmd --remove-port=3360/tcp
success
[root@localhost ~]# firewall-cmd --add-port=2048-2050/udp
success
[root@localhost ~]# firewall-cmd --list-ports
2048-2050/udp
设置新的防火墙规则,并设置为永久时,我们需要使用“firewall-cmd --reload”重载防火墙,在图形界面设置如图所示。