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 相关文章推荐
Apache压力测试工具的安装使用
Mar 31 Servers
Nginx+Tomcat实现负载均衡、动静分离的原理解析
Mar 31 Servers
nginx限制并发连接请求数的方法
Apr 01 Servers
利用Nginx代理如何解决前端跨域问题详析
Apr 02 Servers
nginx安装以及配置的详细过程记录
Sep 15 Servers
详解nginx安装过程并代理下载服务器文件
Feb 12 Servers
Tomcat用户管理的优化配置详解
Mar 31 Servers
nginx容器方式反向代理实战
Apr 18 Servers
centos7安装mysql5.7经验记录
May 02 Servers
tomcat正常启动但网页却无法访问的几种解决方法
May 06 Servers
kubernetes集群搭建Zabbix监控平台的详细过程
Jul 07 Servers
Nginx跨域问题解析与解决
Aug 05 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 空格,换行,跳格使用说明
2009/12/18 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
php判断电脑访问、手机访问的例子
2014/05/10 PHP
Google AJAX 搜索 API实现代码
2010/11/17 Javascript
js控制input输入字符解析
2013/12/27 Javascript
JavaScript跨平台的开源框架NativeScript
2015/03/24 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
[01:08:33]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
Python图算法实例分析
2016/08/13 Python
将TensorFlow的模型网络导出为单个文件的方法
2018/04/23 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
在Django的View中使用asyncio的方法
2019/07/12 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
python能在浏览器能运行吗
2020/06/17 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
毕业证委托书范文
2014/09/26 职场文书
安全承诺书
2015/01/19 职场文书
辩护词范文大全
2015/05/21 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书
微信小程序APP页面的之间的相互传递参数以及自定义组件
2022/04/19 Javascript