八、防火墙
1、简介
防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。
防火墙又可以分为硬件防火墙与软件防火墙。硬件防火墙是由厂商设计好的主机硬件,这台硬件防火墙 的操作系统主要以提供数据包数据的过滤机制为主,并将其他不必要的功能拿掉。软件防火墙就是保护系统网络安全的一套软件(或称为机制),例如Netfilter与TCP Wrappers都可以称为软件防火墙。这儿主要介绍linux系统本身提供的软件防火墙的功能,那就是Netfilter,即数据包过滤机制。
- 数据包过滤,也就是分析进入主机的网络数据包,将数据包的头部数据提取出来进行分析,以决定该连 接为放行或抵挡的机制。由于这种方式可以直接分析数据包头部数据,包括硬件地址,软件地址, TCP、UDP、ICMP等数据包的信息都可以进行过滤分析,因此用途非常广泛(主要分析OSI七层协议的 2、3、4层)。linux的Netfilter机制可以进行的分析工作有:
- 拒绝让Internet的数据包进入主机的某些端口
- 拒绝让某些来源ip的数据包进入
- 拒绝让带有某些特殊标志(flag)的数据包进入,最常拒绝的就是带有SYN的主动连接的标志了
- 分析硬件地址(MAC)来决定连接与否
- 缺点:
- 防火墙并不能有效阻挡病毒或木马程序。(假设主机开放了www服务,防火墙的设置是一定要将 www服务的port开放给client端的。假设www服务器软件有漏洞,或者请求www服务的数据包本 身就是病毒的一部分时,防火墙是阻止不了的)
- 防火墙对于内部LAN的攻击无能为力(防火墙对于内部的规则设置通常比较少,所以就很容易造成 内部员工对于网络无用或滥用的情况)
Netfilterr这个数据包过滤机制是由linux内核内建的,不同的内核版本使用的设置防火墙策略的软件不一 样,在红帽7系统中firewalld服务取代了iptables服务,但其实iptables服务与firewalld服务它们都只是 用来定义防火墙策略的“防火墙管理工具”而已,他们的作用都是用于维护规则,而真正使用规则干活的 是内核的Netfilter。
红帽Linux中的默认防火墙管理工具,使用iptables作为底层实现。它提供了一个用户友好的界面,支持命令行和图形界面(如:firewall-config)。
2、原理与应用
原理
-
区域概念:firewalld将网络接口分配到不同的区域中,每个区域定义了不同的安全级别。例如,public区域用于不信任的网络,而trusted区域则用于完全信任的网络。
-
服务与端口:用户可以通过服务名称(如HTTP、SSH等)来允许或拒绝特定流量,而不需要手动指定端口号。
-
动态管理:firewalld支持动态添加或移除规则,而无需重启服务。这使得配置更为灵活,适合于快速变化的网络环境。
-
持久化与临时配置:规则可以设置为临时生效或持久化保存,以便在重启后依然生效。
应用
- 保护服务器:通过配置适当的区域和服务,保护Web服务器、数据库服务器等不受外部攻击。
- 隔离网络流量:在多租户环境中,可以通过不同的区域来隔离不同客户的流量。
- VPN与远程访问:配置防火墙规则以允许VPN流量,通过安全隧道保护远程访问。
- 日志记录与审计:通过配置日志规则,监控网络流量和攻击尝试,帮助进行安全审计。
3、配置
#查看防火墙状态:
firewall-cmd --state#查看当前区域和活动接口:该命令将显示当前活动的区域及其相关联的网络接口。
firewall-cmd --get-active-zones#查看特定区域的规则:该命令将列出public区域的所有规则,包括允许的服务、端口和接口。
firewall-cmd --zone=public --list-all#添加服务到某个区域:该命令将HTTP服务添加到public区域,并将其设置为持久化配置。
firewall-cmd --zone=public --add-service=http --permanent#添加特定端口:该命令将TCP端口8080添加到public区域,并持久化
firewall-cmd --zone=public --add-port=8080/tcp --permanent#删除服务或端口:该命令将从public区域中删除HTTP服务。
firewall-cmd --zone=public --remove-service=http --permanent#重新加载配置:该命令将应用所有未持久化的更改,并重新加载防火墙配置。
firewall-cmd --reload#查看日志: 如果启用了日志记录,可以使用以下命令查看日志:
journalctl -f -u firewalld