您好,欢迎来到站长目录(28sn.com)!


CentOS7系统的Firewalld防火墙基础详解

来源:网络整理 浏览:147次 时间:2020-03-26
Firewalld简介

支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具,支持IPv4、IPv6防火 墙设置以及以太网桥,支持服务或应用程序直接添加防火墙规则接口。

拥有两种配置模式

1.运行时配置

2.永久配置

Firewalld和iptables的关系netfilter:

位于Linux内核中的包过滤功能体系称为Linux防火墙的“内核态”

Firewalld/iptables:

CentOS7默认的管理防火墙规则的工具(Firewalld)称为Linux防火墙的“用户态”

CentOS7系统的Firewalld防火墙基础详解

Firewalld和iptables的区别:Firewalldiptables配置文件/us/ib/firewalld/、 /etc/sysconfig/iptables/etc/firewalld/对规则的修改不需要全部刷新策略,不丢失现行连接需要全部刷新策略,丢失连接防火墙类型动态防火墙静态防火墙Firewalld网络区域区域介绍:
  • 区域如同进入主机的安全门,每个区域都具有不同限制程度的规则;
  • 可以使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口;
  • 默认情况下,public区域是默认区域,包含所有接口(网卡)。
区域描述drop (丢弃)任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接block (限制)任何接收的网络连接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited信息所拒绝public (公共)在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接external (外部)特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接dmz (非军事区)用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接work (工作)用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接home (家庭)用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接internal (内部)用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接trusted (信任)可接受所有的网络连接Firewalld数据处理流程:

检查数据来源的源地址

  • 若源地址关联到特定的区域,则执行该区域所指定的规则;
  • 若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所指定的规则;
  • 若网络接口未关联到特定的区域,则使用默认区域并执行该区域所指定的规则。
Firewalld防火墙的配置方法运行时配置
  • 实时生效,并持续至Firewalld重新启动或重新加载配置
  • 不中断现有连接
  • 不能修改服务配置
永久配置
  • 不立即生效,除非Firewalld重新启动或重新加载配置
  • 中断现有连接
  • 可以修改服务配置
/etc/firewalld/中的配置文件

Firewalld会优先使用/etc/firewalld/中的配置,如果不存在配置文件,则使用/usr/lib/firewalld/中的配置

  • /etc/firewalld/:用户自定义配置文件,需要时可通过从/usr/ib/firewalld/中拷贝
  • /usr/lib/firewalld/:默认配置文件,不建议修改,若恢复至默认配置,可直接删除/etc/firewalld/中的配置
Firewall-config图形工具

输入"firewall-config"命令,进入图形工具。

CentOS7系统的Firewalld防火墙基础详解

当我们配置完毕后,需要重载防火墙才能才能生效,在重载防火墙前一定要将Runtime设定为永久配置,不然之前配置的运行时配置会直接删除,如果你配的就是永久,直接重载即可。

CentOS7系统的Firewalld防火墙基础详解

我们可以选择配置防火墙规则的网卡、接口等,同时也能根据服务、端口、协议等进行访问限制。图形工具简洁方便,就不多做介绍了。
CentOS7系统的Firewalld防火墙基础详解

Firewall-cmd命令行工具

(1)启动、停止、查看 firewalld 服务

在安装 CentOS7 系统时,会自动安装 firewalld 和图形化工具 firewall-config。执行 以下命令可以启动 firewalld 并设置为开机自启动状态。

[root@localhost ~]# systemctl start firewalld          //启动 firewalld [root@localhost ~]# systemctl enable firewalld    //设置 firewalld 为开机自启动 

如果 firewalld 正在运行,通过 systemctl status firewalld 或 firewall-cmd 命令可以查看其运行状态。

[root@localhost ~]# systemctl status firewalld                //查看状态● firewalld.service - firewalld - dynamic firewall daemon   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)   Active: active (running) since 一 2019-10-14 10:04:49 CST; 5h 59min ago     Docs: man:firewalld(1) Main PID: 633 (firewalld)   CGroup: /system.slice/firewalld.service           └─633 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid10月 14 10:04:45 localhost.localdomain systemd[1]: Starting firewalld - dynamic fi....10月 14 10:04:49 localhost.localdomain systemd[1]: Started firewalld - dynamic fir....10月 14 10:04:49 localhost.localdomain firewalld[633]: WARNING: ICMP type 'beyond-....10月 14 10:04:49 localhost.localdomain firewalld[633]: WARNING: beyond-scope: INVA....10月 14 10:04:49 localhost.localdomain firewalld[633]: WARNING: ICMP type 'failed-....10月 14 10:04:49 localhost.localdomain firewalld[633]: WARNING: failed-policy: INV....10月 14 10:04:49 localhost.localdomain firewalld[633]: WARNING: ICMP type 'reject-....10月 14 10:04:49 localhost.localdomain firewalld[633]: WARNING: reject-route: INVA....Hint: Some lines were ellipsized, use -l to show in full.[root@localhost ~]# firewall-cmd --state                         //查看状态running[root@localhost ~]# 

如果想要禁用 firewalld,执行以下命令即可实现。

[root@localhost ~]# systemctl stop firewalld          //停止 firewalld [root@localhost ~]#systemctl disable firewalld    //设置 firewalld 开机不自启动

(2)获取预定义信息

firewall-cmd 预定义信息主要包括三种:可用的区域、可用的服务以及可用的 ICMP 阻塞类型,具体的查看命令如下所示。

[root@localhost ~]# firewall-cmd --get-zones                   //显示预定义的区域block dmz drop external home internal public trusted work[root@localhost ~]# firewall-cmd --get-services              //显示预定义的服务RH-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 open*** 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[root@localhost ~]# firewall-cmd --get-icmptypes         //显示预定义的 ICMP 类型address-unreachable bad-header communication-prohibited destination-unreachable echo-reply echo-request fragmentation-needed host-precedence-violation host-prohibited host-redirect host-unknown host-unreachable ip-header-bad neighbour-advertisement neighbour-solicitation network-prohibited network-redirect network-unknown network-unreachable no-route packet-too-big parameter-problem port-unreachable precedence-cutoff protocol-unreachable redirect required-option-missing router-advertisement router-solicitation source-quench source-route-failed time-exceeded timestamp-reply timestamp-request tos-host-redirect tos-host-unreachable tos-network-redirect tos-network-unreachable ttl-zero-during-reassembly ttl-zero-during-transit unknown-header-type unknown-option[root@localhost ~]# 

firewall-cmd --get-icmptypes 命令的执行结果中各种阻塞类型的含义分别如下所示:

destination-unreachable:目的地址不可达 echo-reply:应答回应(pong)parameter-problem:参数问题redirect:重新定向 router-advertisement:路由器通告router-solicitation:路由器征寻source-quench:源端抑制time-exceeded:超时timestamp-reply:时间戳应答回应timestamp-request:时间戳请求

(3)区域管理

使用 firewall-cmd 命令可以实现获取和管理区域,为指定区域绑定网络接口等功能。

选项说明:

--get-default-zone 显示网络连接或接口的默认区域 --set-default-zone=<zone> 设置网络连接或接口的默认区域 --get-active-zones 显示已激活的所有区域 --get-zone-of-interface=<interface> 显示指定接口绑定的区域 --zone=<zone> --add-interface=<interface> 为指定接口绑定区域 --zone=<zone> --change-interface=<interface> 为指定的区域更改绑定的网络接口 --zone=<zone> --remove-interface=<interface> 为指定的区域删除绑定的网络接口 --list-all-zones 显示所有区域及其规则 [--zone=<zone>] --list-all 显示所有指定区域的所有规则,省略--zone=<zone>时表示仅对默认区域操作

具体操作如下所示:

  • 显示当前系统中的默认区域。
[root@localhost ~]# firewall-cmd --get-default-zone public[root@localhost ~]# 
  • 显示默认区域的所有规则。
[root@localhost ~]# firewall-cmd --list-allpublic (active)  target: default  icmp-block-inversion: no  interfaces: ens33  sources:   services: ssh dhcpv6-client  ports:   protocols:   masquerade: no  forward-ports:   source-ports:   icmp-blocks:   rich rules: [root@localhost ~]#
  • 显示网络接口 ens33 对应区域。
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33public[root@localhost ~]#
  • 将网络接口 ens33 对应区域更改为 internal 区域并查看。
[root@localhost ~]# firewall-cmd --zone=internal --change-interface=ens33The interface is under control of NetworkManager, setting zone to 'internal'.success[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33internal[root@localhost ~]# firewall-cmd --zone=internal --list-interfaces ens33[root@localhost ~]#  
  • 显示所有激活区域。
[root@localhost ~]# firewall-cmd --get-active-zones internal  interfaces: ens33[root@localhost ~]# 

(4)服务管理

为 了 方 便 管 理 , firewalld 预 先 定 义 了 很 多 服 务 , 存 放 在 /usr/lib/firewalld/services/ 目录中,服务通过单个的 XML 配置文件来指定。这些配置文件则按以下格式命名:service-name.xml,每个文件对应一项具体的网络服务,如 ssh 服 务等。

选项说明:

[--zone=<zone>] --list-services 显示指定区域内允许访问的所有服务 [--zone=<zone>] --add-service=<service> 为指定区域设置允许访问的某项服务 [--zone=<zone>] --remove-service=<service> 删除指定区域已设置的允许访问的某项服务 [--zone=<zone>] --list-ports 显示指定区域内允许访问的所有端口号 [--zone=<zone>] --add-port=<portid>[-<portid>]/<protocol> 为指定区域设置允许访问的某个/某段端口号 (包括协议名) [--zone=<zone>] --remove-port=<portid>[-<portid>]/<protocol> 删除指定区域已设置的允许访问的端口号(包括协议名) [--zone=<zone>] --list-icmp-blocks 显示指定区域内拒绝访问的所有 ICMP 类型 [--zone=<zone>] --add-icmp-block=<icmptype> 为指定区域设置拒绝访问的某项 ICMP 类型 [--zone=<zone>] --remove-icmp-block=<icmptype> 删除指定区域已设置的拒绝访问的某项 ICMP 类型,省略--zone=<zone>时表示对默认区域操作 

具体操作如下所示:

  • 为默认区域设置允许访问的服务。
[root@localhost ~]# firewall-cmd --list-services    //显示默认区域内允许访问的所有服务 ssh dhcpv6-client[root@localhost ~]# firewall-cmd --add-service=http   //设置默认区域允许访问 http 服务success[root@localhost ~]# firewall-cmd --add-service=https   //设置默认区域允许访问 https 服务success[root@localhost ~]# firewall-cmd --list-services   //显示默认区域内允许访问的所有服务ssh dhcpv6-client http https[root@localhost ~]#
  • 为 internal 区域设置允许访问的服务。
[root@localhost ~]# firewall-cmd --zone=internal --add-service=mysql    //设置 internal 区域允许访问 mysql 服务success[root@localhost ~]# firewall-cmd --zone=internal --remove-service=samba-client    //设置 internal 区域不允许访问 samba-client 服务success[root@localhost ~]# firewall-cmd --zone=internal --list-services   //显示 internal 区域内允许访问的所有服务 ssh mdns dhcpv6-client mysql[root@localhost ~]# 

(5)端口管理

在进行服务配置时,预定义的网络服务可以使用服务名配置,服务所涉及的端口就会自 动打开。但是,对于非预定义的服务只能手动为指定的区域添加端口。例如,执行以下操作 即可实现在 internal 区域打开 443/TCP 端口。

[root@localhost ~]# firewall-cmd --zone=internal --add-port=443/tcpsuccess[root@localhost ~]# 

若想实现在 internal 区域禁止 443/TCP 端口访问,可执行以下命令。

[root@localhost ~]# firewall-cmd --zone=internal --remove-port=443/tcpsuccess[root@localhost ~]#

(6)两种配置模式

前面提到 firewall-cmd 命令工具有两种配置模式:运行时模式(Runtime mode)表示 当前内存中运行的防火墙配置,在系统或 firewalld 服务重启、停止时配置将失效;永久模 式(Permanent mode)表示重启防火墙或重新加载防火墙时的规则配置,是永久存储在配置 文件中的。

firewall-cmd 命令工具与配置模式相关的选项有三个:

--reload:重新加载防火墙规则并保持状态信息,即将永久配置应用为运行时配置 --permanent:带有此选项的命令用于设置永久性规则,这些规则只有在重新启动firewalld 或重新加载防火墙规则时才会生效;若不带有此选项,表示用于设置运行时 规则。 --runtime-to-permanent:将当前的运行时配置写入规则配置文件中,使之成为永久性 
Firewall-cmd命令总结:选项说明--get-default-zone显示网络连接或接口的默认区域--set-default-zone= <zone>设置网络连接或接口的默认区域--get-active -zones显示已激活的所有区域--get-zone-of-interface= <interface>显示指定接口绑定的区域--zone= <zone> --add-interface= <interface>为指定接口绑定区域--zone= <zone> --change-interface= <interface>为指定的区域更改绑定的网络接口--zone= <zone> --remove-interface= <interface>为指定的区域删除绑定的网络接口--query-interface= <interface>查询区域中是否包含某接口--list-all-zones显示所有区域及其规则[--zone= <zone>] --list-all显示所有指定区域的所有规则[--zone= <zone>] --list-services显示指定区域内允许访问的所有服务[--zone= <zone>] --add-service= <service>为指定区域设置允许访问的某项服务[--zone= <zone>] --remove-service= <service>删除指定区域已设置的允许访问的某项服务[--zone= <zone>] --query-service= <service>查询指定区域中是否启用了某项服务[--zone= <zone>] --list-ports显示指定区域内允许访问的所有端口号[--zone= <zone>] --add-port= <port>[-<port> ]/ <protocol> [--timeout= <seconds>]启用区域端口和协议组合,可选配置超时时间[--zone= <zone>] --remove-port= <port>[-<port>]/<protocol>禁用区域端口和协议组合[--zone= <zone>] --query-port=<port>[-<port> ]/<protocol>查询区域中是否启用了端口和协议组合[--zone= <zone>] --list-icmp-blocks显示指定区域内阻塞的所有ICMP类型[--zone= <zone>] --add-icmp-block= <icmptype>为指定区域设置阻塞的某项ICMP类型[--zone= <zone>] --remove-icmp-block= <icmptype>删除指定区域已阻塞的某项ICMP类型[--zone= <zone>] --query-icmp-block= <icmptype>查询指定区域的ICMP阻塞功能

推荐站点

  • 我爱发烧音乐我爱发烧音乐

    我爱发烧音乐囊括了从流行音乐到古典音乐多个类型的音乐作品,专栏推荐最新的音乐,提供音乐排名榜单!可供免费线上收听音乐,歌曲流畅,音效极佳! 网站提供的钢琴以及二胡专栏,可供收听者,陶冶情操,改善心情,是难得的轻音乐典藏!

    www.520fs.com
  • 世纪音乐网世纪音乐网

    世纪音乐网是专业的在线音乐试听MP3下载网站。歌曲总计30余万首,收录了网上最新歌曲和流行音乐,DJ舞曲,非主流音乐,经典老歌,劲舞团歌曲,搞笑歌曲,儿童歌曲,英文歌曲等。是您上网听歌的最佳网站。

    www.ssjj.com
  • 怒江大峡谷网怒江大峡谷网

    怒江大峡谷网内容包括:新闻、要闻、怒江报、视频、文化、民俗、人文、音乐、政务、公告、政策等地方信息。

    www.nujiang.cn
  • 杭州网杭州网

      杭州网是杭州地区唯一的新闻门户网站,由中共杭州市委宣传部、杭州日报报业集团和杭州广播电视集团共同组建的杭州网络传媒有限公司运营。

    www.hangzhou.com.cn
  • 深圳在线深圳在线

      深圳在线 www.szol.net是深圳本地最大、最早的地方生活资讯网站之一,网站名“深圳在线www.szol.net”由南方报业传媒集团编辑委员会总编辑、南方日报社总编辑、南方都市报总编辑、南方书画院名誉院长王春芙亲笔题名,深圳在线www.szol.net团队与深圳热线www.szonline.net、奥一网www.oeeee.com都源于全国最早成立于1996年的知名网络公司——深圳万用网。

    www.szol.net

鄂公网安备 42062502000001号