Linux Firewalld防火墙——图形界面及字符管理介绍

Firewalld防火墙

防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。

支持网络区域所定义的网络连接以及接口安全等级的动态防火墙工具。
支持IPv4、IPv6防火墙设置及以太网桥
拥有两种配置模式
1、运行时配置
实时生效,并一直持续到Firewalld重新启动或者reload
不中断现有连接
不能修改服务配置

2、永久配置
不立即生效,除非Firewalld重启或者reload
中断现有的连接
可以修改服务配置


1、从CentOS7开始,默认使用firewall来配置防火墙,没有安装iptables(旧版默认安装)。
2、firewall的配置文件是以xml的格式,存储在 /usr/lib/firewalld/ 和 /etc/firewalld/ 目录中。
 (1)系统配置目录,目录中存放定义好的网络服务和端口参数,系统参数,不要修改。

1 /usr/lib/firewalld/
2 /usr/lib/firewalld/services
3 /usr/lib/firewalld/zones

(2)用户配置目录

1 /etc/firewalld/
2 /etc/firewalld/services
3 /etc/firewalld/zones

Firewalld和iptables关系

netfilter
位于Linux内核中的包过滤功能体系
成为Linux防火墙的“内核态”
Firewalld/iptables
CentOS7默认的管理防火墙规则的工具
称为Linux防火墙的“用户态”
在这里插入图片描述个人理解:
firewalld是centos7里面的新的防火墙命令,它底层还是使用 iptables 对内核命令动态通信包过滤的,简单理解就是firewall是centos7下管理iptables的新命令

两者区别

Firewalldiptables
配置文件位置/usr/firewalld/ect/sysconfig/iptables
/etc/firewalld
对规则的修改不需要全部刷新策略,不丢失现行连接需要全部刷新策略,丢失连接
防火墙类型动态防火墙静态防火墙

firewalld修改后不需要重启服务,iptables需要重启服务

区域

区域就像是进入服务器的安检机,每个区域都具有不同限制程度的规则
可以使用一个或多个区域,但是任何一个活跃区域都要有关联源IP或者网卡接口
一般情况下,public(公共区域)是默认区域,包含所有接口

区域介绍

drop: 丢弃所有进入的包,而不给出任何响应
block: 拒绝所有外部发起的连接,允许内部发起的连接
public: 允许指定的进入连接
external: 同上,对伪装的进入连接,一般用于路由转发
dmz: 允许受限制的进入连接
work: 允许受信任的计算机被限制的进入连接,类似 workgroup
home: 同上,类似 homegroup
internal: 同上,范围针对所有互联网用户
trusted: 信任所有连接

Firewalld数据处理过程

检查数据来源的源地址
若地址关联到区域,则开始执行关联区域的所指定规则
若地址没关联到区域,则用传入数据的网络接口的区域并执行 该区域的规则
若网络接口为关联到指定区域,则使用默认的区域并执行该区域所制定的规则

Firewalld防火墙的配置方法

Firewall-config图形工具
Firewall-cmd命令行工具
/etc/firewalld/中的配置文件
Firewalld会优先使用 /etc/Firewalld/ 中的配置,若不存在配置文件,则使用 /usr/lib/firewalld/ 中的配置
/etc/firewalld/ :用户自定义配置文件,需要是可通过从 /usr/lib/firewalld/ 中拷贝
/usr/lib/firewalld/ :默认配置文件,不建议修改,若恢复至默认,可直接删除 /etc/firewalld/ 中的配置

Firewall-config图形工具演示

打开图形化管理界面

可以使用 Xshell,也可以在CentOS7的伪终端中使用

下为 Xshell 打开的 Xmanager 与系统防火墙同步
在这里插入图片描述下为系统中打开的 图形管理工具
在这里插入图片描述

根据要求进行配置修改

服务器IP:20.0.0.139
客户机1IP:20.0.0.132 7.2
客户机2IP:20.0.0.135 5papche

需求描述:
1 禁止主机 ping 服务器
2 仅允许 20.0.0.132 使用 shh远程登录
3 允许所有主机访问网页服务(apache)

分析:
一、ping命令是使用ICMP协议,所以直接一点把ICMP禁了
二、因为仅允许132进行ssh,所以给132的接口区域配置ssh,把默认接口的ssh禁了
三、允许访问apache,所以http不用禁

在 ICMP 过滤器中勾选 echo-reply 和 echo-request
在这里插入图片描述在这里插入图片描述这样任何客户机都无法 ping 通服务器了

仅允许132ssh本服务器
先去掉默认区域的ssh选项
在这里插入图片描述将20.0.0.132加入别的区域,这样就能使用别的区域的规则了

在这里插入图片描述
在这里插入图片描述132可以正常ssh,135则不行
在这里插入图片描述
在这里插入图片描述允许所有主机访问网页

在这里插入图片描述在这里插入图片描述两机均可访问网页
在这里插入图片描述在这里插入图片描述

Firewalld-cmd 命令行

命令演示

查看防火墙运行状态
[root@1centos ~]# 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 三 2020-07-29 15:59:36 CST; 5s ago
     Docs: man:firewalld(1)
 Main PID: 10671 (firewalld)
    Tasks: 2
   CGroup: /system.slice/firewalld.service
           └─10671 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid...
查看系统定义的信息

显示系统预定义的区域

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

显示系统预定义的服务

[root@1centos ~]# 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 cockpit 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

显示预定义的 ICMP 类型

[root@1centos ~]# firewall-cmd --get-icmptypes
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

其中ICMP执行结果的各个类型翻译如下:
destination-unreachable:目的地址不可达。
echo-reply:应答回应(pong)。
parameter-problem:参数问题。
redirect:重新定向。
router-advertisement:路由器通告。
router-solicitation:路由器征寻。
source-quench:源端抑制。
time-exceeded:超时。
timestamp-reply:时间戳应答回应。
timestamp-request:时间戳请求

区域部分

显示默认区域

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

设置默认区域

[root@1centos ~]# firewall-cmd --set-default-zone=work
success
[root@1centos ~]# firewall-cmd --get-default-zone 
work
显示已激活的区域

一个活动区域必须有一个对应接口

[root@1centos ~]# firewall-cmd --get-active-zones 
work
  interfaces: ens33
显示指定接口绑定的区域
[root@1centos ~]# firewall-cmd --get-zone-of-interface=ens33
work
给指定接口绑定区域

为其添加一块网卡,网卡名 ens37
在这里插入图片描述

[root@1centos ~]# firewall-cmd --get-zone-of-interface=ens37
no zone
[root@1centos ~]# firewall-cmd --zone=public --add-interface=ens37
success
[root@1centos ~]# firewall-cmd --get-zone-of-interface=ens37
public
为指定的区域更改网络接口
[root@1centos ~]# firewall-cmd --zone=drop --change-interface=ens37
The interface is under control of NetworkManager, setting zone to 'drop'.
success
为指定区域删除接口
[root@1centos ~]# firewall-cmd --zone=drop --remove-interface=ens37
The interface is under control of NetworkManager, setting zone to default.
success
显示所有区域及规则
[root@1centos ~]# firewall-cmd --list-all-zones 
block
  target: %%REJECT%%
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

dmz
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

drop
  target: DROP
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

external
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

home
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh mdns samba-client dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

internal
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh mdns samba-client dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: public
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

trusted
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

work (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33 ens37
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

如果啥都不加显示默认区域的规则

[root@1centos ~]# firewall-cmd --list-all
work (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33 ens37
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
显示指定区域的规则
[root@1centos ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: public
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
服务部分
显示指定区域内允许放行的服务
[root@1centos ~]# firewall-cmd --list-services
ssh dhcpv6-client
[root@1centos ~]# firewall-cmd --zone=public --list-services 
ssh dhcpv6-client
为指定区域增加允许方形的服务
[root@1centos ~]# firewall-cmd --zone=public --add-service=ftp
success
[root@1centos ~]# firewall-cmd --zone=public --add-service=tftp
success
[root@1centos ~]# firewall-cmd --zone=public --list-services 
ssh dhcpv6-client ftp tftp
为指定区域删除服务
[root@1centos ~]# firewall-cmd --zone=public --remove-service=tftp
success
[root@1centos ~]# firewall-cmd --zone=public --list-services 
ssh dhcpv6-client ftp
为指定区域增加放行的端口号
[root@1centos ~]# firewall-cmd --zone=public --add-port=443/tcp
success
显示区域内放行的端口号
[root@1centos ~]# firewall-cmd --zone=public --list-ports 
443/tcp
为指定区域删除放行的端口号
[root@1centos ~]# firewall-cmd --zone=public --remove-port=443/tcp
success
[root@1centos ~]# firewall-cmd --zone=public --list-ports 

为指定区域内过滤 ICMP 类型

对应图形界面的 ICPM 过滤器

[root@1centos ~]# firewall-cmd --zone=public --add-icmp-block=echo-request 
success
显示指定区域内不放行的 ICMP 类型
[root@1centos ~]# firewall-cmd --zone=public --list-icmp-blocks 
echo-request
为指定区域内删除过滤的 ICMP 类型
[root@1centos ~]# firewall-cmd --zone=public --remove-icmp-block=echo-request 
success
[root@1centos ~]# firewall-cmd --zone=public --list-icmp-blocks 

更改配置模式

两种配置模式为:运行时 和 永久生效
–reload:重新加载防火墙规则并保持状态信息,即将永久配置应用为运行时配置(和 systemctl reload firewalld 差不多)。
–permanent:带有此选项的命令用于设置永久性规则,这些规则只有在重新启动
firewalld 或重新加载防火墙规则时才会生效;若不带有此选项,表示用于设置运行时
规则。
–runtime-to-permanent:将当前的运行时配置写入规则配置文件中,使之成为永久生效

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值