syslog功能传输协议为TLS时,设置syslog服务器地址为IPV4和IPV6成功,预期失败

答案内容由AI生成,仅供参考:

syslog功能传输协议为TLS时,设置syslog服务器地址为IPv4和IPv6问题分析

问题描述

在BMC系统版本为 25.09.03.01 的环境下,当配置syslog功能使用 TLS传输协议 时,成功设置了syslog服务器地址为IPv4(如 1.1.1.1)或IPv6地址,预期应设置失败,但实际设置成功。这与系统设计规范不符。


环境信息

  • BMC版本:25.09.03.01
  • BIOS版本:21.24
  • CPLD版本
    • 扩展板 BC02IOEA CPLD:V0.10
    • 主板 BC83AMDA-BC83AMDB CPLD:V6.12
    • 风扇板 BC83FDCA CPLD:V0.05
    • 直通板 BC02STMA CPLD:0.01
    • 12硬盘背板 BC01NHBB CPLD:5.03
  • OS版本/内核:NA
  • 硬件平台:openUBMC
  • 日志协议:Syslog over TLS

预期行为

根据系统设计规范:

当“传输协议”选择“TLS”时,Syslog服务器地址必须使用域名,不允许使用IPv4或IPv6地址

原因说明:

  • TLS协议依赖证书验证机制,证书通常绑定的是**主机名(域名)**而不是IP地址。
  • BMC作为Syslog客户端,在建立TLS连接时需验证服务器身份。若仅配置IP地址而无对应SNI(Server Name Indication)支持或证书绑定,将导致无法正确校验服务器合法性。
  • 系统设计要求用户在使用TLS时必须提供域名,并确保已在“BMC管理 > 网络配置”中正确配置DNS解析信息。

因此,使用IPv4或IPv6地址配置TLS通道应当被拒绝并提示错误


实际结果

尽管选择了 TLS 传输协议,用户仍能成功将 Syslog服务器地址设置为IPv4地址(例如 1.1.1.1),系统未阻止该操作。

示例配置:

  • 传输协议::white_check_mark: TLS
  • 服务器地址:1.1.1.1(IPv4)
  • 端口:8080
  • 结果::white_check_mark: 配置成功

此行为违反安全设计原则,可能导致以下风险:

  1. 证书验证失败或绕过:IP地址通常没有有效的域名证书,可能引发证书校验失败或被忽略。
  2. 中间人攻击风险增加:若未强制校验服务器身份,存在安全通信被劫持的风险。
  3. 不符合Redfish和行业安全标准

相关配置项与机制支持

配置项 当前值 描述
BMCSet_CustomSyslog_Trans_Protocol TLS 定义Syslog传输协议,支持UDP/TCP/TLS
BMCSet_CustomSyslog_0_IpAddr 1.1.1.1 存储第一个Syslog通道的目标地址
BMCSet_CustomSyslog_State 1(启用) 控制自定义Syslog功能状态
HwSyslogService v1_0_0 Redfish架构中定义的硬件日志服务
TransmissionProtocol TLS 在Redfish输出中标明传输协议为TLS

:play_button: 关系确认
通过KG数据可知:BMCSet_CustomSyslog_Trans_ProtocolSyslog,控制传输协议类型;而 HwSyslogService 输出中 TransmissionProtocol 被设为 TLS,表明系统已识别协议类型。


设计规范依据

来自文档《服务器出厂定制化配置》和UI说明:

:red_exclamation_mark: 重要说明

  • 当“传输协议”选择“TLS”时,服务器地址必须为域名
  • 使用域名时,必须在“BMC管理 > 网络配置”页面中配置正确的DNS信息。
  • 若域名的IP发生变化,需手动关闭再重新开启Syslog服务。
  • 域名格式限制:
    • 最大长度255字符
    • 仅允许数字、字母、-.
    • 连字符不能开头/结尾,点号不能开头
    • 任意两“.”之间不超过63字符

问题影响

影响项 说明
安全性降低 TLS的核心价值是身份认证,使用IP地址易导致证书不匹配或被忽略
合规性缺失 不符合Redfish、ISO/IEC 27001等安全日志传输标准
运维隐患 DNS解析变化后可能无法自动更新IP,造成日志丢失且无告警
证书管理混乱 当前系统使用统一SSL证书(Web/Redfish/Syslog共用),更应强调域名一致性

根本原因分析

  1. 前端界面未校验地址类型
    • Web UI允许在 TLS 模式下输入 IPv4/IPv6 地址,缺乏前置校验逻辑
  2. 后端接口未拦截非法输入
    • 后端命令如 ipmcset 或 Redfish API 接口未对 “protocol=tls && address=is_ip” 的组合进行拒绝处理。
  3. 配置流程绕过了证书验证强制检查
    • 即使地址为IP,系统仍尝试建立TLS连接,可能导致忽略证书错误或使用IP SAN证书(若存在)。

建议修复方案

:white_check_mark: 前端修复

if (protocol === 'TLS' && isIPAddress(serverAddress)) {
    showError("TLS 模式下不支持使用 IP 地址,请输入域名");
    disableSaveButton();
}

:white_check_mark: 后端校验(Redfish 或 ipmcset)

在处理 CustomSyslog 设置时加入判断逻辑:

if protocol == "TLS" and is_ip(server_address):
    return {
        "status": "error",
        "message": "TLS模式下服务器地址必须为域名"
    }

:white_check_mark: 增强Redfish Schema约束(HwSyslogService.v1_0_0)

"ServerAddress": {
  "description": "The address of the Syslog server",
  "type": "string",
  "pattern": "^(?=.{1,255}$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"
}

:white_check_mark: 并在 TransmissionProtocol == TLS 时强制该字段必须符合域名格式。


验证方法

  1. 登录BMC Web界面 → “维护诊断” → “告警上报”
  2. 启用Syslog,选择 TLS协议
  3. 尝试输入IPv4地址(如 1.1.1.1)作为服务器地址
  4. 预期结果
    • 输入框报错或保存按钮禁用
    • 提示:“TLS模式下必须使用域名”
  5. 输入有效域名(如 syslog.example.com)并保存 → 应成功

结论

当前在 openUBMC + BMC版本25.09.03.01 系统中存在一个安全配置缺陷

:warning: 在TLS传输模式下,允许将Syslog服务器地址设置为IPv4/IPv6地址,应禁止但未禁止

这违反了TLS通信的安全基本原则,降低了系统的可审计性和防篡改能力。建议立即在前端UI与后端服务层增加校验逻辑,强制TLS通道使用域名地址,以提升日志传输的安全性与合规性。

相关链接:

  1. 【iTestSmart 1.0.36】验证导入Syslog本地证书在不支持的传输协议时返回无明文敏感
  2. 集成busybox修改manifest.yml后,在docker下执行bingo build报错
  3. 【iTestSmart 1.0.36】CLI配置IPV4地址测试,测试结果Fail
  4. 映射器配置开发者测试配置指南
  5. 服务器出厂定制化配置 | 文档中心 | openUBMC