防火墙策略与规则

  • 一、linux防火墙简介
    • - 防火墙技术种类:
    • - 包过滤防火墙概述:
    • - 包过滤的工作层次:
  • 二、firewalld简介
    • - 概述:
    • - 特点:
    • - 网络区域:
    • - 检查原则:
    • - firewalld数据处理流程:
    • - 数据包处理原则:
    • - firewalld防火墙的配置方法:
  • 三、配置firewalld防火墙
    • (1)使用firewall-config图形化工具配置
    • (2)使用firewall-cmd命令进行配置
      • - 如何清空防火墙规则:
      • - 区域管理选项说明:
        • - 示例:
      • - 服务管理选项说明:
        • - 示例:
      • - 两种配置方式

一、linux防火墙简介

- 防火墙技术种类:

(1)包过滤防火墙 packet filtering
(2)应用代理防火墙 application proxy
(3)状态检测防火墙 stateful inspection
(firewalld是包过滤防火墙,所以这里只讲包过滤防火墙)

- 包过滤防火墙概述:

(1)netfilter: 位于Linux内核中的包过滤功能体系,成为Linux防火墙的“内核态”
(2)firewalld: CentOS7默认的管理防火墙规则的工具,成为Linux防火墙的“用户态”
————上面的两种称呼都可以表示为Linux防火墙

- 包过滤的工作层次:

(1)主要是网络层,针对IP数据包、检查源IP
(2)体现在对包内的IP地址、端口等信息的处理上
————Linux服务器主要用于对互联网提供某种服务或作为内部局域网的网关服务器

二、firewalld简介

- 概述:

防火墙是Linux系统的 主要的安全工具 ,可以提供基本的安全防护,在Linux历史上已经使用过的防火墙工具包括:ipfwadm、ipchains、iptables (即Centos6就是使用的iptables) ,而在firewalld中新引入了 区域(Zone) 这个概念

- 特点:

以前的iptables防火墙是静态的,每次修改都要求防火墙完全重启,这个过程包括内核netfilter防火墙模块的卸载和新配置所需模块的装载等,而模块的卸载将会破坏状态防火墙和确立建立的连接,现在firewalld可以动态管理防火墙,firewalld把netfilter的过滤功能集于一身
总结成几个小点:

  • firewalld提供了支持 网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。
  • 支持 IPv4,IPv6 的防火墙设置以及以太网桥接
  • 支持服务或者应用程序直接添加防火墙规则的接口
  • 拥有运行时配置和永久配置两种选项。
    运行时配置——服务或系统重启后失效
    永久配置——服务或系统关机、重启后生效

- 网络区域:

firewalld预定义的九种网络区域:
trusted、public、work、home、internal、external、dmz、block、drop
————默认情况就有一些有效的区域,由firewalld提供的区域按照从不信任到信任的顺序排序
(1)丢弃区域(Drop Zone): 如果使用丢弃区域,任何进入的数据包将被丢弃,这个类似于Centos6上的 iptables -j drop ,使用丢弃规则意味着将不存在相应。
(2)阻塞区域(Block Zone): 阻塞区域会拒绝进入的网络连接,返回icmp-host-prohibited,只有服务器已经建立的连接会被通过,即只允许由该系统初始化的网络连接。
(3)公共区域(Public Zone): 只接受那些被选中的连接,默认只允许ssh和dhcpv6-client,这个zone是缺省zone (缺省就是默认的意思,所以公共区域也是默认区域,在没有任何配置的情况下走的是公共区域)
(4)外部区域(External Zone): 这个区域相当于路由器的启动伪装(masquerading)选项,只有指定的连接会被接受,即ssh,而其他的连接将被丢弃或者不被接受
(5)隔离区域(DMZ Zone): 如果想要只允许给部分服务能被外部访问,可以在DMZ区域中定义,它也拥有只通过被选中连接的特性,即ssh, 这个区域又叫做非军事化区域
(6)工作区域(Work Zone): 在这个区域中,我们只能定义内部网络,比如私有网络通信才被允许, 只允许ssh、ipp-client和dhcpv6-client
(7)家庭区域(Home Zone): 这个区域专门用于家庭环境,它同样只允许被选中的连接, 即ssh、ipp-client、mdns、samba-client和dhcpv6-client
(8)内部区域(Internal Zone): 这个区域和 工作区域(Work Zone) 类似,只允许通过被选中的连接,与 家庭区域(Home Zone) 相同
(9)信任区域(Trusted Zone): 信任区域允许所有网络通信通过,因为 信任区域(Trusted Zone)是最被信任的,即使没有设置任何的服务,那么也是被允许的,因为 信任区域(Trusted Zone)是允许所有连接的

————以上是系统定义的所有的区域(Zone),但是,不是所有的区域(Zone)都在使用,只有活跃的区域(Zone)才有实际操作意义
注意:因为默认区域只允许ssh和dhcp,所以在没有任何配置的情况下默认是拒绝ping包的

- 检查原则:

如果一个客户端访问服务器,服务器根据以下原则决定使用哪个区域(zone)的策略去匹配:
(1)如果一个客户端数据包的源IP地址匹配Zone的 来源(sources) 也就是匹配区域的规则,那么该 Zone的规则就适用这个客户端,一个源只能属于一个 Zone,不能同时属于多个区域(Zone)
(2)如果一个客户端数据包进入服务器的某一个接口(如ens33网卡接口)匹配了 Zone的 接口(interfaces),则该Zone的规则就适用这个客户端,一个接口只能属于一个 Zone ,不能同时属于多个Zone
(3)如果上述两个原则都不满足,那么默认的 Zone将被应用 firewalld数据处理流程 ,检查数据来源的源地址,

- firewalld数据处理流程:

检查数据来源的源地址:
(1)若源地址关联到特定的区域,则执行该区域所制定的规则
(2)若源地址未关联到特定的区域,则使用关联网络接口的区域并执行该区域所制定的规则
(3)若网络接口未关联到特定的区域,则使用默认区域并执行该区域所制定的规则

- 数据包处理原则:

检查源地址的处理规则:

  • 匹配源地址所在区域
  • 匹配入站接口所在区域
  • 匹配默认区域

- firewalld防火墙的配置方法:

有三种配置方法,分别是:

  • firewall-config图行化工具
  • firewall-cmd命令行工具
  • /etc/firewalld/中的配置文件

三、配置firewalld防火墙

(1)使用firewall-config图形化工具配置

打开方式: 应用程序——杂项——防火墙 记得先在终端里打开防火墙

主菜单: 文件、选项、查看、帮助

配置: 运行时和永久 (运行时的是服务重启失效,永久的是服务重启生效)

区域:

  • 服务 :哪些服务可信
  • 端口 :允许访问的端口范围
  • 协议 :可访问的协议
  • 源端口 :额外的源端口或范围
  • 伪装 :私有地址映射为公有ip
  • 端口转发 :指定端口映射为其他端口 (本机或者其他主机)
  • ICMP过滤器 :设置具体的icmp类型

    服务: (只适用于永久模式)
  • 模块 :设置网络过滤的辅助模块
  • 目标 :如果指定了目的地址,服务则仅限于目的地址和类型,默认没有限制

    ——可以通过图形化来配置防火墙

(2)使用firewall-cmd命令进行配置

(1)启动、停止、查看firewalld服务
启动防火墙
[root@Firewalld ~]# systemctl start firewalld
设置防火墙为开机自启
[root@Firewalld ~]# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
查看防火墙运行状态
[root@Firewalld ~]# systemctl status firewalld  (active(running)即正在运行)
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: active (running) since 二 2021-01-05 00:55:57 CST; 9h ago   Docs: man:firewalld(1)Main PID: 2989 (firewalld)CGroup: /system.slice/firewalld.service└─2989 /usr/bin/python2 -Es /usr/sbin/firewalld --...1月 05 00:55:57 CentOS7-1 systemd[1]: Starting firewalld - d...
1月 05 00:55:57 CentOS7-1 systemd[1]: Started firewalld - dy...
Hint: Some lines were ellipsized, use -l to show in full.
[root@Firewalld ~]# firewall-cmd --state   (两种查看命令都可以)
running
(2)查看预定义信息
查看防火墙可用区域
[root@Firewalld ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
查看防火墙默认区域
[root@Firewalld ~]# firewall-cmd --get-default-zone
public
查看防火墙可用服务
[root@Firewalld ~]# firewall-cmd --get-service
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger 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 isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server
查看防火墙可用的icmp阻塞类型
[root@Firewalld ~]# 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
防火墙命令都是能补齐的-----------------------华丽分割线-----------------------拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
注意!!!:如果是远程的机器执行上面的规则会立刻断开网络连接,必须紧记不能随便执行。如果你只是虚拟机或者物理机器登陆就可以执行来调试。
-------------------------------------------------------

- 如何清空防火墙规则:

当防火墙配置了很多规则想一次性清空怎么办,firewalld默认没有命令来清空规则,但是我们可以通过编辑配置文件来清除规则。
/etc/firewalld/zones/ 此处为配置生效后保存的配置文件,建议修改前先备份

******此目录会显示已经配置的规则
[root@Firewalld ~]# ll /etc/firewalld/zones/
总用量 8
-rw-r--r--. 1 root root 315 7月   2 2020 public.xml
-rw-r--r--. 1 root root 315 7月   2 2020 public.xml.old
vim编辑配置文件
[root@Firewalld zones]# vim /tmp/firewalld.bak/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone><short>Public</short><description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description><service name="ssh"/>                  (这两条service开头的就是允许的服务)<service name="dhcpv6-client"/>
</zone>
******在修改之前先创建备份目录
[root@Firewalld ~]# mkdir /tmp/firewalld.bak  (备份目录为firewalld.bak)
[root@Firewalld ~]# mv /etc/firewalld/zones/* /tmp/firewalld.bak/
[root@Firewalld ~]# firewall-cmd --set-default-zone=public   (设置默认区域为public)
Warning: ZONE_ALREADY_SET: public
success
******重启服务
[root@Firewalld ~]# systemctl restart firewalld

- 区域管理选项说明:

(前面都是firewall-cmd)

(1)--get-default-zone                          显示网络连接或接口的默认区域
(2)--set-default-zone=区域名称                  设置网络连接或接口的默认区域
(3)--get-active-zones                          显示已激活的所有区域
(4)--get-zone-of-interface=网卡名称             显示指定接口绑定的区域
(5)--zone=区域名称 --add-interface=网卡名称      为指定接口绑定区域
(6)--zone=区域名称 --change-interface=网卡名称   为指定的区域更改绑定的网络接口
(7)--zone=区域名称 --remove-interface=网卡名称   为指定的区域删除绑定的网络接口
(8)--list-all-zones                             显示所有区域及其规则
(9)--zone=区域名称 --list-all                    显示指定区域的所有规则
(10)--list-all                                  显示默认区域的所有规则

- 示例:

******显示当前系统的默认区域
[root@Firewalld ~]# firewall-cmd --get-default-zone
public
******显示默认区域的所有规则
[root@Firewalld ~]# firewall-cmd --list-all
public (active)                    (表示public这个区域是活动区域即可用区域,如果是默认区域会多一个defaults)target: default                  icmp-block-inversion: no         interfaces: ens33                (表示public这个区域的网卡接口是ens33)sources:                         (列出了public这个区域的源,现在这里没有,但是如果有的话,格式是xxx.xxx.xxx.xxx/xx)services: dhcpv6-client ssh      (表示public区域允许通过的服务类型)ports:                           (表示public区域允许通过的端口)protocols:                       (允许的通过的协议)masquerade: no                   (表示这个区域不允许ip伪装,如果允许的话也同时会允许IP转发,即开启路由功能)forward-ports:                   (列出转发的端口)source-ports:                   icmp-blocks:                     (列出阻塞icmp流量的黑名单)rich rules:                      (在public区域中优先处理的高级配置)
-------------------------华丽丽的分割线-------------------------
target的作用:
当一个区域处理它的源或接口上的一个包时,但是没有处理该包的显式规则时,这个时候区域的目标target决定了该行为
(1)ACCEPT : 通过这个包
(2)%%REJECT%% : 拒绝这个包,并且返回一个拒绝的回复
(3)DROP : 丢弃这个包,不回复任何信息
(4)default : 不做任何事情,该区域不再管他,把它提到“楼上”
--------------------------------------------------------------
******显示网络接口ens33的对应区域
[root@Firewalld ~]# firewall-cmd --get-zone-of-interface=ens33
public                           (说明ens33的区域是public)
******更改ens33的区域为internal
[root@Firewalld ~]# firewall-cmd --zone=internal --change-interface=ens33
success                          (更改成功)
[root@Firewalld ~]# firewall-cmd --get-zone-of-interface=ens33
internal                         (再次查看发现已经更改为internal区域)
******查看全部活动区域
[root@Firewalld ~]# firewall-cmd --get-active-zones
internalinterfaces: ens33

- 服务管理选项说明:

***服务存放在/usr/lib/firewalld/services目录中,通过单个的xml配置文件来指定
***xml文件:service-name。xml
(1)--zone=区域名称 --list-services                         显示指定区域内允许访问的所有服务
(2)--zone=区域名称 --add-service=服务名称                   为指定区域设置允许访问的某项服务
(3)--zone=区域名称 --remove-service=服务名称                删除指定区域已设置的允许访问的某项服务
(4)--zone=区域名称 --list-ports                            显示指定区域内允许访问的所有端口号
(5)--zone=区域名称 --add-port=端口号-端口号/协议名          为指定区域设置允许访问的某个或某段端口号并指定协议名(中间的-表示从多少到多少端口号, / 和后面跟端口的协议)
(6)--zone=区域名称 --remove-port=端口号-端口号/协议名        删除指定区域已设置的允许访问的某个端口号或某段端口号并且指定协议名(中间的-表示从多少到多少端口号, / 和后面跟端口的协议)
(7)--zone=区域名称 --list-icmp-blocks                      显示指定区域内拒绝访问的所有ICMP类型
(8)--zone=区域名称 --add-icmp-block=icmp类型               为指定区域设置拒绝访问的某项ICMP类型
(9)--zone=区域名称 --remove-icmp-block=icmp类型            删除指定区域已设置的拒绝访问的某项ICMP类型,省略 --zone=区域名称 时表示对默认区域操作

- 示例:

******显示默认区域允许访问的所有服务
[root@Firewalld ~]# firewall-cmd --list-services
You're performing an operation over default zone ('public'),
but your connections/interfaces are in zone 'internal' (see --get-active-zones)
You most likely need to use --zone=internal option.dhcpv6-client ssh    (说明允许dhcp和ssh)
******设置默认区域允许访问http和https服务 (不加--zone指定的话就是配置默认区域)
[root@Firewalld ~]# firewall-cmd --add-service=http
You're performing an operation over default zone ('public'),
but your connections/interfaces are in zone 'internal' (see --get-active-zones)
You most likely need to use --zone=internal option.success
[root@Firewalld ~]# firewall-cmd --add-service=https
You're performing an operation over default zone ('public'),
but your connections/interfaces are in zone 'internal' (see --get-active-zones)
You most likely need to use --zone=internal option.success
[root@Firewalld ~]# firewall-cmd --list-services   (再次查看)
You're performing an operation over default zone ('public'),
but your connections/interfaces are in zone 'internal' (see --get-active-zones)
You most likely need to use --zone=internal option.dhcpv6-client http https ssh  (多了http和https)
预定义的服务可以使用服务名配置,同时其对应端口会自动打开,非预定义的服务只能手动指定端口
******给指定区域添加tcp443端口
[root@Firewalld ~]# firewall-cmd --zone=internal --add-port=443/tcp
success
[root@Firewalld ~]# firewall-cmd --zone=internal --list-all
internal (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources: services: dhcpv6-client mdns samba-client sshports: 443/tcp  (发现添加成功)protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: ******删除指定区域的443/tcp端口
[root@Firewalld ~]# firewall-cmd --zone=internal --remove-port=443/tcp
success
[root@Firewalld ~]# firewall-cmd --zone=internal --list-all
internal (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources: services: dhcpv6-client mdns samba-client sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:

- 两种配置方式

  • 运行时模式(runtime mode): 当前内存中运行,系统或防火墙服务重启或停止,配置失效
  • 永久模式(permanent mode): 永久存储在配置文件中,但是配置完成要重启系统或防火墙
******相关选项:(配置时添加此选项即可)
--reload 将永久配置应用为运行时配置
--permanent 设置永久性规则。服务重启或重新加载时生效
--runtime-to-permanent 将当前的运行时配置写入规则,成为永久性配置

什么是firewalld,简介、策略及规则(Centos7防火墙)相关推荐

  1. firewalld 端口、富规则

    ​​​​​​​​​​​​概述 保证数据的安全性是继可用性之后最为重要的一项工作,防火墙技术作为公网与内网之间的保护屏障,起着至关重要的作用. 本章节内将会分别使用iptables.firewall-c ...

  2. CentOS7防火墙服务(Firewalld)关闭实战

    CentOS7防火墙服务(Firewalld)关闭实战 目录 CentOS7防火墙服务(Firewalld)关闭实战 #查看linux服务器防火墙状态

  3. Centos7 防火墙 firewalld 实用操作

    一.前言 Centos7以上的发行版都试自带了firewalld防火墙的,firewalld去带了iptables防火墙.其原因是iptables的防火墙策略是交由内核层面的netfilter网络过滤 ...

  4. centos7防火墙firewalld配置,干货直接上手

    2019独角兽企业重金招聘Python工程师标准>>> [流程简介] centos7开始使用firewalld防火墙,防火墙规则在配置文件中加载,因此修改防火墙只需要[修改配置文件] ...

  5. CentOS7防火墙管理firewalld

    官方文档地址:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/ ...

  6. centos7防火墙开启与关闭及开通策略

    文章参考于: Centos7安装防火墙firewall https://www.cnblogs.com/anxminise/p/9650104.html 防火墙(firewalld与iptables) ...

  7. PLUS模型有两大模块,一是基于土地扩张分析策略的规则挖掘框架,二是基于多类型随机补丁种子的CA模型,此外该模型还内嵌了Markov chain,以便于对土地利用数量需要作出预测。

    工业革命以来,社会生产力迅速提高,人类活动频繁,此外人口与日俱增对土地的需求与改造更加强烈,人-地关系日益紧张.此外,土地资源的不合理开发利用更是造成了水土流失.植被退化.水资源短缺.区域气候变化.生 ...

  8. Linux7查看防火墙日志,Linux入门教程:CentOS7防火墙firewalld配置,防火墙日志在哪呢...

    Linux入门教程:CentOS7防火墙firewalld配置,防火墙日志在哪呢 启动: systemctl start firewalld 停止: systemctl stop firewalld ...

  9. linux firewalld配置文件,Linux CentOS7防火墙firewalld使用说明

    文章目录 [隐藏] firewalld配置文件 firewalld规则 firewalld的9个zone介绍 firewalld zone相关命令的用法 firewalld service介绍 Cen ...

最新文章

  1. centos下LAMP之源码编译安装httpd
  2. 【03】Spark分析日志实例
  3. 学习jvm(一)--java内存区域
  4. python2和python3分别是python的两个版本_Windows下Python2与Python3两个版本共存的方法详解...
  5. 数据挖掘学习笔记之人工神经网络(二)
  6. Java 里的字符串处理类StringBuffer简介
  7. C++确定数字的奇偶校验的算法实现(附完整源码)
  8. mysql inner join
  9. java学到什么程度才有用处_如何自学Java?Java学到什么程度才可以找工作?
  10. mysql自增字段_MySQL自增字段的常用语句
  11. hdu 1133 Buy the Ticket(递推+精度精算)
  12. T-SQL多个小计+合计,分类汇总
  13. pom.xml mvn package expected START_TAG or END_TAG not TEXT
  14. 和小松一起聆听遥唤根本上师
  15. aic准则和bic准则_用户故事准则
  16. 【闲谈】我为什么不想回答你的问题
  17. Unity中PICO G2 4K开发环境配置说明
  18. Https 网站 访问 Http资源
  19. 谷歌地图数据采集软件
  20. PHP如何下载微信语音到服务器,并将amr格式转换为MP3格式,最后上传到阿里云oss文件中

热门文章

  1. 人间不正经生活语录(三)
  2. VMware虚拟机配置自己想要的IP
  3. 跳槽违反《竞业协议》,赔偿腾讯 97.6 万元。。
  4. linux iconv 文件夹,linux 下 iconv 转换文件格式出错
  5. Js阻止事件冒泡与阻止默认事件
  6. eclipse run as 右键无python unit-test
  7. 香港两日游的那些事儿
  8. simulink 汉明码 用法_汉明码的性能分析
  9. 《淘宝店铺营销推广一册通》一1.5 搜索优化之产品发布
  10. 刘寅:TiDB 工具链和生态 1