Kerberos+LDAP+NFSv4 实现单点登录(上)
Kerberos+LDAP+NFSv4 实现单点登录(上)
Kerberos : 身份认证 实验环境 : debian 9 三台主机: 以下 [email?protected]:~# 表示以root根用户运行命令 一.安装NTP时间同步 在一台主机上安装时间同步服务器 在其它主机上安装时间同步客户端 二.配置本地域 以上三台主机的/etc/hosts文件内容都配置如下: 注意:127.0.1.1一定要xxx.ctp.net的格式,以确定域ctp.net [email?protected]:~# hostname -d ctp.net 或 [email?protected]:~# dnsdomainname ctp.net 三.kdc服务器的安装 1.安装LDAP slapd : OpenLDAP服务器 安装过程中仅要求设置密码,该密码是ldap数据库管理员密码.设置LDAP的域默认是由hostname -d获得(即ctp.net) 安装过程预先添加了四个模式 安装过程初始化了配置数据库(cn=config)和ldap数据库(dc=ctp,dc=net) 1)配置ssl 为了简便,建立免短语密码永不过期证书 使用gnutls-bin工具建证书 1.1)建根证书 [email?protected]:~# certtool --generate-privkey > cakey.pem Generating a 3072 bit RSA private key... 新建文件ca.info并编辑 [email?protected]:~# cat ca.info ca cert_signing_key expiration_days = -1 [email?protected]:~# 说明:-1表示永不过期 进行自签名 [email?protected]:~# certtool --generate-self-signed --load-privkey cakey.pem --template ca.info --outfile cacert.pem Generating a self signed certificate... ...(略) Signing certificate... [email?protected]:~# 1.2)建服务器证书 生成私钥 [email?protected]:~# certtool --generate-privkey > fgkey.pem Generating a 3072 bit RSA private key... 新建文件srv.info并编辑 [email?protected]:~# cat srv.info tls_www_server encryption_key signing_key expiration_days = -1 [email?protected]:~# 签发服务器证书 [email?protected]:~# certtool --generate-certificate --load-privkey fgkey.pem --load-ca-certificate cacert.pem --load-ca-privkey cakey.pem --template srv.info --outfile fgcert.pem Generating a signed certificate... ... Signing certificate... [email?protected]:~# 新建存放私钥的目录 复制私钥、证书 [email?protected]:~# cp fgcert.pem /etc/ldap/ssl/ [email?protected]:~# cp fgkey.pem /etc/ldap/ssl/private/ 设置私钥属性为仅openldap用户拥有可读(因debian的openldap是以openldap用户运行) [email?protected]:~# chown openldap /etc/ldap/ssl/private/fgkey.pem [email?protected]:~# ls -l /etc/ldap/ssl/private/fgkey.pem -rw-r--r-- 1 openldap root 8289 Oct 19 13:44 /etc/ldap/ssl/private/fgkey.pem [email?protected]:~# [email?protected]:~# chmod o-r /etc/ldap/ssl/private/fgkey.pem [email?protected]:~# ls -l /etc/ldap/ssl/private/fgkey.pem -rw-r----- 1 openldap root 8289 Oct 19 13:44 /etc/ldap/ssl/private/fgkey.pem 1.3)配置openldap启用ssl 新建文件ssl.ldif并编辑 [email?protected]:~# cat ssl.ldif dn: cn=config changetype: modify add: olcTLSCertificateFile olcTLSCertificateFile: /etc/ldap/ssl/fgcert.pem - add: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/ldap/ssl/private/fgkey.pem [email?protected]:~# openldap的配置没有使用传统的slapd.conf文件,而是操作方式犹如ldap数据库的配置数据库,在/etc/ldap/slapd.d/目录下,结构层次分明的目录及ldif文件. 安装LDAP安装后,虽已预先创建了配置数据库管理员,但没设密码,仍不可使用.但也已设置了允许root根用户通过EXTERNAL认证方式读写配置数据库,所以本实验在root根用户下运行ldap命令工具. [email?protected]:~# ldapadd -Y EXTERNAL -H ldapi:/// -f ssl.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config" 1.4)修改/etc/default/slapd文件 重启openldap 2)设置ACL访问控制列表 为避免存储任何明文的密码,所以本实验采用第2种方式 Kerberos进程是以root根用户运行,所以必需设置openldap的ACL允许root根用户进程读写ldap数据库. 设置ACL是设置olcAccess的值,因olcAccess是多值的属性,本人不懂得ldapmodify命令如何修改多值的属性中的某个值. 修改/etc/ldap/slapd.d/cn=config/olcDatabase={1}mdb.ldif文件 [email?protected]:~# /etc/init.d/slapd stop [email?protected]:~# /etc/init.d/slapd start 重启openldap后,root根用户便可运行类似 ldapadd -Y EXTERNAL -H ldapi:/// -f xxx.ldif 命令读写ldap数据库. 2.安装Kerberos heimdal-kdc : Kerberos服务器 kdc服务器需Kerberos服务端和客户端 Kerberos安装后,修改配置文件kdc.conf、krb5.conf 1)Kerberos服务端配置/etc/heimdal-kdc/kdc.conf内容 [kdc] acl_file = /etc/heimdal-kdc/kadmind.acl #--v-- 使用ldap数据库作为后端时,并要使用kpasswdd必需加下面两行. [kadmin] [password_quality] 2)Kerberos客户端配置/etc/krb5.conf内容 default_realm = CTP.NET #The following krb5.conf variables are only for MIT Kerberos. #--v-- #The following libdefaults parameters are only for Heimdal Kerberos. [realms] [domain_realm] [login] 3)重启heimdal-kdc [email?protected]:~# /etc/init.d/heimdal-kdc stop [email?protected]:~# /etc/init.d/heimdal-kdc start 3.安装schema2ldif schema2ldif : schema到ldif转换工具 LDAP模式通常同时提供schema和ldif两个文件,但heimdal-kdc只提供hdb.schema文件,没提供LDIF格式文件 openldap添加heimdal模式,模式文件在/etc/ldap/schema/hdb.schema 1)转换格式 2)在线添加模式 [email?protected]:~# ldapadd -Y EXTERNAL -H ldapi:/// -f hdb.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=auth ... 4.添加数据库记录 1)ldap数据库添加krb5组织条目 [email?protected]:~# cat krb5.ldif dn: ou=hdkrb5,dc=net krb5PrincipalName: [email?protected] ou: hdkrb5 objectClass: krb5Principal objectClass: organizationalUnit [email?protected]:~# [email?protected]:~# ldapadd -x -D "cn=admin,dc=net" -W -f krb5.ldif Enter LDAP Password: 输入ldap数据库管理员的密码(在安装openldap时设置的密码) adding new entry "ou=hdkrb5,dc=net" [email?protected]:~# 2)初始化Kerberos数据库 [email?protected]:~# kadmin -l kadmin> init CTP.NET 花了两分钟 Realm max ticket life [unlimited]: kadmin> exit 3)新增Kerberos用户 Max ticket life [unlimited]:
4)在kdc服务器上测试kpasswd修改密码 [email?protected]:~$ kpasswd krblinlin [email?protected]‘s Password: 输入正确的密码 New password for [email?protected]: 重设定密码 Verify password - New password for [email?protected]: Success : Password changed [email?protected]:~$ 5)为用户krblinlin添加posixAccount对象类 新建文件unix.ldif并编辑 注:在用kadmin命令新增Kerberos用户,即也在ldap数据库新增了条目(含krb5Key等属性),该条目已有uid属性,所以添加posixAccount对象类不必再加uid属性 [email?protected]:~# cat unix.ldif dn: [email?protected],ou=hdkrb5,dc=net changetype: modify add: objectClass objectClass: posixAccount - add: cn cn: krblinlin - add: gidNumber gidNumber: 4001 - add: homeDirectory homeDirectory: /home/krblinlin - add: loginShell loginShell: /bin/bash - add: uidNumber uidNumber: 4001 - add: userPassword userPassword: linlin [email?protected]:~# ldapmodify -x -D "cn=admin,dc=net" -W -f unix.ldif Enter LDAP Password: modifying entry "[email?protected],dc=net" 条目([email?protected],dc=net)的userPassword属性是ldap用户的密码,而krb5Key属性应是包含Kerberos密码信息. 6)添加nfs服务器 [email?protected]:~# kadmin -l kadmin> add -r nfs/srvnf.ctp.net 新增 Max ticket life [unlimited]: kadmin> modify -a -disallow-svr nfs/srvnf.ctp.net kadmin> ext -k /home/linlin/srv/krb5.keytab nfs/srvnf.ctp.net 通过U盘将krb5.keytab复制到nfs服务器的/etc目录下,确保krb5.keytab权限为root拥有,仅root可读 [email?protected]:~# chown root:root /etc/krb5.keytab [email?protected]:~# chmod o-r /etc/krb5.keytab [email?protected]:~# chmod g-r /etc/krb5.keytab 7)添加nfs客户机 [email?protected]:~# kadmin -l kadmin> add -r host/clnf.ctp.net 一路回车缺省,此是客户机,不是应用服务器,无需删除disallow-svr kadmin> ext -k /home/linlin/cl/krb5.keytab host/clnf.ctp.net 通过U盘将krb5.keytab复制到nfs客户机的/etc目录下,仅root可读 四.Kerberos客户机的安装 安装后,修改配置文件krb5.conf Kerberos客户机配置/etc/krb5.conf内容 #The following krb5.conf variables are only for MIT Kerberos. #The following libdefaults parameters are only for Heimdal Kerberos. [realms] #--v-- 客户机可不用设,可注释掉 [domain_realm] [login]krb4_convert = truekrb4_get_tickets = false (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |