当前位置: 首页 > news >正文

防火墙原理与应用总结

防火墙介绍:

防火墙(Firewall)是一种网络安全设备,其核心目标是通过分析数据包的源地址、端口、协议等内容,保护一个网络区域免受来自另一个网络区域的网络攻击和网络入侵行为,同时允许合法流量自由通行。

这里的防火墙不是指建筑领域用来隔离火源的那一堵墙,而是指网络防火墙,可以是硬件、软件、软件即服务(SaaS)等形式。防火墙作为网络部署中安全防护的第一道防线,可灵活应用于网络边界、子网隔离等位置,具体如企业网络出口、大型网络内部子网隔离、数据中心边界等等。

在这里插入图片描述

防火墙分类:

按功能分类:

  • 主机防火墙:针对于单个主机进行防护。
  • 网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网。

按类型分:

  • 硬件防火墙有:华为、思科等品牌的防火墙
  • 软件防火墙分为:firewalld、iptables 及 windows 内置的 Defender 防火墙。

其中硬件防火墙比软件防火墙又快很多倍。

防火墙的发展史:

防火墙自上世纪80年代末期开始发展,至今已有近30年的历史,在这段时间内,防火墙的发展大致可分为三个重要阶段。

阶段一:1989-1994年

1、1989年,第一款基于访问控制列表(包过滤)的防火墙被开发,被称为第一代防火墙

2、之后出现了基于ALG的第二代防火墙:令防火墙拦截从客户端向服务器发起的所有请求报文,由防火墙代理访问服务器,在将服务器的相应报文回传至客户端;安全级别较高,但处理速度较慢;同时,ALG很难针对网络中的每种应用单独开发独立的代理服务程序,因此仅仅只能够代理某些访问请求。

3、1994年,出现了基于状态化检测的第三代防火墙:通过分析报文的当前状态来执行不同的拦截操作。

阶段二:1995-2004年

1、在这一时期,状态化检测防火墙得到了长足的发展与进步,同时人们针对状态化检测防火墙增加了许多增值性功能:VPN、NAT等

2、一些专业设备也在这一时期出现了雏形,例如专门保护web服务器安全的WAF(web application firewall)设备

阶段三:2005-至今

2004年业界提出了业界提出了UTM(united threat managemetn)统一威胁管理概念,将传统防火墙、入侵检测、防病毒、URL过滤、应用程序控制、邮件过滤等功能融合到一台防火墙上,实现全面的安全防护

2008年Palo Alto Networks公司发布了下一代防火墙,解决了解决了UTM多个功能同时运行时性能下降的问题。同时,还可以基于用户、应用和内容来进行管控。

2009年Gartner对下一代防火墙进行了定义,明确下一代防火墙应具备的功能特性。随后各个安全厂商也推出了各自的下一代防火墙产品,防火墙进入了一个新的时代。

我们现在常见的防火墙都是第五代防火墙。
第五代防火墙的名字就叫“下一代防火墙”,没有指代之意。

在这里插入图片描述

防火墙类型工作原理优点缺点
包过滤防火墙基于网络层和传输层,通过分析经过防火墙的每个 IP 数据包的源地址、目标地址、协议类型以及端口号等信息,与事先设定好的安全策略进行匹配,决定这些数据包是被允许通过,还是被拒绝或丢弃。① 简单高效:包过滤防火墙处理速度快,资源消耗相对较低。② 兼容性好:几乎可以在任何网络层上进行配置和使用。① 安全性有限:仅能基于数据包的表面层面进行审查,无法深入到应用层,因此无法识别复杂的攻击手段。② 功能单一:缺乏更高级的网络安全功能,如状态检查、内容审查等。
应用代理防火墙基于应用层的防火墙技术,它通过代理服务器来处理进出网络的数据包。应用代理防火墙可以对数据包的内容进行过滤和检查,可以识别应用层协议(如 HTTP、FTP),并可以对数据包进行加密和解密。① 安全性高:可以对数据包的内容进行深度检查。② 精确控制:可以根据应用需求设置详尽的访问控制规则,实行更为精细化的流量管理。① 资源消耗大:由于需要深入分析数据包内容,会大幅增加 CPU 等资源的消耗。② 处理速度慢:复杂的分析过程延长了处理时间,对于高速网络可能产生瓶颈。
状态检测防火墙在包过滤防火墙基础上发展而来,除了具有包过滤防火墙的基础功能外,它还能够跟踪和分析数据流的状态信息,如会话过程中的数据包顺序、连接状态等。① 安全性提升:通过跟踪连接状态,能够更准确地判断数据流的合法性,有效抵御一些简单攻击。② 智能化:可以根据通信状态和历史记录作出更为精准的判断。① 资源消耗大:相比包过滤防火墙,状态检测防火墙在跟踪连接状态时需要消耗更多资源。② 处理速度慢:处理速度相对较慢,面对极高速度的网络流量时可能会成为瓶颈。
统一威胁管理 UTM将传统防火墙、入侵检测、反病毒、URL 过滤、应用识别和控制、邮件过滤等功能融合到一台防火墙上,实现全面的安全防护。① 综合防护:UTM 集成了多种安全功能,提供从网络层到应用层的全面防护。② 简化管理:UTM 将多种安全功能集成到一台设备中,简化了网络安全管理,减少了部署和维护多个独立安全设备的复杂性。① 安全性有限:尽然 UTM 提供了比包过滤等防火墙更深入的安全检查,但它的安全性仍然受到限制,例如,可能无法完全防御零日攻击或高级持续性威胁等。② 性能瓶颈:多个功能同时运行,可能会遇到性能瓶颈。
下一代防火墙 NGFWNGFW 解决了 UTM 多个功能同时运行时性能下降的问题,通过深入分析网络流量中的用户、应用和内容,基于高性能并行处理引擎,为基于应用层一体化安全防护,全面应对应用层威胁。① 深度检测:提供基于应用粒度的安全策略访问控制,实行更为精细化的上网行为管理。② 性能更高:一体化引擎处理,大大提升了设备处理性能。① 管理复杂:无法基于意图进行智能管控,威胁处置人工程度高、花费时间长。② 未知威胁难预测:高级威胁日益增多,而且衍生出很多变种,NGFW 的静态规则库检测方式难以为继。

典型的企业网络安全拓扑图

如下图所示,不安全区即我们的外网区域,安全区就是我们的内网区域,还有DMZ区,在每个区域的边界上连接防火墙设备。通过防火墙设备,我们可以实现网络的区域隔离,不允许外网访问内网,也不允许内网访问外网,保证安全性。同时如果我们企业的业务需要暴露在外网中,比如公司官网,这时候就要用到DMZ区。外网和DMZ区可以相互访问,内网也可以访问DMZ区,但是我们可以在防火墙上设置不允许DMZ区访问内网,从而保证了内网的安全性。这样通过DMZ区,既保证了公司内网不暴露在外网中,也能时业务和外网正常交互。
在这里插入图片描述

防火墙与路由器、交换机的对比

路由器、交换机的本质是根据MAC地址表/路由表进行数据帧/数据包的转发/路由

防火墙的本质是在一个已经连通的网络中对传输的数据进行控制,以达到防治网络病毒攻击的目的
在这里插入图片描述
防火墙默认所有的流量都不让通过,如果想让某些流量通过,则需要进行配置,加入白名单;相反,路由器默认是所有流量都可以通过,如果不想让某些流量通过,则通过ACL进行控制。

那么防火墙控制流量访问是不是也用了ACL这种技术呢?不是的,ACL这种技术最大的弊端就是它都是双向访问的,如果我允许你访问为,那么我也能访问你,如果我拒绝你访问我,那么我也不能访问你,这就是ACL,没办法做到单通。防火墙对ACL技术进行了升级,可以限制流量单向访问。

另外,路由器只能对下四层进行流量控制,而防火墙可以做到对整个7层进行流量控制(例如防火墙上配置允许doc文件通过,docx文件不通过,这就是在第七层应用层进行控制)。

主机防火墙使用

目前 Linux 系统的防火墙类型主要有两种:分别是 iptables 和 firewalld

iptables-静态防火墙

早期的 Linux 系统中默认使用的是 iptables 防火墙,配置文件在 /etc/sysconfig/iptables,主要工作在网络层

该防火墙使用链式规则,只可以过滤互联网的数据包,无法过滤从内网到内网的数据包

iptables只可以通过命令行进行配置

iptables默认是允许所有,需要通过拒绝去做限制

iptables在修改了规则之后必须得全部刷新才可以生效,还会丢失连接(无法守护进程)

尽管新型的 firewalld 防火墙管理服务已经被投入使用多年,但是大量的企业在生产环境中依然出于各种原因而继续使用 iptables。 iptables 在当前生产环境中还具有顽强的生命力,且各个防火墙管理工具的配置思路是一致的, 在掌握了 iptables 后再学习其他防火墙管理工具时,也有借鉴意义。

firewalld-动态防火墙

取代了之前的 iptables 防火墙,配置文件在 /usr/lib/firewalld/etc/fiewalld 中,主要工作在网络层

新增区域概念,不仅可以过滤互联网的数据包,也可以过滤内网的数据包

firewalld不仅可以通过命令行进行配置,也可以通过图形化界面配置

firewalld默认是拒绝所有,需要通过允许去放行

firewalld可以动态修改单条规则,动态管理规则集(允许更新规则而不破环现有会话和连接,可以守护进程)

补充:

iptables 和 firewalld 不是真正的防火墙,是指用来定义防火墙规则功能的 “防火墙管理工具/程序”,将定义好的规则交由内核中的 netfilter 即网络过滤器来读取,从而真正实现防火墙功能。 即:真正的防火墙执行者是位于内核的 netfilter,只不过 firwalld 和 iptables 的使用方法以及效果等不同。

在配置防火墙时,不建议两种配置方法结合使用(可能会冲突,建议只使用其中的一种)

Iptables(Linux)

firewalld 只能做和 IP/Port 相关的限制,web相关的限制无法实现。

1. 核心概念

表(Tables),不同表负责不同功能:

filter(默认表):用于数据包过滤(允许/拒绝)
nat:网络地址转换(如端口转发、IP伪装)
mangle:修改数据包头部(如 TTL、QoS)
raw:绕过连接跟踪,用于高性能场景

链(Chains),链是规则的集合,不同链处理不同阶段的数据包:

INPUT:处理进入本机的数据包(如 SSH 请求)。
OUTPUT:处理从本机发出的数据包(如访问网页)。
FORWARD:处理经过本机转发的数据包(如路由器)。
PREROUTING(nat 表):修改目标地址(DNAT,端口转发)。
POSTROUTING(nat 表):修改源地址(SNAT,IP伪装)。
2. 基本命令格式
iptables [-t 表名] [命令选项] [链名] [规则条件] [-j 目标动作]

常用命令选项:

-A	在链末尾追加规则
-I	在链开头插入规则
-D	删除规则
-L	列出规则
-F	清空规则
-P	设置链的默认策略
-N	创建自定义链
-X	删除自定义链
3. 常用操作示例

1.查看规则

iptables -L -n -v        # 查看 filter 表规则
iptables -t nat -L -nv   # 查看 nat 表规则

2.清空规则

iptables -F              # 清空 filter 表
iptables -t nat -F       # 清空 nat 表
iptables -X              # 删除自定义链
iptables -Z              # 重置计数器

3.允许/拒绝流量

# 允许来自局域网的 SSH 连接
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT# 拒绝所有其他 INPUT 流量
iptables -A INPUT -j DROP

4.端口转发(NAT)

# 将外部 80 端口流量转发到内网 192.168.1.100:8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.100:8080
iptables -t nat -A POSTROUTING -j MASQUERADE  # 自动SNAT(出口网卡IP伪装)

5.开放 Web 服务器端口

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

6.指定阻止访问多个端口服务

iptables -A INPUT -s 10.0.0.9 -p tcp --dport 22:80 -j DROP    --- 匹配连续的端口号访问
iptables -A INPUT -s 10.0.0.9 -m multiport -p tcp --dport 22,24,25 -j DROP   --- 匹配不连续的端口号访问

7.禁止访问80端口

iptables -A INPUT -p tcp --dport 80 -j DROP允许 192.168.19.1 访问 80 端口的数据包
iptables -I INPUT -p tcp -s 192.168.19.1 --dport 80 -j ACCEPT
↓
仅允许 192.168.19.1 访问80端口的数据包

8.放行整个19段

iptables -I INPUT -p tcp -s 192.168.19.1/24 --dport 80 -j ACCEPT

规则配置后未保存,导致iptables重启后失效

保存命令:

service iptables save 
4. 安全配置模板
# 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT# 允许已建立的连接
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT# 开放 SSH 端口(示例:端口 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT# 开放 HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT# 允许 ICMP(Ping)
iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 1/s -j ACCEPT
Firewalld(Linux)

firewalld 只能做和 IP/Port 相关的限制,web相关的限制无法实现。

1. 基础操作
# 启动/停止服务
systemctl start firewalld
systemctl stop firewalld# 启用/禁用开机自启
systemctl enable firewalld
systemctl disable firewalld# 查看默认区域
firewall-cmd --get-default-zone# 查看当前活动规则
firewall-cmd --list-all
2. 常用规则配置

(1) 开放端口

# 开放TCP 80端口(HTTP)
firewall-cmd --permanent --add-port=80/tcp# 开放UDP 53端口(DNS)
firewall-cmd --permanent --add-port=53/udp# 重载配置生效
firewall-cmd --reload

(2) 允许服务

# 允许SSH服务(默认端口22)
firewall-cmd --permanent --add-service=ssh# 允许HTTP/HTTPS服务
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

(3) 限制IP访问

# 仅允许192.168.1.0/24网段访问SSH
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'# 拒绝特定IP(如10.0.0.5)访问所有端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.5" reject'

(4) 端口转发

# 将外部80端口转发到内部服务器192.168.1.100:8080
firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.100

相关文章:

  • 鼠标指定范围内随机点击
  • 面试踩过的坑
  • 深度学习--自然语言处理统计语言与神经语言模型
  • 2015-2023 各省 GDP 数据,用QuickBI 进行数据可视化——堆叠图!
  • 数据库-少库多表与多库少表理论
  • 数据库对比
  • 插入html文件,让数据可视化彰显高端大气-Excel易用宝
  • flume整合Kafka和spark-streaming核心编程
  • eclipse怎么导入junit4
  • vscode和git 踩坑
  • deepseek-r1-671B满血版,全栈式智能创作平台 - 多模态大模型赋能未来创作
  • JavaScript { message } = toRefs(obj) 中的 { message }的语法格式
  • 伟世通与火山引擎深度合作 前沿AI智能座舱解决方案亮相上海车展
  • 如何在Linux用libevent写一个聊天服务器
  • 提示js方法未定义,但是确实<textarea>标签未闭合。
  • AI网络渗透kali应用(gptshell)
  • 华为VRP系统简介配置TELNET远程登录!
  • AI 工程师崛起:科技浪潮下的新兴力量
  • Flink 数据清洗与字段标准化最佳实践
  • 【高中数学/古典概率】从1~2000中随机抽一个数,问取到的数既不被8整除,又不被12整除的概率是多少?
  • 我驻美使馆:中美并没有就关税问题磋商谈判,更谈不上达成协议
  • 俄方证实俄总统普京正在会见美特使威特科夫
  • 南国置业:控股股东电建地产拟受让公司持有的房地产开发业务等相关资产和负债
  • 印媒称印巴在克什米尔控制线沿线发生小规模交火,巴方暂未回应
  • 中信证券:“国家队”未曾减持ETF,应充分相信国家维稳决心
  • 中国驻英国大使郑泽光:中国需要世界,世界也需要中国