利用ISCSI存储技术构建IP存储网络(安全篇)
???? 在前面的文章中,介紹了如何搭建一個簡單的iSCSI網絡存儲系統,作為iSCSI initiator的客戶端主機可以任意連接和使用iSCSI target共享出來的所有磁盤和分區,而在很多時候,通過授權認證連接共享磁盤或分區是必須的,例如:只允許客戶端主機A連接target共享出來的磁盤分區一,而客戶端主機B只允許連接target共享出來的磁盤分區二等等,在這種情況下,就需要在iSCSI target主機上進行授權設定了。
iSCSI 在授權訪問和安全管理方面有著不錯優勢,它能夠使用以主機為基礎,也就是以 IP地址為基礎來設定允許或拒絕存取;也可以通過用戶賬號密碼認證來完成允許或拒絕存取的設定。
???????? 下面通過一個應用案例來講述iSCSI授權獲取磁盤資源的方法。
有一個PC構架的iSCSI target服務器,共享的硬盤標識為/dev/sdc,大小10G,然后此硬盤劃分了兩個分區/dev/sdc1和/dev/sdc2,分別將/dev/sdc1共享給一個IP地址為192.168.12.136的windows客戶端主機,將/dev/sdc2共享給一個IP地址為192.168.12.26的Linux客戶端主機,iSCSI target服務器的IP地址為192.168.12.246。接下來通過IP認證和用戶密碼認證兩種方式來講述如何實現這種需求。
一、Initiator主機以IP認證方式獲取iSCSI Target資源
?此種方式配置非常簡單,只需在iSCSI target服務器上修改兩個文件即可,首先在iscsitarget主目錄/etc/iet目錄下找到ietd.conf文件,然后添加如下內容:
Target iqn.2000-04.net.ixdba:sdc1
Lun 0 Path=/dev/sdc1,Type=fileio
Target iqn.2002-04.net.ixdba:sdc2
Lun 0 Path=/dev/sdc2,Type=fileio
在ietd.conf文件中,定義了兩個Target,每個Target分別添加了對應的磁盤分區,接著修改/etc/iet/initiators.allow文件,這個文件是定義Initiator主機對target服務器的訪問規則,作用類似與Linux操作系統中的/etc/hosts.allow文件。修改完成的initiators.allow文件內容如下:
iqn.2000-04.net.ixdba:sdc1 192.168.12.136
iqn.2002-04.net.ixdba:sdc2 192.168.12.26
修改完成,重啟iscsi-target服務:
[root@iscsi-target iet]# service iscsi-target restart
Stopping iSCSI Target:???????????????????????????????????? [? OK? ]
Starting iSCSI Target:???????????????????????????????????? [? OK? ]
接著,在IP地址為192.168.12.26的Linux Initiator主機上執行如下操作:
[root@ Initiator iscsi]# /etc/init.d/iscsi restart
[root@ Initiator iscsi]#iscsiadm -m discovery -t sendtargets -p 192.168.12.246?
192.168.12.246:3260,1 iqn.2002-04.net.ixdba:sdc2
[root@ Initiator iscsi]#fdisk -l
Disk /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
?? Device Boot????? Start???????? End????? Blocks?? Id? System
/dev/sda1?? *?????????? 1????????? 13????? 104391?? 83? Linux
/dev/sda2????????????? 14?????? 38913?? 312464250?? 8e? Linux LVM
Disk /dev/sdb: 5724 MB, 5724794880 bytes
177 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 10974 * 512 = 5618688 bytes
?? Device Boot????? Start???????? End????? Blocks?? Id? System
/dev/sdb1?????????????? 1??????? 1018???? 5585735?? 83? Linux
通過重啟iscsi服務,重新執行Target發現,Linux系統已經識別了Target共享出來的磁盤分區,其中“/dev/sdb: 5724 MB”就是iSCSI共享磁盤,接下來就可以在linux上管理和使用這個共享磁盤了。
最后,登錄windows系統,打開Microsoft iSCSI Initiator,添加iSCSI共享磁盤即可,這個操作很簡單,這里不在詳述。
二、Initiator主機以密碼認證方式獲取iSCSI Target資源
iSCSI Target使用賬號密碼方式認證分成兩階段:
第一階段是Discovery查詢認證所使用的賬號和密碼(即SendTargets 用的)。
第二階段是登入Target / iqn / Lun時所使用的賬號密碼(即Login登錄時用的)。
此種方式在配置方面稍復雜一些,需要在Initiator主機和iSCSI Target服務器上做簡單配置,下面分步介紹。
?
1?配置iSCSI Target
首先修改/etc/iet/initiators.allow文件,打開所有權限,修改后的內容如下:
#iqn.2000-04.net.ixdba:sdc1 192.168.12.136
#iqn.2002-04.net.ixdba:sdc2 192.168.12.26
ALL ALL
?接著修改/etc/iet/ietd.conf文件,修改后的內容如下:
IncomingUser? discovery.auth? discoverysecret
Target iqn.2000-04.net.ixdba:sdc1
IncomingUser? login.windows.auth? windowssecret
Lun 0 Path=/dev/sdc1,Type=fileio
?
Target iqn.2002-04.net.ixdba:sdc2
IncomingUser? login.linux.auth linuxsecret
Lun 0 Path=/dev/sdc2,Type=fileio
?其中,第一個“IncomingUser”是個全局參數,用來指定Discovery查詢認證所使用的賬號和密碼,必須與initiator主機中設定的用戶名密碼一致。第二個和第三個“IncomingUser”選項包含在對應的Target中,用來指定windows和Linux客戶端主機登錄Target/iqn/Lun時所使用的賬號密碼。也必須與initiator主機中設定的用戶名密碼一致。
?所有配置完畢以后,重啟iscsitarget服務。
?
2?配置Linux Initiator主機
修改/etc/iscsi/iscsid.conf文件,添加如下選項:
#以下三個是針對login的
node.session.auth.authmethod = CHAP? ???#表示在login時啟用CHAP驗證。
node.session.auth.username = login.linux.auth? ??#驗證用戶名稱,可以是任意字符,但必須與target端IncomingUse配置的名字一致。
node.session.auth.password = linuxsecret? ???#驗證密碼,必須與target端對應的IncomingUse選項設置的密碼一致。
#以下三個是針對discovery的
discovery.sendtargets.auth.authmethod = CHAP? ?? #表示discovery時啟用CHAP驗證。
discovery.sendtargets.auth.username = discovery.auth? #驗證用戶名稱,可以是任意字符,但必須與target端IncomingUse配置的名稱一致。
discovery.sendtargets.auth.password = discoverysecret?#驗證密碼,必須與target端對應的IncomingUse選項設置的密碼一致。
配置完畢,重啟initiator,重新執行Discovery查詢,操作如下:
[root@ Initiator iscsi ]#/etc/init.d/iscsi restart
[root@ Initiator iscsi ]# iscsiadm -m discovery -t sendtargets -p 192.168.12.246
192.168.12.246:3260,1 iqn.2000-04.net.ixdba:sdc1
192.168.12.246:3260,1 iqn.2002-04.net.ixdba:sdc2
從查詢結果可知,initiator查詢到了兩個Target,最后執行fdisk操作:
[root@ Initiator iscsi ]# fdisk -l
Disk /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
?? Device Boot????? Start???????? End????? Blocks?? Id? System
/dev/sda1?? *?????????? 1????????? 13????? 104391?? 83? Linux
/dev/sda2????????????? 14?????? 38913?? 312464250?? 8e? Linux LVM
Disk /dev/sdb: 5724 MB, 5724794880 bytes
177 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 10974 * 512 = 5618688 bytes
?? Device Boot????? Start???????? End????? Blocks?? Id? System
/dev/sdb1?????????????? 1??????? 1018???? 5585735?? 83? Linux
從fdisk的輸出結果可知,Linux initiator已經成功連接了ISCSI共享磁盤,而“/dev/sdb: 5724 MB”就是識別的硬盤標識和大小。
?
3?配置windows Initiator主機
?配置windows Initiator主機的方法在前面章節已經有過介紹,這里僅僅講述不同的地方,首先打開Microsoft iSCSI Initiator,選擇第二個分頁標簽“Discovery”,然后在“Target Portals”部分點擊“Add”按鈕,跳出“Add Target Portal”窗口,在此窗口中填寫iSCSI Target的IP地址和端口,填寫完畢,點擊“Advanced”按鈕,如圖1所示:
圖1
?
在此界面下,選中“CHAP logon information”標簽,然后填寫Discovery查詢認證所使用的賬號和密碼。填寫完畢點擊“確定”按鈕。
接著選擇第三個分頁標簽“Targets”,此時Initiator已經從iSCSI Target端查詢到了兩個Target,選中第一個名為“Target iqn.2000-04.net.ixdba:sdc1 ”的target,點擊“Log On”按鈕,然后在彈出的“Log On to Target”窗口中點擊“Advanced”按鈕,如圖2所示:
圖2
?
在此界面下,選中“CHAP logon information”標簽,然后填寫客戶端登錄iSCSI Target / iqn / Lun時所使用的賬號密碼。填寫完畢點擊“確定”按鈕。
?此時,名為“Target iqn.2000-04.net.ixdba:sdc1 ”的target已經處于“Connectd”狀態,即Microsoft iSCSI Initiator已經連接上了iSCSI Target服務器共享出來的磁盤分區,最后,查看windows磁盤管理器,可以看到共享硬盤分區,如圖3所示:
圖3
?
到這里為止,windows已經可以對這個iSCSI磁盤進行分區、格式化等操作了。
?
總結
以上是生活随笔為你收集整理的利用ISCSI存储技术构建IP存储网络(安全篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ***惯用的社会工程学手法
- 下一篇: Imc连环画《红楼梦》