P45
防火墙是服务器安全的重要保障系统,遵循业务来往的网络通信机制,提供对网络通信的过滤服务。
按照保护对象的不同,防火墙可分为主机防火墙和网络防火墙。主机防火墙是部署在一台计算机系统上的软件,针对单个主机进行防护。网络防火墙是部署在两个网络之间的设备或一整套装置,针对一个网络进行防护。通常部署在网络边界以加强访问控制,其将网络划分为可信与不可信区域,对流入流出的网络流量进行过滤,实现对可信网络的防护。
P46
不管是Linux、Unix、Mac,还是Windows操作系统,主机防火墙操作系统与外界网络之间的一道屏障、一个软件。
主机防火墙通过检测、限制通过的数据流,对外屏蔽操作系统的信息、结构和运行状态,有选择地接受外部网络的访问请求,实现提升主机安全性的目的。
主机防火墙工作在网络层,是典型的包过滤防火墙。把网络层作为数据监控对象,对通信的每个数据包头部、协议、地址端口及类型信息进行分析。如果数据包的某个或多个部分与预先设定的防火墙规则(Filtering Rule)匹配,则按照防火墙规则进行处理,否则直接丢弃。
P47
Linux操作系统中,主机防火墙实现三种通信的过滤。输入链保护对操作系统进行的访问,输出链过滤操作系统对外的访问,转发链是对操作系统收到并进行转发的通信进行检测和过滤。
P48
防火墙虽然是重要的系统安全措施,但是他也不是万能的,系统安全要使用防火墙进行保护,但是又不能够过分依赖防火墙。
防火墙自身具有一定的局限性。
防火墙可以阻断攻击,但不能消灭攻击源。
防火墙不能抵抗最新的未设置策略的攻击漏洞。
防火墙的并发连接数限制容易导致服务拥塞或溢出,例如服务器遭受攻击后,造成防火墙中止服务,虽然攻击没有造成数据丢失数据泄露,但是服务却中断了。
防火墙对针对服务器开放端口的攻击无法阻止,例如网站服务器允许80端口的访问,但是对于80端口的攻击就无法实现防护。
防火墙对系统内部发起的攻击无法阻止,防火墙处于边界,如果内部网络内有主机感染木马,从系统内部发起对服务器的攻击,防火墙是无法阻断的。
防火墙本身也会出现问题或受到攻击。
防火墙无法防御病毒、木马等。
P49
CentOS操作系统内置了防火墙,并默认开启和开机自启动。在CentOS 7以前版本中,使用 iptables 防火墙。在CentOS 7、CentOS 8版本中,使用 firewalld 防火墙。
firewalld防火墙与iptables防火墙的差异有:
firewalld 防火墙可以动态修改单条规则与管理规则集等,允许更新规则而不破坏现有会话和连接,而 iptables 防火墙在修改规则后必须全部会话刷新后才可以生效。这也是firewall防火墙最重要的优势,例如某服务器正在提供服务,如果需要增加一条防火墙规则,使用firewall防火墙可以直接添加和起效,且重启不会造成服务器当前活跃的连接终端。如果使用iptables防火墙,增加并重新载入防火墙规则,服务器所有的连接都会被终端,对于业务繁忙且需要保持活跃会话的业务,是不能够接受的。
firewalld 防火墙使用区域和服务,iptables 防火墙则使用链式规则。
firewalld 防火墙规默认为拒绝,iptables 防火墙规则默认为允许。
其实,firewalld 和 iptables 本身均不具备防火墙的功能,都是进行防火墙的管理的工具,真正的防火墙功能是通过内核 netfilter 来实现的。
P50
firewalld是防火墙服务守护进程,提供一个动态的、可自定义的、带有DBus接口的基于主机的防火墙。由于是动态的,所以firewalld支持创建、更改和删除规则后,无需重新启动防火墙守护进程。
firewalld使用了区域和服务的概念来简化操作。区域是预定义的规则集,可以将网络接口和源分配给一个区域。允许的通信取决于计算机所连接的网络和该网络的安全级别。服务是预定义的规则,使用服务可以实现基于区域的通信过滤或限制。
P51
在CentOS中,防火墙是由内核中的netfilter实现的,使用iptables命令进行netfilter的管理和配置。iptables服务和firewalld服务是防火墙管理软件,通过iptables命令实现对防火墙的管理。iptables服务可以通过system-config-firewall工具进行操作,对firewalld的管理由三种渠道,分别是D-Bus、firewall-config工具和firewall-cmd工具。
P52
Firewall基于用户对网络中设备和通信的信任程度,防火墙将网络分割成不同的区域(Zone)。
可以将一个接口归属某个区域,接口所分配的区域可以通过防火墙管理工具进行配置。一个接口只能够属于一个区域,但是一个区域内可以有多个接口。
可以为不同的区域定义不同的规则集,通过更改当前使用接口对应的区域实现快速进行防火墙规则设置。当使用多个接口时,可以为每个接口设置对应不同区域,实现对不同接口进行不同的防火墙规则设置,实现更加灵活的防火墙策略配置。
P53
Firewall防火墙内置了9个Zone。
drop(丢弃)区域:接收的任何数据包都被丢弃,不做任何回复。
block(限制)区域:接受的任何数据包都被拒绝,且返回icmp信息,IPv4返回icmp-host-prohibited信息,IPv6返回icmp6-adm-prohibited信息。
public(公共)区域:不信任该区域,接受规则过滤的连接。
external(外部)区域:不信任该区域,对路由器隐藏信息,接受规则过滤的连接。
dmz(非军事区)区域:信任该区域,该区域内的主机可以访问其他区域。接受规则过滤的连接。
work(工作)区域:基本信任该区域,接受规则过滤的连接。
home(家庭)区域:基本信任该区域,接受规则过滤的连接。
internal(内部)区域:基本信任该区域,接受规则过滤的连接。
trusted(信任)区域:信任该区域,接受来自该区域的所有网络连接。
P54
可以对照官方的描述信息,进一步理解内置的区域。当然也不需要过于纠结这些区域之间的差别,内置区域是基于场景的定义。
如果不喜欢使用内置区域,也可以创建区域并使用。
P55
下面介绍关于Zones的操作。
查看Zones由三种情况:查看系统当前使用的Zones使用firewall-cmd工具加--get-zones选项。查看系统全部Zones的信息使用--list-all-zones选项。查看指定zone的当前规则信息使用--zone选项指定zone,--list-all选项列出所有内容。
改变系统的默认区域:通过--get-default-zone选项查看当前默认使用的区域,通过--set-default-zong指定新的默认使用的区域。
P56
创建新的zone使用firewall-cmd工具的--new-zone选项,将当前运行的规则保存到默认区域内作为永久规则使用--runtime-to-permanent选项。
对于每个区域,都可以设置默认行为来处理未指定的处理操作的连接的处理方式。例如对home区域的默认操作是accept,那么在该区域中创建规则时,如果不指定如何处理,就按照默认值accept来处理。
默认规则有三个选项:默认、接受、拒绝和丢弃。设置为ACCEPT,接受所有传入的数据包,但被特定规则禁用的数据包除外。设置为拒绝或丢弃,则拒绝所有传入的数据包,但被特定规则允许传入的数据包除外。当信息包被拒绝时,源机器将被告知拒绝的消息,而当数据包被丢弃时,则不会发送任何信息。例如如果是被拒绝,源主机可能会得到拒绝消息,如果是丢弃,源主机可能就是无响应。建议多用drop,因为直接丢弃能够更好的保护信息。
通过--list-all选项查看指定区域的配置信息,可以查看默认行为。通过--set-target选项可以设置指定区域的默认行为为ACCEPT、REJECT、DROP中的一种。
P57
firewall防火墙有三种配置方式,一是D-Bus,二是CLI方式的firewall-cmd工具,三是GUI方式的firewall-config工具。使用firewall-config是,需要通过yum工具进行安装,该方式仅支持安装了GUI的CentOS。
本课程仅介绍使用firewall-cmd工具进行防火墙配置的方法。
P58
Firewall防火墙可以使用服务进行策略配置。服务可以是本地端口、协议、源端口、目的地址、来源地址等。使用防火墙的辅助定义模块预定义服务,可以更加灵活和简便的配置。
预定于服务是通过XML文件记录,预定义服务的配置文件存放位置是:/etc/firewalld/services目录。
P59
防火墙运行时进行配置后,可以立即生效,且不需要中断当前连接。但是重启firewalld服务或者重启操作系统后,配置会恢复为默认设置。
firewall防火墙的配置模式有两种,
第一种是runtime configuration:表示运行时配置,可以称为运行配置,就是防火墙当前起效的规则
第二种是permanent configuration:表示存储下来的配置,可以称为存储配置,就是防火墙启动时会加载的规则,属于永久生效的规则。
创建永久生效的规则有两种方式。
一是使用--runtime-to-permanent选项,将当前运行的防火墙规则永久保存。二是使用--permanent选项,在配置防火墙规则时,记录到配置文件中。
P60
使用firewall防火墙的配置是:
systemctl unmask firewalld,取消对防火墙的屏蔽。
systemctl start firewalld,启动防火墙服务。
systemctl enable firewalld,设置防火墙为开机自动启用。
P61
停止使用firewall防火墙的方法是:
systemctl stop firewalld,停止防火墙服务。
systemctl disable firewalld,设置禁止开机自动启动防火墙
systemctl mask firewalld,屏蔽通过D-Bus接口使用和操作防火墙
P62
在紧急情况下,例如服务器遭受攻击时,通过CLI工具开始一键禁用所有流量,快速切断所有的网络攻击行为,是紧时情况下的快速故障处理方法。
firewall-cmd工具使用--panic-on选项,启用紧急模式,切断所有通信。使用--panic-off选项,关闭紧急模式。使用--query-panic选项,查看当前是否处于紧急模式下。
P63
查看防火墙内置的服务信息。
firewall-cmd工具使用--list-services选项,查看没有被防火墙保护的服务。使用--get-services选项,查看内置的全部服务定义。使用--add-service选项可以自行添加服务。使用--runtime-to-permanent将当前活跃规则永久保存到默认区域。
P64
日志是系统运维管理的重要内容和安全管理的基础。操作系统的防火墙日志的配置有两种:全局日志配置和规则日志配置。
全局日志配置是对防火墙日志规则进行配置,规则日志配置是设置防火墙触发特定防火墙规则时记录日志的方式。
CentOS 8中,防火墙日志服务由系统syslog服务进行管理,防火墙日志默认存放在/var/log/messages日志文件中,并且日志文件基于日期时间自动分割和归档。例如messages文件是当前记入日志的文件,messages.1为上一个归档日志文件。
P65
下面介绍全局日志配置的案例:通过修改防火墙与syslogd配置文件,对防火墙日志字段、日志文件存放路径、日志文件分割方法等进行自定义配置。
完成对防火墙全局日志的配置,实现以下3个目标。实现防火墙对单播网络通信的日志记录;防火墙日志存放目录变更为/var/log/firewalldlog;防火墙日志记录等级调整为所有等级的日志均记录。
P66
实现的方法是通过vi工具修改firewalld和syslog两个服务的配置文件,之后重新载入配置文件生效。