目录
2、firewalld支持划分区域zone,每个zone可以设置独立的防火墙规则
一、安全技术
1、不同的安全技术
·入侵检测系统(Intrusion Detection Systems)︰特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,类似于监控系统一般采用旁路部署(默默的看着你)方式。
·入侵防御系统〈(Intrusion Prevention System):以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以阻断,主动而有效的保护网络的安全,一般采用在线部署方式。(必经之路)
·防火墙(FireWall )︰隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放在DMZ(demi
·防水墙:广泛意义上的防水墙:防水墙(waterwa11),与防火墙相对,是一种防止内部信息泄漏的安全产品。网络、外设接口、存储介质和打印机构成信息泄漏的全部途径。防水墙针对这四种泄密途径,在事前、事﹐中、事后进行全面防护。其与防病毒产品、外部安全产品一起构成完整的网络安全体系。
2、防火墙的分类方法
主要有以下6种:
1、软、硬件形式分类:软件防火墙、硬件防火墙、芯片级防火墙。
2、防火墙技术分类:包过滤型防火墙、应用代理型防火墙 。
3、防火墙结构分类:单一主机防火墙、路由器集成式防火墙、分布式防火墙。
4、防火墙的应用部署位置分类:边界防火墙、个人防火墙、混合防火墙。
5、防火墙性能分类:百兆级防火墙、千兆级防火墙。
6、防火墙使用方法分类:网络层防火墙、物理层防火墙、链路层防火墙。
----------------------------------------------------------------------------------------------------
1、按保护范围分:
·主机防火墙:服务范围为当前一台主机
·网络防火墙:服务范围为防火墙一侧的局域网
2、按实现方式划分:
·硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,如:华为,山石hillstone,天融信,启明星辰,绿盟,深信服, PaloAlto , fortinet, Cisco, Checkpoint,
NetScreen(luniper2004年40亿美元收购)等
·软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,Windows防火墙ISA -->ForefrontTMG
3、按网络协议划分:
·网络层防火墙:OSI模型下四层,又称为包过滤防火墙
·应用层防火墙/代理服务器: proxy代理网关,OSl模型七层
二、Linux防火墙的介绍
1、Netfilter
Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在linux内核中
Netfilter 是Linux 2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架。Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作
Netfilter官网文档: https://netfilter.org/documentation/
2、防火墙的工具
1、Iptables
由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包
2、firewalld
从CentOS 7 版开始引入了新的前端管理工具
软件包:
firewalld
firewalld-config
管理工具:
firewall-cmd 命令行工具
firewall-config 图形工作
3、nftables
此软件是CentOS 8新特性,Nftables最初在法国巴黎的Netfilter Workshop 2008上发表,然后由长期的netfilter核心团队成员和项目负责人Patrick McHardy于2009年3月发布。它在2013年末合并到Linux内核中,自2014年以来已在内核3.13中可用。
它重用了netfilter框架的许多部分,例如连接跟踪和NAT功能。它还保留了命名法和基本iptables设计的几个部分,例如表,链和规则。就像iptables一样,表充当链的容器,并且链包含单独的规则,这些规则可以执行操作,例如丢弃数据包,移至下一个规则或跳至新链。
从用户的角度来看,nftables添加了一个名为nft的新工具,该工具替代了iptables,arptables和
ebtables中的所有其他工具。从体系结构的角度来看,它还替换了内核中处理数据包过滤规则集运行时评估的那些部分。
3、netfilter中五个勾子函数和报文流向
Netfilter在内核中选取五个位置放了五个hook(勾子)function(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING),而这五个hook function向用户开放,用户可以通过一个命令工具(iptables)向其写入规则 由信息过滤表(table)组成,包含控制IP包处理的规则集(rules),规则被分组放在链(chain)上
三种报文流向
·流入本机:PREROUTING –> INPUT–>用户空间进程(访问我的服务)
·流出本机:用户空间进程 –>OUTPUT–> POSTROUTING(穿过我)
·转发:PREROUTING –> FORWARD –> POSTROUTING(分摊流量)
链chain:
内置链:每个内置链对应于一个钩子函数
自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;只有Hook钩子调用自定义链时,才生效。
INPUT,OUTPUT,FORWARD , PREROUTING,POSTROUTING
五个表tble: filter、nat、mangle、raw、security
filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,默认表
nat: network address translation地址转换规则表
mangle:修改数据标记位规则表
raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度
security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现
security -->raw-->mangle-->nat-->filter
三、firewalld服务
1、什么是firewalld
firewalld是CentOS 7.0新推出的管理netfilter的用户空间软件工具,也被ubuntu18.04版以上所支持(apt install firewalld安装即可)
firewalld是配置和监控防火墙规则的系统守护进程。可以实iptables,ip6tables,ebtables的功能firewalld服务由firewalld包提供
2、firewalld支持划分区域zone,每个zone可以设置独立的防火墙规则
1. 已经存在了zone区域
2. 使用firewall,就是将特定的流量关联到某个zone中
- 通过源网段关联zone
- 通过网卡关联zone区域
- 如果两者都没有关联的数据报文,那就会去default zone
3.进入到zone以后,开始匹配zone内的规则
3、firewalld中zone 分类
四、命令行配置
1、基础命令
firewall-cmd [OPTIONS...]
firewall-cmd
#基础命令
--permanent
#设置永久生效
--add-port=端口号/协议(tcp/udp)
设置端口号和协议
--reload
#重新加载防火墙设置
--remove
#移除规则
--get-zones 列出所有可用区域
--get-default-zone 查询默认区域
--set-default-zone=<ZONE> 设置默认区域
--get-active-zones 列出当前正使用的区域
--add-source=<CIDR>[--zone=<ZONE>] 添加源地址的流量到指定区域,如果无--zone= 选项,使用
默认区域
--remove-source=<CIDR> [--zone=<ZONE>] 从指定区域删除源地址的流量,如无--zone= 选项,
使用默认区域
--add-interface=<INTERFACE>[--zone=<ZONE>] 添加来自于指定接口的流量到特定区域,如果无--
zone= 选项,使用默认区域
--change-interface=<INTERFACE>[--zone=<ZONE>] 改变指定接口至新的区域,如果无--zone=
选项,使用默认区域
--add-service=<SERVICE> [--zone=<ZONE>] 允许服务的流量通过,如果无--zone= 选项,使用默
认区域
--add-port=<PORT/PROTOCOL>[--zone=<ZONE>] 允许指定端口和协议的流量,如果无--zone= 选
项,使用默认区域
--remove-service=<SERVICE> [--zone=<ZONE>] 从区域中删除指定服务,禁止该服务流量,如果
无--zone= 选项,使用默认区域
--remove-port=<PORT/PROTOCOL>[--zone=<ZONE>] 从区域中删除指定端口和协议,禁止该端口
的流量,如果无--zone= 选项,使用默认区域
--reload 删除当前运行时配置,应用加载永久配置
--list-services 查看开放的服务
--list-ports 查看开放的端口
--list-all [--zone=<ZONE>] 列出指定区域的所有配置信息,包括接口,源地址,端口,服务等,如
果无--zone= 选项,使用默认区域
2、区域管理
(1)显示当前系统中的默认区域
firewall-cmd --get-default-zone
(2)显示默认区域的所有规则
firewall-cmd --list-all
(3)显示当前正在使用的区域及其对应的网卡接口
firewall-cmd --get-active-zones
(4)设置默认区域
firewall-cmd --set-default-zone=home
firewall-cmd --get-default-zone
3、服务管理
(1)查看默认区域内允许访问的所有服务
firewall-cmd --list-service
(2)添加httpd 服务到public 区域
firewall-cmd --add-service=http --zone=public
(3)查看public区域已配置规则
firewall-cmd --list-all --zone=public
(4)删除public区域的httpd服务
firewall-cmd --remove-service=http --zone=public
(5)同时添加httpd、https服务到默认区域,设置成永久生效
firewall-cmd --add-service=http --add-service=https --permanent
firewall-cmd --reload
firewall-cmd --list-al1
#添加使用--permanent选项表示设置成永久生效,需要重新启动firewalld服务或执行firewall-cmd --reload命令
重新加载防火墙规则时才会生效。若不带有此选项,表示用于设置运行时规则,但是这些规则在系统或firewalld服务重启、停止时配置将失效。
--runtime-to-permanent :将当前的运行时配置写入规则配置文件中,使之成为永久性配置。
4、端口管理
(1)允许TCP的443端口到internal区域
firewall-cmd --zone=internal --add-port=443/tcp
firewall-cmd --list-all --zone=internal
(2)从internal区域将TCP的443端口移除
firewall-cmd --zone=internal --remove-port=443/tcp
(3)允许UDP的2048-2050端口到默认区域
firewall-cmd --add-port=2048-2050/udp
firewall-cmd --list-all