firewalld防火墙初识~!!

文章目录

  • Firewalld防火墙
  • Firewalld和iptables关系
    • 两者区别
  • 区域
    • 区域介绍
  • Firewalld数据处理过程
  • Firewalld防火墙的配置方法
    • Firewall-config图形工具演示
      • 打开图形化管理界面
      • 根据要求进行配置修改
  • Firewalld-cmd 命令行
    • 命令演示
      • 查看防火墙运行状态
      • 查看系统定义的信息
    • 区域部分
    • 显示已激活的区域
    • 显示指定接口绑定的区域
    • 给指定接口绑定区域
    • 为指定的区域更改网络接口
    • 为指定区域删除接口
    • 显示指定区域的规则
  • 服务部分
    • 显示指定区域内允许放行的服务
    • 为指定区域增加允许方形的服务
    • 为指定区域删除服务
    • 为指定区域增加放行的端口号
    • 显示区域内放行的端口号
    • 为指定区域删除放行的端口号
    • 为指定区域内过滤 ICMP 类型
    • 显示指定区域内不放行的 ICMP 类型
    • 为指定区域内删除过滤的 ICMP 类型
  • 更改配置模式

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防火墙初识~!!_第1张图片

两者区别

firewalld防火墙初识~!!_第2张图片
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 与系统防火墙同步
firewalld防火墙初识~!!_第3张图片下为系统中打开的 图形管理工具
firewalld防火墙初识~!!_第4张图片

根据要求进行配置修改

服务器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

firewalld防火墙初识~!!_第5张图片
firewalld防火墙初识~!!_第6张图片
这样任何客户机都无法 ping 通服务器了

仅允许132ssh本服务器
先去掉默认区域的ssh选项
firewalld防火墙初识~!!_第7张图片
将20.0.0.132加入别的区域,这样就能使用别的区域的规则了

firewalld防火墙初识~!!_第8张图片
firewalld防火墙初识~!!_第9张图片
132可以正常ssh,135则不行

firewalld防火墙初识~!!_第10张图片
firewalld防火墙初识~!!_第11张图片
允许所有主机访问网页
在这里插入图片描述
firewalld防火墙初识~!!_第12张图片
两机均可访问网页
firewalld防火墙初识~!!_第13张图片
firewalld防火墙初识~!!_第14张图片

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 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

显示预定义的 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

给指定接口绑定区域

为其添加一块网卡,网卡名 ens36
在这里插入图片描述
[root@1centos ~]# firewall-cmd --get-zone-of-interface=ens36
no zone

[root@1centos ~]# firewall-cmd --zone=public --add-interface=ens36
success

[root@1centos ~]# firewall-cmd --get-zone-of-interface=ens36
public

为指定的区域更改网络接口

[root@1centos ~]# firewall-cmd --zone=drop --change-interface=ens36
The interface is under control of NetworkManager, setting zone to ‘drop’.
success

为指定区域删除接口

[root@1centos ~]# firewall-cmd --zone=drop --remove-interface=ens36
The interface is under control of NetworkManager, setting zone to default.
success

显示指定区域的规则

[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:将当前的运行时配置写入规则配置文件中,使之成为永久生效

你可能感兴趣的:(shell)