在前一篇"openBMC LDAP 設定(一) - nss-pam-ldapd" 提到了openbmc ldap設定和驗證,能從以下幾個方向來看
- nss-pam-ldapd
- ldap server 架設
- redfish/web 設定
因為openbmc支援了 openldap 和 windows 的ad,因此這篇選用OpenLDAP server架設為範例
LDAPS: openBMC LDAP 設定(三) - LDAPS(LDAP over TLS)
在Ubuntu上架設OpenLDAP Server
OpenLDAP是輕型目錄訪問協議(Lightweight Directory Access Protocol)的開源實現。通常用來管理公司組織的員工資料(帳號密碼),那從Directory可看出他就是一個目錄結構,那我們來一層一層解盲
- dc(Domain Component),這是一開始要設定的"DNS domain name"會作為base dn 使用,如bmc.com, 最後會轉換成 dc=bmc,dc=com 並成為ldap server的"base dn"
- dn(Distinguished Name), 是ldap的中每個entry獨一無二的區分名,因為他是個目錄結構,因此每個dn都會基於"base dn"往下長,例如ou=Group,他的dn就會是"ou=Group,dc=bmc,dc=com"
- admin account, ldap 都會有個admin entry(用來操作使用),他的dn通常會是"cn=admin,dc=bmc,dc=com",我們可以通做這組帳號來access ldap server
sudo apt install slapd ldap-utils
sudo dpkg-reconfigure slapd
自訂ldap 設定
ldapsearch -LL -Y EXTERNAL -H ldapi:/// -b dc=bmc,dc=com
ldapsearch -x -H ldap://127.0.0.1:389 -b "dc=bmc,dc=com" -D "cn=admin,dc=bmc,dc=com" -w admin
那接下來我們來產生兩個組織單位ou (Organizational Unit),分別是People和Group
dn: ou=Group,dc=bmc,dc=com
objectclass: organizationalUnit
ou: Group
dn: ou=People,dc=bmc,dc=com
objectclass: organizationalUnit
ou: People
command:
ldapadd -x -H ldap://127.0.0.1:389 -D "cn=admin,dc=bmc,dc=com" -w admin -f newou.ldif
接下來要來創建user 和 qroup
nss_pam_ldapd的default attributes如下(擷取自官網)
group (objectClass=posixGroup)
cn - group name
userPassword - password (by default mapped to "*")
gidNumber - gid
memberUid - members (user names)
member - members (DN values)
passwd (objectClass=posixAccount)
uid - account name
userPassword - password (by default mapped to "*")
uidNumber - uid
gidNumber - gid
gecos - gecos
homeDirectory - home directory
loginShell - shell
為什麼objectClass分別指定是posixAccount和posixGroup呢?
我們先來看看/etc/passwd的格式
provided from https://landoflinux.com/linux_passwd_command.html 其中原本linux密碼放在/etc/passwd裡面,但因為安全考慮, 之後密碼就移到/etc/shadow,而在/etc/passwd第二項以x作為標記。 |
dn: uid=lester, dc=aja, dc=com objectClass: top objectClass: account objectClass: posixAccount uid: lester cn: Lester the Nightfly userPassword: {crypt}X5/DBrWPOQQaI gecos: Lester loginShell: /bin/csh uidNumber: 10 gidNumber: 10 homeDirectory: /home/lester
userPassword values MUST be represented by following syntax:
passwordvalue = schemeprefix encryptedpassword schemeprefix = "{" scheme "}" scheme = "crypt" / "md5" / "sha" / altscheme altscheme = "x-" keystring encryptedpassword = encrypted password
The encrypted password contains of a plaintext key hashed using the algorithm scheme.
和/etc/passwd的atrribute對應如下
objectClass: posixAccount |
|
id |
uid |
password |
userPassword |
uid |
uidNumber |
gid |
gidNumber |
full_name |
gecos |
Home Directory |
homeDirectory |
Login shell |
loginShell |
group也是差不多,那因為passwd的格式有點複雜,所以我們先產生一個沒有密碼的user,後面再來設定他的密碼
dn: uid=iris,ou=People,dc=bmc,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: iris ye
sn: ye
uid: iris
uidNumber: 3001
gidNumber: 1200
loginShell: /bin/bash
homeDirectory: /tmp
command:
ldapadd -x -H ldap://127.0.0.1:389 -D "cn=admin,dc=bmc,dc=com" -w admin -f newuser.ldif
接下來設定user密碼
ldappasswd -x -H ldap://127.0.0.1:389 -D "cn=admin,dc=bmc,dc=com" -w admin "uid=iris,ou=People,dc=bmc,dc=com"
會回傳 New password: sdUo1UhJ 一個亂數密碼
那我們再透過這個亂數密碼來設定新的密碼(這邊設為iris)
ldappasswd -x -H ldap://127.0.0.1:389 -D "uid=iris,ou=People,dc=bmc,dc=com" -w sdUo1UhJ -s iris
dn: cn=webgroup,ou=Group,dc=bmc,dc=com
cn: webgroup
description: web users group
objectClass: posixGroup
gidNumber: 1200
command:
ldapadd -x -H ldap://127.0.0.1:389 -D "cn=admin,dc=bmc,dc=com" -w admin -f newgroup.ldif
dn: cn=webgroup,ou=Group,dc=bmc,dc=com
changetype: modify
add: memberUid
memberUid: iris
command:
ldapmodify -x -H ldap://127.0.0.2:389 -D "cn=admin,dc=bmc,dc=com" -w admin -f adduser2group.ldif
bmc設定
再webui上面填入相對應的值,就能透過iris這個user登入了
底下server URI 應該是ldap://192.168.24.1:389,字被cut掉了
[PATCH] /redfish/v1/AccountService, body 如下
{
"LDAP": {
"Authentication": {
"AuthenticationType": "UsernameAndPassword",
"Password": "admin",
"Username": "cn=admin,dc=bmc,dc=com"
},
"LDAPService": {
"SearchSettings": {
"BaseDistinguishedNames": [
"dc=bmc,dc=com"
],
"GroupsAttribute": "gidNumber",
"UsernameAttribute": "uid"
}
},
"RemoteRoleMapping": [
{
"LocalRole": "Administrator",
"RemoteGroup": "webgroup"
}
],
"ServiceAddresses": [
"ldap://10.142.24.9:389"
],
"ServiceEnabled": true
}
}
**補充 AMI BMC 之 LDAP user/group設定**
dn: cn=iris,ou=People,dc=bmc,dc=com
cn: iris
sn: ye
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
uid: iris
dn: cn=amigroup,ou=Group,dc=bmc,dc=com
member: cn=iris,ou=People,dc=bmc,dc=com
cn: amigroup
objectClass: groupOfNames
objectClass: top
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。