iSCSI服务器CHAP双向认证配置


Posted in Servers onApril 01, 2022

一 iSCSI和CHAP介绍

1.1 iSCSI 磁盘

  • iSCSI后端存储支持多种设备类型,主要有:
  • 文件
  • 单一分区(partition)

1.磁盘

2.数组

3.RAID

LVM 本手册建议以裸磁盘vdb作为示例,其他类型配置参考《002.iSCSI服务端多类型配置》。 同时本手册基于生产环境安全考虑,结合CHAP进行配置认证。

1.2 CHAP介绍

基于IP的认证比较粗糙,对于安全性要求高的环境来说,使用CHAP认证其安全性更有保障。

CHAP(Challenge-Handshake Authentication Protocol),称为挑战式握手认证协议,它是双向认证,当然也支持单向认证。

对于iscsi而言,在CHAP认证的机制上有两种方式:initiator authentication和target authentication。

1.2.1 initiator authentication认证

在initiator尝试连接到一个target的时候,initator需要提供一个用户名和密码给target被target进行认证。

也就是说initiator需要被target认证,它向target端提供的账号和密码是target端指定的。

这个账号和密码对于target来说是流入的账号和密码,用incoming表示。

称呼这个账号和密码为:incoming账号和incoming密码。

即,incoming账号是initiator端提供给target端,被target端认证的账号。

1.2.2 target authentication认证

在initiator尝试连接到一个target的时候,target有时也需要被initiator认证,以确保该target是合法而非伪装的target,这就要求target提供一个用户名和密码给initiator被initiator进行认证。 
target向initiator提供的账号和密码对于target而言是流出的,所以称之为outgoing。 
称呼这个账号和密码为:outgoing账号和outgoing密码。 
而对于initiator而言是incoming的,所以在initiator配置文件中称为in。 
也就是说outgoing账号是target端提供给initiator端,被initiator认证的账号,但尽管如此,这个账号和密码还是在target端创建和绑定的。

1.2.3 单/双向认证

两种认证方式是有层次顺序的。 
一般来说,有认证需求的时候都是服务器验证客户端是否有权限,iscsi也一样。 
initiator authentication可以单独存在,它可以在没有target authentication的情况下应用,这时候的CHAP认证就是单向认证(target认证initiator的合法性)。 
但target authentication只有在initiator authentication的基础上才能进行。也就是说target认证和initiator认证必须同时存在才可以。即initiator和target需要相互认证实现双向CHAP认证。

注意:发现认证和登录认证都支持单/双向认证。

二 iSCSI创建步骤

  • 建立用于共享的磁盘
  • 创建后备磁盘
  • 创建相应的IQN
  • 创建相应的规则
  • 为后备磁盘创建LUN
  • 创建双向认证账号和密码
  • 指定侦听的IP和端口
  • 检查并保存配置
  • 防火墙规则开放
  • 服务(开机)启动

三 前置准备

3.1 环境准备

主机名

IP

备注

iscsi

172.24.8.72

iSCSI服务器

client

172.24.8.71

iSCSI客户端

3.2 查看裸磁盘

[root@iscsi ~]# fdisk -l
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors

四 创建后备存储

4.1 安装相关软件

[root@iscsi ~]# yum -y install targetcli

4.2 交互设置

[root@system1 ~]# targetcli	                                                 
#进入targetcli交互配置视图
  • block:定义的块设备,磁盘驱动器、磁盘分区、LVM等
  • fileio:创建的指定大小的文件,如dd if=/dev/zero of=……所创建
  • pscsi:物理SCSI,通常不采用此类型
  • ramdisk:在内存中创建的一个指定大小ramdisk设备
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.
 
/> /backstores/block create block1 /dev/sdb                              #将裸磁盘创建为后备盘
/> /iscsi create wwn=iqn.2022-11.com.imxhy:disk01 #创建符合名称的IQN
/> /iscsi/iqn.2022-11.com.imxhy:disk01/tpg1/luns create /backstores/block/block1        #将创建的后备磁盘block1创建一个LUN
/> /iscsi/iqn.2022-11.com.imxhy:disk01/tpg1/acls create iqn.2021-11.com.imxhy:client      #只允许配置iqn.2021-11.com.imxhy:client的key才能使用此iSCSI提供的磁盘服务
/> /iscsi/iqn.2021-11.com.imxhy:disk01/tpg1/portals/ delete 0.0.0.0 3260                     #删除默认的全部侦听
/> /iscsi/iqn.2022-11.com.imxhy:disk01/tpg1/portals/ create 172.24.8.72 3260                 #指定本地用于侦听客户端连接的IP
/> /iscsi/ set discovery_auth enable=1 userid=discover password=discoverps                   #选配,本实验增加discovery的认证
/> /iscsi/ get discovery_auth
DISCOVERY_AUTH CONFIG GROUP
===========================
enable=True
-----------
The enable discovery_auth parameter.
mutual_password=
----------------
The mutual_password discovery_auth parameter.
mutual_userid=
--------------
The mutual_userid discovery_auth parameter.
password=discoverps
-------------------
The password discovery_auth parameter.
userid=discover
---------------
The userid discovery_auth parameter.
/> /iscsi/iqn.2022-11.com.imxhy:disk01/tpg1/acls/iqn.2021-11.com.imxhy:client/ set auth userid=user01 password=u1pass mutual_userid=muser01 mutual_password=m1pass
/> /iscsi/iqn.2022-11.com.imxhy:disk01/tpg1/acls/iqn.2021-11.com.imxhy:client/ get auth       #查看配置
AUTH CONFIG GROUP
=================
mutual_password=m1pass
----------------------
The mutual_password auth parameter.
mutual_userid=muser01
---------------------
The mutual_userid auth parameter.
password=u1pass
The password auth parameter.
userid=user01
-------------
The userid auth parameter.
/> ls /
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 1]
| | o- block1 ........................................................................... [/dev/sdb (1.0GiB) write-thru activated]
| | o- alua ................................................................................................... [ALUA Groups: 1]
| | o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
| o- fileio ................................................................................................. [Storage Objects: 0]
| o- pscsi .................................................................................................. [Storage Objects: 0]
| o- ramdisk ................................................................................................ [Storage Objects: 0]
o- iscsi ........................................................................................... [1-way disc auth, Targets: 1]
| o- iqn.2022-11.com.imxhy:disk01 ...................................................................................... [TPGs: 1]
| o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
| o- acls .......................................................................................................... [ACLs: 1]
| | o- iqn.2021-11.com.imxhy:client ......................................................................... [Mapped LUNs: 1]
| | o- mapped_lun0 ................................................................................ [lun0 block/block1 (rw)]
| o- luns .......................................................................................................... [LUNs: 1]
| | o- lun0 ..................................................................... [block/block1 (/dev/sdb) (default_tg_pt_gp)]
| o- portals .................................................................................................... [Portals: 1]
| o- 172.24.8.72:3260 ................................................................................................. [OK]
o- loopback ......................................................................................................... [Targets: 0]
/> exit

提示:如上操作:

1:创建的ACL将分配到每个LUN。

2:创建LUN必须在TPG下。

3:若不指定端口将采用默认端口3260

4:若不指定IP,将允许服务器上定义的所有网络接口上的连接

5:创建LUN必须在TPG下

五 防火墙开放

[root@iscsi ~]# firewall-cmd --add-port=3260/tcp --permanent                  #防火墙添加iSCSI的端口
[root@iscsi ~]# firewall-cmd --add-service=iscsi-target --permanent              #防火墙放通iSCSI target服务
[root@iscsi ~]# firewall-cmd --reload

六 开启服务

[root@iscsi ~]# systemctl enable target --now

七 客户端配置

[root@client ~]# yum -y install iscsi-initiator-utils                             #安装客户端
[root@client ~]# vim /etc/iscsi/initiatorname.iscsi                              #配置CHAP认证
InitiatorName=iqn.2021-11.com.imxhy:client
[root@client ~]# vim /etc/iscsi/iscsid.conf
……
node.session.auth.authmethod = CHAP
node.session.auth.username = user01
node.session.auth.password = u1pass
node.session.auth.username_in = muser01
node.session.auth.password_in = m1pass
discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = discover
discovery.sendtargets.auth.password = discoverps
[root@client ~]# systemctl restart iscsid

八 客户端登录

8.1 发现目标

[root@client ~]# iscsiadm -m discovery -t sendtargets -p 172.24.8.72                        #发现目标
172.24.8.72:3260,1 iqn.2022-11.com.imxhy:disk01

8.2 登录目标

[root@client ~]# iscsiadm -m node -T iqn.2022-11.com.imxhy:disk01 -p 172.24.8.72 -l           
#登录目标

8.3 查询信息

[root@client ~]# iscsiadm -m session -o show
tcp: [23] 172.24.8.72:3260,1 iqn.2022-11.com.imxhy:disk01 (non-flash)
[root@client ~]# iscsiadm -m session -P 3        #查询信息
iSCSI Transport Class version 2.0-870
version 6.2.0.874-22
Target: iqn.2022-11.com.imxhy:disk01 (non-flash)
        Current Portal: 172.24.8.72:3260,1
        Persistent Portal: 172.24.8.72:3260,1
                **********
                Interface:
                Iface Name: default
                Iface Transport: tcp
                Iface Initiatorname: iqn.2021-11.com.imxhy:client
                Iface IPaddress: 172.24.8.71
                Iface HWaddress: <empty>
                Iface Netdev: <empty>
                SID: 1
                iSCSI Connection State: LOGGED IN
                iSCSI Session State: LOGGED_IN
                Internal iscsid Session State: NO CHANGE
                *********
                Timeouts:
                Recovery Timeout: 120
                Target Reset Timeout: 30
                LUN Reset Timeout: 30
                Abort Timeout: 15
                *****
                CHAP:
                username: user01
                password: ********
                username_in: muser01
                password_in: ********
                ************************
                Negotiated iSCSI params:
                HeaderDigest: None
                DataDigest: None
                MaxRecvDataSegmentLength: 262144
                MaxXmitDataSegmentLength: 262144
                FirstBurstLength: 65536
                MaxBurstLength: 262144
                ImmediateData: Yes
                InitialR2T: Yes
                MaxOutstandingR2T: 1
                Attached SCSI devices:
                Host Number: 3  State: running
                scsi3 Channel 00 Id 0 Lun: 0
                        Attached scsi disk sdb          State: running

[root@client ~]# iscsiadm -m node -o show
# BEGIN RECORD 6.2.0.874-22
node.name = iqn.2022-11.com.imxhy:disk01
node.tpgt = 1
node.startup = automatic
……
iface.transport_name = tcp
node.discovery_address = 172.24.8.72
node.discovery_port = 3260
node.discovery_type = send_targets
node.session.initial_cmdsn = 0
node.session.initial_login_retry_max = 8
node.session.xmit_thread_priority = -20
node.session.cmds_max = 128
node.session.queue_depth = 32
node.session.nr_sessions = 1
node.session.auth.authmethod = CHAP
node.session.auth.username = user01
node.session.auth.password = ********
node.session.auth.username_in = muser01
node.session.auth.password_in = ********
node.session.scan = auto
node.conn[0].address = 172.24.8.72
node.conn[0].port = 3260

# END RECORD

[root@client ~]# fdisk -l                #发现的iSCSI服务器三个共享

九 格式化并挂载

9.1 格式化并挂载

注意:

1:此时能当做本地磁盘使用,分区格式化等操作;

2:可使用RAID或LVM来进行操作,LVM的可在之后格式化LV。

[root@client ~]# mkfs.ext4 /dev/sdb                 #格式化相关iSCSI磁盘
[root@client ~]# mkdir -p /iscsdisk/sdb01            #创建用于挂载sdd磁盘的挂载点        
[root@client ~]# mkdir -p /iscsdisk/lv01             #创建用于挂载LVM分区的挂载点
[root@client ~]# mount /dev/sdb /iscsdisk/sdb01/      #可直接挂载
[root@client ~]# vi /etc/fstab                      #自动挂载
……
/dev/sdb /iscsdisk/lv01    ext4    defaults    0 0

到此这篇关于iSCSI服务器CHAP双向认证配置的文章就介绍到这了,更多相关iSCSI服务器CHAP内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
详解如何修改nginx的默认端口
Mar 31 Servers
Nginx的反向代理实例详解
Mar 31 Servers
关于nginx 实现jira反向代理的问题
Sep 25 Servers
使用Nginx的访问日志统计PV与UV
May 06 Servers
Nginx 匹配方式
May 15 Servers
项目中Nginx多级代理是如何获取客户端的真实IP地址
May 30 Servers
netty 实现tomcat的示例代码
Jun 05 Servers
使用Apache Camel表达REST服务的方法
Jun 10 Servers
windows server 2012安装FTP并配置被动模式指定开放端口
Jun 10 Servers
Nginx配置使用详解
Jul 07 Servers
Docker容器harbor私有仓库部署和管理
Aug 05 Servers
SpringBoot前端后端分离之Nginx服务器下载安装过程
Aug 14 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 #Servers
Vertica集成Apache Hudi重磅使用指南
Nginx虚拟主机的配置步骤过程全解
Mar 31 #Servers
Tomcat用户管理的优化配置详解
Kubernetes关键组件与结构组成介绍
配置Kubernetes外网访问集群
CKAD认证中部署k8s并配置Calico插件
Mar 31 #Servers
You might like
用PHP实现登陆验证码(类似条行码状)
2006/10/09 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
php中smarty区域循环的方法
2015/06/11 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
2020/05/26 PHP
jquery.ui.progressbar 中文文档
2009/11/26 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
详解Vue之事件处理
2020/07/10 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
Python多线程学习资料
2012/12/19 Python
Python操作json数据的一个简单例子
2014/04/17 Python
跟老齐学Python之集合(set)
2014/09/24 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
Python生成器以及应用实例解析
2018/02/08 Python
python如何通过实例方法名字调用方法
2018/03/21 Python
快速解决vue.js 模板和jinja 模板冲突的问题
2019/07/26 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
Python json格式化打印实现过程解析
2020/07/21 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
Python爬取梨视频的示例
2021/01/29 Python
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
Veronica Beard官网:在酷、经典和别致之间找到了平衡
2018/01/11 全球购物
Boom手表官网:瑞典手表品牌,设计你的手表
2019/03/11 全球购物
Ruby如何实现动态方法调用
2012/11/18 面试题
幼儿园教师请假制度
2014/01/16 职场文书
电子商务个人职业生涯规划范文
2014/02/12 职场文书
经典婚礼主持词
2014/03/13 职场文书
事业单位鉴定材料
2014/05/25 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
入党转正介绍人意见
2015/06/03 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android