4、防火墙基础概念:防火墙的定义与工作原理、包过滤防火墙、状态检测防火墙、应用层防火墙
各位同学,今天我们聊聊防火墙。说实话,防火墙这个概念在IT网络里已经存在几十年了,但在车载网络里,它还是个相对新鲜的事物。我个人习惯把防火墙比作「门卫」——它决定谁可以进来,谁必须滚蛋。
4.1 防火墙的定义与工作原理
防火墙,说白了就是一个网络边界上的安全设备。它按照预设的规则,对进出的网络流量进行审查和管控。你想想看,车载网络里那么多ECU,那么多总线,如果没有防火墙,那不就等于把家门敞开着吗?
它的工作原理其实不复杂:
- 接收数据包:从网络接口抓取每一个经过的数据包
- 解析包头:提取源IP、目的IP、端口号、协议类型等信息
- 匹配规则:拿这些信息去跟预设的规则表做比对
- 执行动作:允许通过、拒绝丢弃、或者记录日志
我在项目中遇到过一件事:某款车型的T-Box(远程通信终端)总是被攻击者扫描端口。后来我们加了一条防火墙规则,直接把所有非必要的入站连接全部丢掉。嗯,从那以后,扫描日志就安静了。
核心要点:防火墙不是万能的,但它能挡住90%的「瞎搞」流量。剩下的10%,需要靠其他安全机制来补。
4.2 包过滤防火墙
包过滤防火墙,这是最基础、最老派的一种。它只看数据包的头部信息,不关心数据包里面装了什么。
它的判断依据很简单:
- 源IP地址
- 目的IP地址
- 源端口号
- 目的端口号
- 协议类型(TCP、UDP、ICMP等)
举个例子,假设我们想禁止外部设备访问车载网关的调试端口(比如端口5555),可以这样配置:
# 伪代码示例:包过滤规则
规则1: 拒绝 任何 -> 网关IP:5555 (TCP)
规则2: 允许 任何 -> 任何 (其他流量)
你看,就这么简单。但问题也来了——它只看「信封」,不看「信的内容」。攻击者完全可以伪造一个合法的IP地址,然后发送恶意数据。我曾经在测试中发现,一个简单的IP欺骗攻击,就能绕过这种防火墙。
注意:包过滤防火墙对UDP和ICMP攻击几乎无能为力。因为UDP没有连接状态,ICMP又经常被滥用做DDoS攻击。在车载网络里,我建议只把它作为第一道防线,别指望它解决所有问题。
4.3 状态检测防火墙
状态检测防火墙,比包过滤聪明多了。它不光看每个数据包的头,还会记录「连接状态」。你想想看,一个TCP连接有三次握手,有数据传输,有四次挥手。状态检测防火墙会跟踪这些状态变化。
它的工作原理是这样的:
- 当一个SYN包进来,防火墙创建一个「连接表项」
- 记录源IP、目的IP、端口、序列号等信息
- 后续的数据包必须匹配这个连接表项
- 如果收到一个不属于任何已建立连接的RST包,直接丢弃
我记得有一次,我们在做车载以太网的渗透测试。攻击者尝试发送伪造的TCP RST包来中断通信。包过滤防火墙完全没反应,但状态检测防火墙立刻识别出这个RST包不属于任何已建立的连接,直接把它扔了。嗯,这就是状态检测的价值。
个人经验:在车载网络中,状态检测防火墙特别适合用在域控制器之间的通信链路上。因为域控制器之间的连接通常是长连接,状态表维护起来比较方便。但如果连接数太多(比如超过10万条),状态表会撑爆内存,这点要注意。
4.4 应用层防火墙
应用层防火墙,也叫深度包检测(DPI)防火墙。它不光看包头,还会拆开数据包,检查应用层的内容。说白了,它是个「拆信检查」的门卫。
它能做什么?
- 检查HTTP请求是否包含SQL注入语句
- 检测SOME/IP服务调用是否合法
- 识别并阻止恶意文件传输
- 验证诊断协议(如UDS)的会话序列是否正确
举个例子,在车载网络中,UDS诊断协议经常被滥用。攻击者可能发送一个非法的诊断会话请求。应用层防火墙可以这样处理:
# 伪代码示例:UDS诊断请求过滤
规则: 检查UDS请求中的SID(服务标识符)
如果 SID == 0x10(诊断会话控制):
检查源地址是否在白名单中
如果不在白名单: 丢弃并记录日志
如果在白名单: 允许通过
否则:
允许通过
我曾经在项目里遇到过一件事:某OEM的测试团队在路试时,发现车辆偶尔会进入「工程模式」。查了半天,发现是某个ECU收到了伪造的UDS请求。后来我们在网关上加了一层应用层防火墙,专门检查UDS请求的合法性。从那以后,这个问题再也没出现过。
避坑指南:应用层防火墙虽然强大,但性能开销也大。每检查一个数据包,都要做大量的字符串匹配和协议解析。在车载嵌入式平台上,CPU资源有限,别把所有流量都丢给应用层防火墙。我建议只对关键协议(如UDS、SOME/IP、DoIP)做深度检查,其他流量交给状态检测防火墙处理。
4.5 三种防火墙的对比
| 特性 | 包过滤防火墙 | 状态检测防火墙 | 应用层防火墙 |
|---|---|---|---|
| 检查深度 | 网络层/传输层头部 | 网络层/传输层 + 连接状态 | 网络层到应用层 |
| 性能开销 | 低 | 中 | 高 |
| 安全性 | 低 | 中 | 高 |
| 适用场景 | 简单ACL控制 | 域间通信 | 关键协议保护 |
| 车载典型应用 | CAN/CAN FD网关 | 车载以太网域控 | UDS/DoIP诊断 |
好了,关于防火墙的基础概念,我们就讲到这里。下一节我们会深入聊聊如何在车载网络中实际部署这些防火墙。记住一句话:没有最好的防火墙,只有最合适的防火墙。选型的时候,一定要结合你的硬件平台、网络拓扑和安全需求来定。