单向与双向的区别
CHAP 是 iSCSI 登录时使用的质询应答认证,凭据以预共享密钥的形式配置在两端。单向 CHAP 由目标端验证发起端身份,防止未授权主机接入;双向 CHAP 在发起端也验证目标端,用于防止主机连接到仿冒目标。认证在登录的安全协商阶段完成,与数据会话、发现会话分别配置,任一侧密钥或用户名写错都会直接登录失败。
基本信息
| 认证位置 | 登录安全协商阶段 |
|---|---|
| 配置位置 | 发起端:节点与发现两套认证参数;目标端:ACL 内的用户名与密钥 |
| 密钥要求 | 长度与字符集限制以厂商实现为准,通常在十几字节量级 |
| 安全边界 | 只验证身份,不对数据加密 |
| 权限要求 | 主机 root/管理员;目标端管理权限 |
典型使用场景
- 存储专用网络中限制哪些主机可以登录目标,防止误接
- 合规要求下需要双向验证,确认两端身份都可信
- 多租户环境按租户分配不同的入站用户名与密钥
- 排查登录失败时确认是认证问题还是网络或映射问题
- 批量扩容前核对凭据台账,避免主机配置与目标端不一致
两端配置要点
两端配置要点
# 发起端:节点会话认证(/etc/iscsi/iscsid.conf)
node.session.auth.authmethod = CHAP
node.session.auth.username = initiator01
node.session.auth.password = <入站密钥>
node.session.auth.username_in = target01 # 双向认证时填写
node.session.auth.password_in = <出站密钥> # 双向认证时填写
# 目标端(LIO):为某发起端设置认证凭据
targetcli /iscsi/iqn.2024-01.com.example:storage01/tpg1/acls/<发起端IQN> set auth userid=initiator01 password=<入站密钥>示例仅示意参数位置,具体键名与长度限制以所用实现版本的官方文档为准。
认证方式对比
| 对比项 | 单向 CHAP | 双向 CHAP |
|---|---|---|
| 验证方向 | 目标端验证发起端 | 两端互相验证 |
| 防范对象 | 未授权主机接入 | 主机连到仿冒目标 |
| 配置量 | 一对凭据 | 两对凭据,发现与数据会话各一套 |
| 失败表现 | 登录被拒,目标端记录认证失败 | 某一方向密钥错误时同样登录失败 |
CHAP 不加密数据流量,凭据本身也可能在明文存储中被读取;生产环境应同时隔离存储网络、限制配置文件权限,必要时叠加链路层加密。
发现会话与数据会话的凭据分别配置,二者不一致时表现为「发现成功但登录失败」或反向情况,排查时先把两处参数对齐。