2,148 瀏覽數

RHEL5 – iSCSI CHAP 身分驗證

除了指定 IP 做 ACL 還可以透過 user / password (CHAP-Challenge Handshake Authentication Protocol 使用 MD5 的加密驗證) 來做身分驗證.

CHAP 有很多種除了1.單向 CHAP 驗證(在此安全性等級,只有目標 Target 會做驗證),另外一種是 2.相互 CHAP 驗證.
在此安全性等級,目標 Target 與啟動器 Initiator 皆會被彼此做驗證.最後是 3.Reverse CHAP,一般的 CHAP 使用 one-way hash,密碼檔無法回朔,但是使用 Reverse CHAP 是可以的.關於 Reverse CHAP 目前網路上我還查不太到很多的資料所以無法做說明.

先來說明第一種 單向 CHAP 驗證CHAP(Challenge Handshake Authentication Protocol)

預設 iSCSI 採用了 單向 CHAP(Challenge Handshake Authentication Protocol) 的身分驗證方式,基本上是一種以 MD5 的加密驗證方式.方式如下:

1. 在雙方(Target / Initiator) 建立連線後,Target 送出 "challenge" 的訊息告知 Initiator 要做身分驗證.
2. Initiator 會將使用者密碼使用 md5 做 one-way hash 並送出去給 Target 端.
假如使用者密碼是 :123456 ,md5 做過 one-way hash 之後變成 : f447b20a7fcbf53a5d5be013ea0b15af
3. Target 端將以經過 md5 的密碼和 Initiator 做比對,如果比對正確,這身份驗證及成立要不然就會將此次連結做中斷.
Target 端並沒有將原先密碼儲存下來,而是將密碼紀錄成做過 one-way hash  的 f447b20a7fcbf53a5d5be013ea0b15af.如果兩邊的 md5 一樣即代表成立.
4. 在正常連線過程中會不時重復做 1~3 的 CHAP 身分驗證.

為什麼身分驗證會採用 One Way Hashes 其優點是原資料已經不存在,傳送在網路上不需怕密碼檔被盜取.

note : One Way Hashes
One Way Hashes 主要會產生一組固定長度字串(fingerprint or message digests),這組字串用來比對原資料是否遭到修改,它的特性如下
1.原資料輸入長度為可變
2.輸出的 fingerprint 為固定長度
3.當資料任何 byte 改變時, fingerprint 也會變的完全不同
4.我們無法依據 fingerprint 來回推成原資料,這也是為什麼稱為 One Way hash(單方向的資料運算,函數多對一的特性)
既然無法回推成原資料,那怎知資料是否正確, One Way hash 會再將資料再做一次 One Way hash 然後直接比對 fingerprint 是否一樣.

不過所有的連線還是會受到 ACL 的限制, CHAP 只是多加上一層保護.先將之前設定先取消,將 ACL 改成 ALL.

[root@benjr ~]# tgtadm –lld iscsi –op unbind –mode target –tid 1 -I 192.8.1.121
[root@benjr ~]# tgtadm –lld iscsi –op unbind –mode target –tid 1 -I 192.8.1.0/24
[root@benjr ~]# tgtadm –lld iscsi –op unbind –mode target –tid 1 -I ALL

iSCSI 的帳號跟本地端的 Linux 帳號密碼無關,所以必須透過 "tgtadm" 來建立.

[root@benjr ~]# tgtadm –lld iscsi –op new –mode account –user benjr –password benjr
[root@benjr ~]# tgtadm –lld iscsi –op show –mode account
Account list:
    benjr

帳號是建立好了還要將他指定到哪一個 target.

[root@benjr ~]# tgtadm –lld iscsi –op bind –mode account –tid 1 –user benjr
[root@benjr ~]# tgtadm –lld iscsi –op show –mode target
Target 1: iqn.2009-4.tw.benjr:storage
    System information:
        Driver: iscsi
        Status: running
    I_T nexus information:
        I_T nexus: 4
            Initiator: iqn.1994-05.com.redhat:116f23e2ef8
            Connection: 0
                IP Address: 192.8.1.121
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: deadbeaf1:0
            SCSI SN: beaf10
            Size: 0
            Backing store: No backing store
        LUN: 1
            Type: disk
            SCSI ID: deadbeaf1:1
            SCSI SN: beaf11
            Size: 9G
            Backing store: /dev/sdb1
    Account information:
        benjr
    ACL information:
        ALL

iSCSI initiator 如要使用 CHAP 登入 Target,我們需要修改 /etc/iscsi/iscsid.conf, node.session.auth.username 和 node.session.auth.password 都要修改剛剛設定好的 –user benjr –password benjr
incoming 或是 outgoing 的 password 和 username 的最大限制是 256 字元.

[root@benjr ~]# cat /etc/iscsi/iscsid.conf
node.session.auth.username = benjr
node.session.auth.password = benjr

參考文件 : http://linux.vbird.org/somepaper/20081205-rhel5-iscsi.pdf

發表迴響