guyuehhh 发表于 2018-11-23 06:46:56

redhat5.8+apache+ldap(提供软件包)

  搭建ldap分别通过web和lam管理,ldap+apache
  LDAP安装:
  # yum install -y openldap openldap-clientsopenldap-servers
  # ls /etc/openldap/
  slapd.conf      主配置文件
  lapd.conf       Client配置文件
  

  看是否已经有定义好的架构,关于描述linux系统用户和系统的组的对象类和属性类
  # cat /etc/openldap/schema/nis.schema
  MUST( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )       #字段值不能为空
  MAY( userPassword $ loginShell $ gecos $ description ) )      #字段值可以为空
  加密rootdn密码
  # slappasswd -h {MD5}
  New password:
  Re-enter new password:
  {MD5}ICy5YqxZB1uWSwcVLSNLcA==
  

  

  # vim /etc/openldap/slapd.conf
  include /etc/openldap/schema/nis.schema   #包含定义好的架构
  allow bind_v2                                          #定义版本,向下兼容
  pidfile /var/run/openldap/slapd.pid             #服务启动后的pid文件
  

  ... ...
  

  database bdb                              #b伯克利 db数据库
  suffix "dc=hn,dc=ny,dc=com"
  rootdn "cn=admin,dc=hn,dc=ny,dc=com"   #管理dn (ldap管理员账号 cn(common name),不要写OU,管理所有的OU)
  # Cleartext passwords, especially for therootdn, should
  # be avoided. See slappasswd(8) andslapd.conf(5) for details.
  # Use of strong authentication encouraged.
  # rootpw secret
  # rootpw {crypt}ijFYNcSNctBYg
  rootpw {MD5}ICy5YqxZB1uWSwcVLSNLcA==      #管理dn密码
  # The database directory MUST exist priorto running slapd AND
  # should only be accessible by the slapdand slap tools.
  # Mode 700 recommended.
  directory /var/lib/ldap          #真正数据库的位置,700权限,所有者及组为ldap
  

  # Indices to maintain for this database         #优化ldap的索引
  index objectClass                                    eq,pres
  index ou,cn,mail,surname,givenname          eq,pres,sub
  index uidNumber,gidNumber,loginShell      eq,pres
  index uid,memberUid                               eq,pres,sub
  index nisMapName,nisMapEntry                eq,pres,sub
  **************************************************
  access toattrs=shadowLastChange,userPassword by self write by * auth
  access to * by * read
  **************************************************
  #access 行定义了谁可以访问目录中的内容。我们希望用户可以修改自己的密码,并更新自己的shadow 信息来反映密码的变化。希望身份验证程序能够检索用户的密码。还希望用户能够读取所有其他条目。注意密码条目是不可读的,shadow 属性的惟一用处就是管理密码的过期问题。
  

  启动LDAP服务
  # ls /etc/openldap/
  cacerts DB_CONFIG.example ldap.conf schemaslapd.conf
  

  # cp /etc/openldap/DB_CONFIG.example/var/lib/ldap/DB_CONFIG
  

  # chown ldap /var/lib/ldap/DB_CONFIG
  

  # service ldap start
  Checking configuration files for slapd:config file testing succeeded [ OK ]
  Starting slapd: [ OK ]
  

  ldap库模板定义生成ldap目录结构的变量/usr/share/openldap/migration/ 中执行迁移。这些Perl 脚本的配置信息包含在migrate_common.ph文件的开头。对于我们的目的来说,只需要修改命名前缀的变量来使用条目的识别名就足够了
  

  # vimmigrate_common.ph
  $DEFAULT_MAIL_DOMAIN = "hn.ny.com";
  $DEFAULT_BASE = "dc=hn,dc=ny,dc=com";
  #./migrate_base.pl > /tmp/uplooking.ldif #perl脚本调用migrate_common.ph生成可以导入ldap的ldif文件
  

  # vim /tmp/ny.ldif
  dn: dc=hn,dc=ny,dc=com
  dc: hn
  objectClass: top
  objectClass: domain
  

  dn: ou=People,dc=hn,dc=ny,dc=com
  ou: People
  objectClass: top
  objectClass: organizationalUnit
  

  dn: ou=Group,dc=hn,dc=ny,dc=com
  ou: Group
  objectClass: top
  objectClass: organizationalUnit
  

  建立测试用户
  # for i in {1..5} ; douseradd ldap$i ; echo "123456" | passwd --stdin ldap$i ; done
  # grep -E ^ldap+/etc/passwd > /tmp/users.txt
  # grep -E ^ldap+/etc/group > /tmp/groups.txt 生成用户和组ldif文件
  # cd/usr/share/openldap/migration/
  #./migrate_passwd.pl /tmp/users.txt > /tmp/users.ldif
  #./migrate_group.pl /tmp/groups.txt > /tmp/groups.ldif
  

  # ldapadd -x -D"cn=admin,dc=hn,dc=ny,dc=com" -w 123456 -f ny.ldif
  # ldapadd -x -D"cn=admin,dc=hn,dc=ny,dc=com" -w 123456 -f groups.ldif
  # ldapadd -x -D"cn=admin,dc=hn,dc=ny,dc=com" -w 123456 -f users.ldif
  

  注:ny.ldif必须最先导入。
   -x 简单验证
   -D 指定身份
   -W 提示输入口令
  

  # netstat -tunpl| grep slapd
  tcp 0 0    0.0.0.0:389   0.0.0.0:*      LISTEN 17873/slapd
  tcp 0 0    :::389         :::*         LISTEN 17873/slapd
  

  在服务器上使用ldapsearch命令查询ldap数据库中的信息,检查ldif文件是否已经导入成功:
  # ldapsearch -x -w 123456-h 127.0.0.1 -D "cn=admin,dc=hn,dc=ny,dc=com" -b "dc=hn,dc=ny,dc=com"
  

  

  #system-config-authentication

  

  更改密码
  如何改变自己的密码ldappasswd 使用你自己的DN
  # ldappasswd -xD "uid=ldap1,ou=People,dc=hn,dc=ny,dc=com"-WS      #如果没有指定-S,会创建一个新的密码
  ldapwhoami测试登录
  # ldapwhoami -xD "uid=ldap1,ou=People,dc=hn,dc=ny,dc=com"–W
  

  WEB管理LDAP
  # yum install httpd phpphp-ldap
  # vim /etc/httpd/conf.d/php.conf
  # tar zxvfphpldapadmin-1.2.0.4.tgz
  # mv phpldapadmin-1.2.0.4/var/www/html/ldap
  # service httpd start
  # firefox http://localhost/ldap
  


  

  LAM
  # yum install httpd phpphp-ldap
  # rpm -ivh ldap-account-manager-2.6.0-0.fedora.1.noarch.rpm
  全局配置文件:(语言)
  # cd/var/www/html/lam/config
  # cp config.cfg_sample config.cfg
  对应服务器配置文件:
  # cp lam.conf_sample ldapserver1.conf
  # vim ldapserver.conf
  admins: cn=admin,dc=hn,dc=ny,dc=com
  passwd:{MD5}4QrcOUm6Wau+VuBX8g+IPg==
  treesuffix: dc=hn,dc=ny,dc=com
  注意:
  vim ldapuser1.conf 将全部my-domain替换ny.
  # chown -R apache.apache *
  # firefox http://localhost/lam
  


  

  

  Apache+ldap
  

  1.配置apache验证功能。验证页面如何连接ldap来验证
  2.让ldap存apache相关帐号,apache通过一个自有模块来支持连接ldap(mod_authz_ldap)
  # yuminstall mod_authz_ldap
  

  # vim/etc/httpd/conf.d/authz_ldap.conf
  LoadModuleauthz_ldap_module modules/mod_authz_ldap.so
  
           #设置在IfModule里面,如果模块生效,执行下面
  AuthzLDAPMethod ldap
  AuthzLDAPServer 192.168.0.116
  AuthzLDAPUserBase ou=People,dc=hn,dc=ny,dc=com
  AuthzLDAPUserKey uid
  AuthzLDAPUserScope base
  AuthType basic
  AuthName "ldap test"
  require valid-user
  
  
  # service httpd restart
  

  测试:
  客户端访问web server,提示需要身份验证,输入ldap服务器的帐号密码,验证通过后可以看到web内容
  例如账号:ldap1密码:上面自己设置的

  

  可以到 百度云盘下载 账号 pankuo1@sina.cn密码pk492940446

  




页: [1]
查看完整版本: redhat5.8+apache+ldap(提供软件包)