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 相关文章推荐
Linux安装Nginx步骤详解
Mar 31 Servers
小程序后台PHP版本部署运行 LNMP+WNMP
Apr 01 Servers
教你快速开启Apache SkyWalking的自监控
Apr 25 Servers
nginx作grpc的反向代理踩坑总结
Jul 07 Servers
Linux安装apache服务器的配置过程
Nov 27 Servers
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
Feb 12 Servers
nginx负载功能+nfs服务器功能解析
Feb 28 Servers
解决xampp安装后Apache无法启动
Mar 21 Servers
聊聊配置 Nginx 访问与错误日志的问题
May 25 Servers
win10搭建配置ftp服务器的方法
Aug 05 Servers
Fluentd搭建日志收集服务
Sep 23 Servers
服务器nginx权限被拒绝解决案例
Sep 23 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获取数组中重复最多的元素的实现方法
2014/11/11 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
2017/06/22 Javascript
详解vue+css3做交互特效的方法
2017/11/20 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
[56:01]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 Effect vs EG
2018/03/31 DOTA
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
Python三级目录展示的实现方法
2016/09/28 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
Python for循环与getitem的关系详解
2020/01/02 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
HTML5实现音频和视频嵌入的方法
2018/08/22 HTML / CSS
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
Linux操作面试题
2012/05/16 面试题
外语专业毕业生自我评价分享
2013/10/05 职场文书
自荐书模板
2013/12/15 职场文书
办公室秘书自我鉴定
2014/01/18 职场文书
园林技术个人的自我评价
2014/02/15 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
技术员岗位职责范本
2015/04/11 职场文书
vue实现Toast组件轻提示
2022/04/10 Vue.js