RHEL6 OPENLDAP 的搭建及本地帐户向LDAP 的迁移
一. 服务器环境准备1. 防火墙、selinux配置安装RHEL6.0操作系统(注意是RHEL6.0,因为不同版本操作系统对应修改的配置文件可能就不一样)配置前我们需要先关闭iptables和selinux。[root@ldap ~]# iptables -F[root@ldap ~]# service iptablessaveiptables:将防火墙规则保存到 /etc/sysconfig/iptables: [确定][root@ldap ~]# serviceiptables stopiptables:清除防火墙规则: [确定]iptables:将链设置为政策 ACCEPT:filter [确定]iptables:正在卸载模块: [确定][root@ldap ~]# chkconfigiptables off[root@ldap ~]# setenforce 0[root@ldap ~]# getenforce Permissive[root@ldap ~]# grep disabled/etc/selinux/config # disabled- No SELinux policy is loaded.SELINUX=disabled2. 网卡文件配置[root@ldap ~]# cat/etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0"HWADDR="00:0C:29:97:96:05"NM_CONTROLLED="yes"ONBOOT="static"IPADDR=192.168.37.37NETMASK=255.255.255.0GATEWAY=192.168.37.1DNS1=192.168.37.373. 主机名配置[root@ldap ~]# cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=ldap.example.com二. 安装配置Bind DNS Server1. 安装软件Bind软件包Linux下面使用的DNS服务端软件叫bindrpm -qa | grepbind #查询是否安装了bind软件如果没有安装就需要安装了yum installbind* -y2. 修改Bind配置文件修改根域配置文件如下,三个any。最后一个指向是区域配置文件的位置,主要为了和根域配置文件分离,方便管理。[root@ldap ~]# vim /etc/named.confoptions { listen-on port 53 { any;}; listen-on-v6 port 53 { any; }; allow-query { any; };include"/etc/named.rfc1912.zones";修改区域配置文件,添加如下信息,一个是正向解析,一个是方向解析。[root@ldap ~]#tail /etc/named.rfc1912.zoneszone "example.com" IN { typemaster; file"example.master"; allow-update{ none; };};zone "37.168.192.in-addr.arpa" IN{ typemaster; file"example.ptr"; allow-update{ none; };};3. 创建正向和方向解析文件区域配置文件可以通过拷贝named.localhost文件获得[root@ldapnamed]# pwd/var/named[root@ldapnamed]# lschroot dynamic example.ptr named.empty named.loopbackdata example.master named.ca named.localhost slaves[root@ldap named]# cat example.master $TTL 1D@ IN SOA @rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1ldap A 192.168.37.37node1 A 192.168.37.21instructor A 192.168.37.20[root@ldapnamed]# cat example.ptr $TTL 1D@ IN SOA @rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::137 PTR ldap.example.com20 PTR instructor.example.com38 PTR client.example.com三. 安装配置openldap Server1. 配置好本地yum源[root@ldap ldapuser1]# cat /etc/yum.repos.d/rhel.repo[server]name=serverbaseurl=file:///mntenable=1gpgcheck=0# yum -y install openldap-serversopenldap-clients[root@ldap ~]# rpm -qa |grep openldap-*openldap-clients-2.4.19-15.el6.x86_64openldap-2.4.19-15.el6.x86_64openldap-servers-2.4.19-15.el6.x86_642. 生成密码slappasswd 复制显示的密码[root@ldap ~]# slappasswdNew password: #根据自己的习惯设置响应的密码,此密码为Re-enter new password: #LDAP密码,导入用户和登陆phpldapadmin{SSHA}GXM2gG/n8jyIoFvTzTzo3Isgq9jUKEXk -[font=Wingdings]à#redhat,牢记后面有用。3. 生成openldap的公钥和私钥[font="]# openssl req -new -x509 -nodes -out /etc/pki/tls/certs/slapdcert.pem–keyout /etc/pki/tls/certs/slapdkey.pem -days 3654. 编辑ldap 数据库文件# vim /etc/openldap/slapd.d/cn=config/olcDatabase={1}bdb.ldif将dc=my-domain,dc=com替换为dc=example,dc=com在该文件最后增加以下三行olcRootPW: {SSHA}GXM2gG/n8jyIoFvTzTzo3Isgq9jUKEXk 此处为前面生成的密码,及我的环境的redhatolcTLSCertificateFile:/etc/pki/tls/certs/slapdcert.pemolcTLSCertificateKeyFile:/etc/pki/tls/certs/slapdkey.pem5. 指定管理员root 的DN# vim /etc/openldap/slapd.d/cn=config/olcDatabase={2}monitor.ldif将cn=manager,dc=my-domain,dc=com 替换为cn=Manager,dc=example,dc=com6. 生成DB配置文件DB_CONFIG.example复制到 /var/lib/ldap 重命令为DB_CONFIGRhel6.0$ cp /usr/share/doc/openldap-servers-2.4.19/DB_CONFIG.example >/var/lib/ldap/DB_CONFIGRhel6.1$ cp/usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG7. 开启slapd 的tls 功能# vim /etc/sysconfig/ldap将SLAPD=LDAPS=no 将的注释取消掉,同时将no 改为yes8. 测试ldap 的配置并启动# slaptest -u# service slapd start# chkconfig slapd on# ldapsearch -x -b"dc=example,dc=com"9. 迁移本地帐户到ldap server1. 安装迁移包# yum -y install migrationtools2. 修改迁移脚本# vim /usr/share/migrationtools/migrate_common.ph将else部分中的$NAMINGCONTEXT{'group'}= "ou=Group";改为$NAMINGCONTEXT{'group'}= "ou=Groups";修改以下两行$DEFAULT_MAIL_DOMAIN= ”example.com”;$DEFAULT_BASE = ”dc=example,dc=com”;将$EXTENDED_SCHEMA= 0; 改为 $EXTENDED_SCHEMA = 1;10. 生成base.ldif 文件[root@ldap migrationtools]# pwd/usr/share/migrationtools#./migrate_base.pl > /tmp/base.ldif将/etc/passwd,/etc/group 当中需要迁移到ldapserver 的用户及组的条目分别复制到/tmp/passwd,/tmp/group 中,也可以全部复制过去。生成passwd.ldif,group.ldif# ./migrate_passwd.pl passwd > /tmp/passwd.ldif# ./migrate_group.pl group > /tmp/group.ldif11. 导入ldif 文件到ldap此处会提示你输入密码,此密码即为前面生成的加密密码,我这里是redhat。# ldapadd -x -W -D ”cn=Manager,dc=example,dc=com” -f /tmp/base.ldif# ldapadd -x -W -D ”cn=Manager,dc=example,dc=com” -f /tmp/passwd.ldif# ldapadd -x -W -D ”cn=Manager,dc=example,dc=com” -f /tmp/group.ldif成功完成,Ok!!!四. 安装配置phpldapadmin GUI Web1. 下载pgpldapadmin软件到此网址下载:http://sourceforge.net/projects/phpldapadmin/files/phpldapadmin-php5/1.2.2/phpldapadmin-1.2.2.tgz/download]http://sourceforge.net/projects/phpldapadmin/files/phpldapadmin-php5/1.2.2/phpldapadmin-1.2.2.tgz/download2. 安装依赖软件包主要依赖apache和PHP来实现:#yum install php-ldap php httpd -y 3. 配置phpldapadmin#cd/var/www/html#tar zxf phpldapadmin-1.2.2.tgz #mv phpldapadmin-1.2.2 myldap #cd myldap/config #cp config.php.exampleconfig.php #/etc/init.d/httpd restart //如果httpd服务没安装,要先安装五. 访问LDAP Web-GUI界面1. 登陆GUIhttp://192.168.37.37/myldap]http://192.168.37.37/myldap登录的时候:DN框输入:[font="]cn=Manager,dc=example,dc=com密码框输入:redhat[img=554,356]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg[/img][img=554,370]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg[/img]2. 查看用户和组信息[img=554,344]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg[/img][img=554,326]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg[/img]六. 配置客户端自动登陆1. 发布客户端认证所需的TLS证书(未成功)将/etc/pki/tls/certs/slapdcert.pem拷贝到apache的目录下面,发布,供客户端下载认证使用。[img=394,142]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image009.png[/img]客户端访问获得证书路径http://ldap.example.com/certs/slapdcert.pem]http://ldap.example.com/certs/slapdcert.pem[img=553,216]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image011.jpg[/img]2. 配置客户端登陆认证(未成功)勾选使用TLS来加密连接,这是选择下载证书,输入上述客户端访问的证书的绝对路径,并下载。[img=423,386]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image013.jpg[/img][img=554,334]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image015.jpg[/img]点击应用,此时会推出图形化,然后启动一个叫sssd的进程,为了下次开机启动,需要将其加入开机启动项,Chkconfig sssdon。查看证书是否下载可以到此目录下面去查看是否有文件存在,默认是没有任何文件的。[root@client ~]#cd /etc/openldap/cacerts/ [root@client cacerts]# ls43eecb21.0 authconfig_downloaded.pem本文采用证书认证的方式未成功!!!!!但是通过非认证方式可以,估计是本文的证书有问题,所以这里暂且用非证书认证。运行setup,命令:[img=379,332]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image016.png[/img][img=476,265]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image017.png[/img][img=375,189]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image018.png[/img][img=506,94]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image019.png[/img][root@client ~]#tail /etc/passwdpostfix:x:89:89::/var/spool/postfix:/sbin/nologinavahi:x:70:70:AvahimDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologinntp:x:38:38::/etc/ntp:/sbin/nologinrpcuser:x:29:29:RPCService User:/var/lib/nfs:/sbin/nologinnfsnobody:x:65534:65534:AnonymousNFS User:/var/lib/nfs:/sbin/nologinpulse:x:496:494:PulseAudioSystem Daemon:/var/run/pulse:/sbin/nologingdm:x:42:42::/var/lib/gdm:/sbin/nologinsshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologintcpdump:x:72:72::/:/sbin/nologinclient:x:500:500::/home/client:/bin/bash[root@client ~]#su - ldapuser1su: warning: cannot change directory to/home/guests/ldapuser1: No such file or directory此报错为可以登陆,但是没有家目录,下面通过autofs来实现家目录的自动挂载。-bash-4.1$ iduid=1001(ldapuser1) gid=1001(ldapuser1) 组=1001(ldapuser1) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023-bash-4.1$ exitlogout[root@client ~]#3. 配置自动登陆服务器端需要通过nfs共享用户的家目录[root@ldap home]# cat /etc/exports /home/guests *(rw,sync)客户端需要配置autofs,在auto.master文件中添加如下行: [root@node1 ~]# grep home /etc/auto.master /home/guests /etc/auto.misc创建自动挂载配置文件并添加如下行:[root@node1 ~]# grep home /etc/auto.misc * -fstype=nfs.rw ldap.example.com:/home/guests/&启动服务并设置开机启动:[root@client ~]# service autofs restart正在启动automount:automount: program is already running. [确定][root@client ~]# chkconfig autofs on4. LDAP用户登陆[root@node1 ~]# su - ldapuser1[ldapuser1@node1~]$ iduid=1001(ldapuser1) gid=1001(ldapuser1) 组=1001(ldapuser1)[ldapuser1@node1~]$ pwd/home/guests/ldapuser1[ldapuser1@node1~]$