• 007.iSCSI服务器CHAP双向认证配置


    一 iSCSI和CHAP介绍

    1.1 iSCSI 磁盘

    • iSCSI后端存储支持多种设备类型,主要有:
    • 文件
    • 单一分区(partition)
    1. 磁盘
    2. 数组
    3. RAID
    4. 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创建步骤

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

    三 前置准备

    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设备
    targetcli shell version 2.1.53
    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
  • 相关阅读:
    【HDU 2874】Connections between cities(LCA)
    【Gym 100947C】Rotate It !!
    【CodeForces 615E】Hexagons
    Course Selection CodeChef
    UVA 10779 Collectors Problem[最大流]
    1855: [Scoi2010]股票交易[单调队列优化DP]
    1854: [Scoi2010]游戏[并查集]
    1853: [Scoi2010]幸运数字[容斥原理]
    poj3233 Matrix Power Series
    3969 [Mz]平方和【斐波那契平方和】
  • 原文地址:https://www.cnblogs.com/itzgr/p/16084730.html
Copyright © 2020-2023  润新知