账号集中管理系统设计与实现----OpenLDAP

搭建一套OpenLDAP系统,实现账号的统一管理

可实现的功能:

1:OpenLDAP服务端的搭建

2:PhpLDAPAdmin的搭建(便于web页面管理)

3: OpenLDAP服务端配置分组管理用户sudo权限分配;

(1)默认没有sudo权限;

(2)运维具有sudo到任何用户执行任何命令权限;

(3)研发具有相应的配置执行命令权限

4:OpenLDAP客户端的配置

5:OpenLDAP与SSH

6:OpenLDAP结合客户端PAM,限制用户登录主机

7:OpenLDAP加入密码策略

(1)强制用户首次登录系统更改密码

(2)密码最小设置长度

(3)密码设置强度

(4)密码过期前警告天数

(5)密码过期后不能登录的天数

(6)密码尝试次数,被锁定

(7)密码失败后恢复时间

(8)是否允许用户修改密码

(9)账号锁定后,不能自动解锁,需管理员解锁

8:MirrorMode同步实现OpenLDAP双主模式

9,Keepalived+OpenLDAP实现OpenLDAP高可用

10,TCP Warppers

账号集中管理系统访问和维护流程:

实验环境:

系统:

主:CentOS6.5 64位 192.168.9.225

主:CentOS6.5 64 位 192.168.9.168

VIP: 192.168.9.253

客户端: CentoOS6.5 64位 192.168.9.176

软件包:

openldap-2.4.45

db-4.6.21

phpldapadmin-1.2.3

ltb-project-openldap-initscript-2.2

资料链接:

https://ltb-project.org/download
http://www.openldap.org/
http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index-082944.html
ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/
http://download.oracle.com/berkeley-db/db-4.6.21.tar.gz

一,安装OpenLDAP服务端

(俩台主安装方法一样)

1.1 基础环境配置

(1)系统初始化(参见http://wupengfei.blog.51cto.com/7174803/1955545)

(2)关闭防火墙与SElinux

service iptables stop
chkconfig iptables off
sed -i ‘[email protected][email protected][email protected]‘ /etc/selinux/config

(3)时间同步

yum -y install ntp
/usr/sbin/ntpdate -u clepsydra.dec.com tick.ucla.edu ntp.nasa.gov
echo "1 2 * * * /usr/sbin/ntpdate -u clepsydra.dec.com tick.ucla.edu ntp.nasa.gov" >> /var/spool/cron/root

1.2 源码安装OpenLDAP

(1)yum安装依赖包

yum -y install gcc gcc-c++ unzip gzip bzip2 openssl-devel cyrus-sasl-devel krb5-devel tcp_wrappers-devel libtool-ltdl-devel openslp-devel unixODBC-devel mysql-devel

(2)源码安装Berkeley DB

cd /usr/local/src/
wget http://download.oracle.com/berkeley-db/db-4.6.21.tar.gz
tar xf db-4.6.21.tar.gz 
cd db-4.6.21/build_unix/
../dist/configure --prefix=/usr/local/BDB4
make && make install
echo "/usr/local/BDB4/lib" >> /etc/ld.so.conf.d/bdb.conf
ldconfig 
ln -sv /usr/local/BDB4/include /usr/local/bdb

(3)源码安装OpenLDAP

cd /usr/local/src/
wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.45.tgz
gunzip -c openldap-2.4.45.tgz  | tar xf -
cd openldap-2.4.45
./configure --prefix=/usr/local/openldap2.4 --enable-slapd --enable-dynacl --enable-aci --enable-cleartext --enable-crypt  --enable-lmpasswd --enable-spasswd --enable-modules --enable-rewrite --enable-rlookups --enable-slapi --enable-wrappers --enable-backends --enable-ndb=no --enable-perl=no --enable-overlays CPPFLAGS="-I/usr/local/BDB4/include" LDFLAGS="-L/usr/local/BDB4/lib"
make depend
make
make test
make install
echo "/usr/local/openldap2.4/lib" >> /etc/ld.so.conf.d/ldap.conf
ldconfig
ln -sv /usr/local/openldap2.4/include /usr/include/ldap2.4
ln -sv /usr/local/openldap2.4/bin/* /usr/local/bin/
ln -sv /usr/local/openldap2.4/sbin/* /usr/local/sbin/

1.4 配置实现功能

(1)配置文件模板

# grep -v ^# slapd.conf | grep -v ^$
include        /usr/local/openldap2.4/etc/openldap/schema/corba.schema
include        /usr/local/openldap2.4/etc/openldap/schema/core.schema
include        /usr/local/openldap2.4/etc/openldap/schema/cosine.schema
include        /usr/local/openldap2.4/etc/openldap/schema/duaconf.schema
include        /usr/local/openldap2.4/etc/openldap/schema/dyngroup.schema
include        /usr/local/openldap2.4/etc/openldap/schema/inetorgperson.schema
include        /usr/local/openldap2.4/etc/openldap/schema/java.schema
include        /usr/local/openldap2.4/etc/openldap/schema/misc.schema
include        /usr/local/openldap2.4/etc/openldap/schema/nis.schema
include        /usr/local/openldap2.4/etc/openldap/schema/openldap.schema
include        /usr/local/openldap2.4/etc/openldap/schema/ppolicy.schema
include        /usr/local/openldap2.4/etc/openldap/schema/collective.schema
include         /usr/local/openldap2.4/etc/openldap/schema/sudo.schema
pidfile        /usr/local/openldap2.4/var/run/slapd.pid
argsfile    /usr/local/openldap2.4/var/run/slapd.args
modulepath    /usr/local/openldap2.4/libexec/openldap
moduleload accesslog.la
moduleload auditlog.la
moduleload ppolicy.la
moduleload syncprov.la
moduleload  back_mdb.la
moduleload  back_ldap.la
access to attrs=shadowLastChange,userPassword
        by self write
        by anonymous auth
        by dn.base="cn=admin,dc=dabayouxi,dc=com" write
        by * none
access to *
        by self write
        by * read
database config
access to *
        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
        by dn.base="cn=admin,dc=dabayouxi,dc=com" write
        by * none
database    mdb
suffix        "dc=dabayouxi,dc=com"
rootdn        "cn=admin,dc=dabayouxi,dc=com"
rootpw        {SSHA}jnN16Laklfzlm4hCrob1nhUgUloLpvnm
directory    /data0/openldap-data
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
loglevel 256
logfile /data0/logs/slapd/slapd.log
checkpoint 2048 10
overlay ppolicy
ppolicy_default cn=default,ou=pwpolicies,dc=dabayouxi,dc=com

(2)添加sudo.schema

cp -f /usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP /usr/local/openldap2.4/etc/openldap/schema/sudo.schema
restorecon /usr/local/openldap2.4/etc/openldap/schema/sudo.schema

(3)创建ldap用户和组

groupadd -r ldap
useradd -r -g ldap -s /sbin/nologin ldap

(4)配置日志

mkdir -p /data0/logs/slapd
touch /data0/logs/slapd/slapd.log
echo "local4.* /data0/logs/slapd/slapd.log" >> /etc/rsyslog.d/openldap.conf
service rsyslog restart
echo "/data0/logs/slapd/*log {
missingok
compress
notifempty
daily
rotate 5
create 0600 root root
}" >> /etc/logrotate.d/slapd

(5)配置数据存放路径

mkdir -p /data0/openldap-data
chmod 700 /data0/openldap-data/
cp /usr/local/openldap2.4/etc/openldap/DB_CONFIG.example /data0/openldap-data/DB_CONFIG
chown -R ldap.ldap /data0/openldap-data/
mkdir -p /usr/local/openldap2.4/etc/openldap/slapd.d
cd /usr/local/openldap2.4/etc/openldap/
slaptest -f slapd.conf -F slapd.d/
echo "BASE    dc=dabayouxi,dc=com
URI     ldap://192.168.9.168" >> /usr/local/openldap2.4/etc/openldap/ldap.conf

(6)启动脚本下载,修改配置

cd /usr/local/src/
wget https://ltb-project.org/archives/ltb-project-openldap-initscript-2.2.tar.gz
tar -xvf ltb-project-openldap-initscript-2.2.tar.gz
mv ltb-project-openldap-initscript-2.2/slapd /etc/init.d
vim /etc/init.d/slapd
SLAPD_PATH="/usr/local/openldap2.4"
DATA_PATH="/data0/openldap-data"
BDB_PATH="/usr/local/BDB4"

chmod +x /etc/init.d/slapd
chkconfig slapd on
service slapd restart

1.5 OpenLDAP目录树规划
# 将规划的dn导入,将以下内容写入ldif文件中使用ldapadd 命令添加到数据库

mkdir -p /data0/ldapldif/{users,groups,sudoers,policy}

(1)base.ldif

vim /data0/ldapldif/base.ldif
dn: dc=dabayouxi,dc=com
dc: dabayouxi
objectClass: top
objectClass: domain

dn: ou=users,dc=dabayouxi,dc=com
ou: users
objectClass: top
objectClass: organizationalUnit

dn: ou=groups,dc=dabayouxi,dc=com
ou: groups
objectClass: top
objectClass: organizationalUnit

dn: ou=sudoers,dc=dabayouxi,dc=com
ou: sudoers
objectClass: top
objectClass: organizationalUnit

dn: ou=pwpolicies,dc=dabayouxi,dc=com
ou: pwpolicies
objectClass: top
objectClass: organizationalUnit

ldapadd -x -D cn=admin,dc=dabayouxi,dc=com -W -f /data0/ldapldif/base.ldif 
Enter LDAP Password: 
adding new entry "dc=dabayouxi,dc=com"
adding new entry "ou=users,dc=dabayouxi,dc=com"
adding new entry "ou=groups,dc=dabayouxi,dc=com"
adding new entry "ou=sudoers,dc=dabayouxi,dc=com"
adding new entry "ou=pwpolicies,dc=dabayouxi,dc=com"
-x    使用简单认证,不使用加密协议
-D    指定查找的dn,类似操作系统中的根目录
-W    输入密码,不想输入密码使用-w passwd,不推荐容易暴露密码
-f     指定ldif文件

# 通过 ldapsearch查看当前目录树结构
ldapsearch -x -LLL      # -LLL    禁止输出不匹配的消息

(2)groups.ldif

echo "dn: cn=web,ou=groups,dc=dabayouxi,dc=com
objectClass: posixGroup
objectClass: top
cn: web
gidNumber: 1501" >> /data0/ldapldif/groups/web.ldif

echo "dn: cn=core,ou=groups,dc=dabayouxi,dc=com
objectClass: posixGroup
objectClass: top
cn: core
gidNumber: 1502" >> /data0/ldapldif/groups/core.ldif

ldapadd -x -D cn=admin,dc=dabayouxi,dc=com -W -f /data0/ldapldif/groups/web.ldif 
Enter LDAP Password: 
adding new entry "cn=web,ou=groups,dc=dabayouxi,dc=com"

ldapadd -x -D cn=admin,dc=dabayouxi,dc=com -W -f /data0/ldapldif/groups/core.ldif 
Enter LDAP Password: 
adding new entry "cn=core,ou=groups,dc=dabayouxi,dc=com"

(3)users.ldif

echo "dn: uid=webuser,ou=users,dc=dabayouxi,dc=com
uid: webuser
cn: webuser
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {SSHA}1F4G8mlpJ4asfQud0kJOsj6tIWdoiHEc
shadowLastChange: 17412
shadowMin: 0
shadowMax: 999999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 2501
gidNumber: 1501
homeDirectory: /home/webuser
pwdReset: TRUE" >> /data0/ldapldif/users/webuser.ldif

echo "dn: uid=coreuser,ou=users,dc=dabayouxi,dc=com
uid: coreuser
cn: coreuser
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {SSHA}1F4G8mlpJ4asfQud0kJOsj6tIWdoiHEc
shadowLastChange: 17412
shadowMin: 0
shadowMax: 999999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 2502
gidNumber: 1502
homeDirectory: /home/coreuser
pwdReset: TRUE" >> /data0/ldapldif/users/coreuser.ldif

ldapadd -x -D cn=admin,dc=dabayouxi,dc=com -W -f /data0/ldapldif/users/webuser.ldif 
Enter LDAP Password: 
adding new entry "uid=webuser,ou=users,dc=dabayouxi,dc=com"

ldapadd -x -D cn=admin,dc=dabayouxi,dc=com -W -f /data0/ldapldif/users/coreuser.ldif 
Enter LDAP Password: 
adding new entry "uid=coreuser,ou=users,dc=dabayouxi,dc=com"

(4)sudoers.ldif

vim /data0/ldapldif/sudoers/defaults.ldif
dn: cn=defaults,ou=sudoers,dc=dabayouxi,dc=com
objectClass: top
objectClass: sudoRole
cn: defaults
sudoOption: requiretty
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: env_reset 

vim /data0/ldapldif/sudoers/web.ldif
dn: cn=%web,ou=sudoers,dc=dabayouxi,dc=com
objectClass: top
objectClass: sudoRole
cn: %web
sudoHost: ALL
sudoRunAsUser: www
sudoOption: !authenticate
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: env_reset
sudoCommand: ALL
sudoUser: %web

vim /data0/ldapldif/sudoers/core.ldif
dn: cn=%core,ou=sudoers,dc=dabayouxi,dc=com
objectClass: top
objectClass: sudoRole
cn: %core
sudoHost: ALL
sudoRunAsUser: ALL
sudoOption: !authenticate
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: env_reset
sudoCommand: ALL
sudoUser: %core

ldapadd -x -D cn=admin,dc=dabayouxi,dc=com -W -f /data0/ldapldif/sudoers/defaults.ldif 
Enter LDAP Password: 
adding new entry "cn=defaults,ou=sudoers,dc=dabayouxi,dc=com"

ldapadd -x -D cn=admin,dc=dabayouxi,dc=com -W -f /data0/ldapldif/sudoers/web.ldif 
Enter LDAP Password: 
adding new entry "cn=%web,ou=sudoers,dc=dabayouxi,dc=com"

ldapadd -x -D cn=admin,dc=dabayouxi,dc=com -W -f /data0/ldapldif/sudoers/core.ldif 
Enter LDAP Password: 
adding new entry "cn=%core,ou=sudoers,dc=dabayouxi,dc=com"

(5)pwpolicies.ldif

echo "dn: cn=default,ou=pwpolicies,dc=dabayouxi,dc=com
cn: default
objectClass: pwdPolicy
objectClass: person
pwdAllowUserChange: TRUE
pwdAttribute: userPassword
pwdExpireWarning: 259200
pwdFailureCountInterval: 0
pwdGraceAuthNLimit: 5
pwdInHistory: 5
pwdLockout: TRUE
pwdLockoutDuration: 300
pwdMaxAge: 2592000
pwdMaxFailure: 5
pwdMinAge: 0
pwdMinLength: 8
pwdMustChange: TRUE
pwdSafeModify: TRUE
sn: dummy value" >> /data0/ldapldif/policy/default.ldif

ldapadd -x -D cn=admin,dc=dabayouxi,dc=com -W -f /data0/ldapldif/policy/default.ldif 
Enter LDAP Password: 
adding new entry "cn=default,ou=pwpolicies,dc=dabayouxi,dc=com"

1.6 安装PhpLDAPAdmin

yum install -y httpd php php-mbstring php-pear php-ldap
cd /usr/local/src/
wget https://jaist.dl.sourceforge.net/project/phpldapadmin/phpldapadmin-php5/1.2.3/phpldapadmin-1.2.3.zip
unzip phpldapadmin-1.2.3.zip
mkdir -p /data0/web_root/
mv phpldapadmin-1.2.3 /data0/web_root/phpldapadmin
echo "<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /data0/web_root/phpldapadmin
    ServerName openldap.dabayouxi.com
    ErrorLog /data0/logs/apache/openldap.dabayouxi.com-error_log
    CustomLog /data0/logs/apache/openldap.dabayouxi.com-access_log common
   <Directory "/data/web_root/phpldapadmin">
      Options FollowSymLinks
      AllowOverride all
      Require all granted
   </Directory>
</VirtualHost>" >> /etc/httpd/conf/httpd.conf
mkdir -p /data0/logs/apache/
service httpd restart

cp /data0/web_root/phpldapadmin/config/config.php.example /data0/web_root/phpldapadmin/config/config.php
vim /data0/web_root/phpldapadmin/config/config.php
$servers->setValue(‘server‘,‘host‘,‘192.168.9.168‘);
$servers->setValue(‘server‘,‘port‘,389);

浏览器访问输入:http://192.168.9.168

1.7 MirrorMode同步实现OpenLDAP双主模式

(1)192.168.9.168上slapd.conf最后添加

vim /usr/local/openldap2.4/etc/openldap/slapd.conf
#添加以下内容
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
serverID    1
syncrepl rid=123
         provider=ldap://192.168.9.225/
         bindmethod=simple
         binddn="cn=admin,dc=dabayouxi,dc=com"
         credentials=dabayouxi
         searchbase="dc=dabayouxi,dc=com"
         schemachecking=off
         type=refreshAndPersist
         retry="60 +"
mirrormode on

cd /usr/local/openldap2.4/etc/openldap/
slaptest -u
rm -rf slapd.d/*
slaptest -f slapd.conf -F slapd.d/
service slapd restart

(2)192.168.9.225上slapd.conf最后添加

vim /usr/local/openldap2.4/etc/openldap/slapd.conf
#添加以下内容
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
serverID    2
syncrepl rid=123
         provider=ldap://192.168.9.168/
         bindmethod=simple
         binddn="cn=admin,dc=dabayouxi,dc=com"
         credentials=dabayouxi
         searchbase="dc=dabayouxi,dc=com"
         schemachecking=off
         type=refreshAndPersist
         retry="60 +"
mirrormode on

cd /usr/local/openldap2.4/etc/openldap/
slaptest -u
rm -rf slapd.d/*
slaptest -f slapd.conf -F slapd.d/
service slapd restart

(2)测试同步

1.8 Keepalived+OpenLDAP实现OpenLDAP高可用

(1)下载安装keepalive

cd /usr/local/src/
wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz
yum install -y pcre-devel openssl-devel popt-devel
tar xf keepalived-1.2.13.tar.gz 
cd keepalived-1.2.13
./configure --prefix=/usr/local/keepalived
make
make install

(2)配置keepalived配置成系统服务

cd /usr/local/keepalived/
cp etc/rc.d/init.d/keepalived /etc/init.d/
cp etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp etc/keepalived/keepalived.conf /etc/keepalived/
cp sbin/keepalived /usr/sbin/
chkconfig keepalived on
chkconfig --list keepalived

(3)配置OpenLDAP热备

Master 192.168.9.168

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
        router_id OpenLDAP_HA
}

vrrp_instance OpenLDAP {
        state Backup               
        interface eth0
        virtual_router_id 53     
        priority 100                 
        advert_int 1
        nopreempt                  
        authentication {
                auth_type PASS
                auth_pass dabayouxi
        }
        virtual_ipaddress {
                192.168.9.253
         }
   }
   virtual_server 192.168.9.253 389 {
         delay_loop 6
         nat_mask 255.255.255.0
         persistence_timeout 50
         protocol TCP
         real_server 192.168.9.168 389 {
                  weight 3
                  notify_down "/etc/keepalived/openldap.sh"
                  TCP_CHECK {
                          connect_timeout 5
                          nb_get_retry 2
                          delay_before_retry 3
                  }
         }
 }

vim /etc/keepalived/openldap.sh
#!/bin/bash
/etc/init.d/keepalived stop

chmod +x /etc/keepalived/openldap.sh 

service keepalived start
Starting keepalived:                                       [  OK  ]

ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether fa:9b:55:ac:33:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.9.168/24 brd 192.168.9.255 scope global eth0
    inet 192.168.9.253/32 scope global eth0
    inet6 fe80::f89b:55ff:feac:3300/64 scope link 
       valid_lft forever preferred_lft forever

Master 192.168.9.225

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
        router_id OpenLDAP_HA   
}

vrrp_instance OpenLDAP {
        state Backup               
        interface eth0
        virtual_router_id 53     
        priority 90                 
        advert_int 1
        authentication {
                auth_type PASS
                auth_pass dabayouxi 
        }
        virtual_ipaddress {
                192.168.9.253
         }
   }
   virtual_server 192.168.9.253 389 {
         delay_loop 6
         nat_mask 255.255.255.0
         persistence_timeout 50
         protocol TCP
         real_server 192.168.9.225 389 {
                  weight 3
                  notify_down "/etc/keepalived/openldap.sh"
                  TCP_CHECK {
                          connect_timeout 5
                          nb_get_retry 2
                          delay_before_retry 3
                  }
         }
 }
 
 vim /etc/keepalived/openldap.sh
#!/bin/bash
/etc/init.d/keepalived stop

chmod +x /etc/keepalived/openldap.sh

service keepalived start

(4)验证

二,安装OpenLDAP客户端

2.1 基础环境配置

(1)系统初始化(参见http://wupengfei.blog.51cto.com/7174803/1955545)

(2)关闭防火墙与SElinux

service iptables stop
chkconfig iptables off
sed -i ‘[email protected][email protected][email protected]‘ /etc/selinux/config

(3)时间同步

yum -y install ntp
/usr/sbin/ntpdate -u clepsydra.dec.com tick.ucla.edu ntp.nasa.gov
echo "1 2 * * * /usr/sbin/ntpdate -u clepsydra.dec.com tick.ucla.edu ntp.nasa.gov" >> /var/spool/cron/root

1.2 源码安装OpenLDAP

(1)yum安装依赖包

yum -y install openldap  openldap-devel compat-openldap nss-pam-ldapd

(2)备份源文件

cp /etc/nslcd.conf /etc/nslcd.conf_default
cp /etc/nsswitch.conf  /etc/nsswitch.conf_dafault
cp /etc/pam.d/system-auth-ac  /etc/pam.d/system-auth-ac_default
cp /etc/pam.d/password-auth-ac  /etc/pam.d/password-auth-ac_default
cp /etc/pam.d/fingerprint-auth-ac /etc/pam.d/fingerprint-auth-ac_default
cp /etc/pam.d/smartcard-auth-ac /etc/pam.d/smartcard-auth-ac_default
cp /etc/pam.d/sshd /etc/pam.d/sshd_default
cp /etc/pam.d/login /etc/pam.d/login_default
cp /etc/openldap/ldap.conf /etc/openldap/ldap.conf_defalut
cp /etc/sudo-ldap.conf /etc/sudo-ldap.conf_default

(3)停用sssd服务

service sssd stop && chkconfig sssd off

(4)客户端文件配置修改

#/etc/nslcd.conf

vim /etc/nslcd.conf
uri ldap://192.168.9.253
base dc=dabayouxi,dc=com
ssl no
tls_cacertdir /etc/openldap/cacerts

#/etc/pam_ldap.conf

vim /etc/pam_ldap.conf
uri ldap://192.168.9.253
base dc=dabayouxi,dc=com
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5
bind_policy soft
pam_lookup_policy yes
pam_password clear_remove_old

#/etc/pam.d/system-auth

vim /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_ldap.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     required      pam_permit.so

password    requisite     pam_cracklib.so minlen=10 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1  try_first_pass retry=3 type=
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     optional      pam_mkhomedir.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so

#/etc/pam.d/password-auth

vim /etc/pam.d/password-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_ldap.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     required      pam_permit.so

password    requisite     pam_cracklib.so minlen=10 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1  try_first_pass retry=3 type=
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     optional      pam_mkhomedir.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so

#/etc/pam.d/fingerprint-auth

vim /etc/pam.d/fingerprint-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_fprintd.so
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     required      pam_permit.so

password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     optional      pam_mkhomedir.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so

#/etc/pam.d/smartcard-auth

vim /etc/pam.d/smartcard-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        [success=done ignore=ignore default=die] pam_pkcs11.so wait_for_card card_only
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     required      pam_permit.so

password    required      pam_pkcs11.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     optional      pam_mkhomedir.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so

#/etc/pam.d/sshd

vim /etc/pam.d/sshd
#%PAM-1.0
auth       required    pam_sepermit.so
auth       include      password-auth
account    required     pam_access.so
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      password-auth

#/etc/pam.d/login

vim /etc/pam.d/login
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       include      system-auth
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    required     pam_limits.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
-session   optional     pam_ck_connector.so

#/etc/nsswitch.conf

vim /etc/nsswitch.conf
passwd:     files ldap
shadow:     files ldap
group:      files ldap
hosts:      files dns
bootparams: nisplus [NOTFOUND=return] files
ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files
netgroup:   ldap
publickey:  nisplus
automount:  files ldap
sudoers:    files ldap

#/etc/sysconfig/authconfig

vim /etc/sysconfig/authconfig  
IPADOMAINJOINED=no
USEMKHOMEDIR=yes
USEPAMACCESS=no
CACHECREDENTIALS=yes
USESSSDAUTH=no
USESHADOW=yes
USEWINBIND=no
USESSSD=no
PASSWDALGORITHM=sha512
FORCELEGACY=no
USEFPRINTD=no
USEHESIOD=no
FORCESMARTCARD=no
USELDAPAUTH=yes
IPAV2NONTP=no
USELDAP=yes
USECRACKLIB=yes
USEIPAV2=no
USEWINBINDAUTH=no
USESMARTCARD=no
USELOCAUTHORIZE=yes
USENIS=no
USEKERBEROS=no
USESYSNETAUTH=no
USEDB=no
USEPASSWDQC=no

# /etc/sudo-ldap.conf

echo "uri ldap://192.168.9.253
sudoers_base ou=sudoers,dc=dabayouxi,dc=com" >> /etc/sudo-ldap.conf

#/etc/openldap/ldap.conf

vim /etc/openldap/ldap.conf
TLS_CACERTDIR /etc/openldap/cacerts
URI ldap://192.168.9.253
BASE dc=dabayouxi,dc=com

#/etc/security/access.conf

vim /etc/security/access.conf
添加内容
-:ALL EXCEPT root web : ALL

(5)启动服务

service nslcd restart

(6)测试

时间: 2024-10-09 23:44:01

账号集中管理系统设计与实现----OpenLDAP的相关文章

完整版的OpenLDAP搭建全过程

总结: 先写总结,再写正文,嘿嘿嘿.这还是第一次认真的写个文档,写个总结,哈哈.大概在一个月前,第一次听说这个东西,完全没有概念,刚开始的时候看理论的知识,看了几次之后就没看了,看不懂啊.太抽象了,真的太抽象了.然后就把它晾在一边了,又过了一段时间,想了想,既然知道了这个东西,还是得好好学学,好好了解一下.整个过程是在虚拟机上测试完成,期间遇到了太多太多的坑,一个问题就是好几天.这些只是基础的一些东西,还得好好的看看官方文档,嘿嘿嘿. 最大的收获就是整个学习过程中的解决问题的办法和思想,理论的知

详谈OpenLDAP系统

文档信息 目        的:搭建一套完整的OpenLDAP系统,实现账号的统一管理. 1:OpenLDAP服务端的搭建 2:PhpLDAPAdmin的搭建 3:OpenLDAP的打开日志信息 4:OpenLDAP与migrationtools实现导入系统账号的相关信息 5:OpenLDAP客户端的配置 6:OpenLDAP与SSH 7:OpenLDAP限制用户登录系统 8:OpenLDAP强制用户一登录系统更改密码 9:OpenLDAP与系统账号结合Samba 10:OpenLDAP的主从

ldap服务器OpenLDAP安装使用

OpenLDAP 是 LDAP 协议的一个开源实现.LDAP 服务器本质上是一个为只读访问而优化的非关系型数据库.它主要用做地址簿查询(如 email 客户端)或对各种服务访问做后台认证以及用户数据权限管控.(例如,访问 Samba 时,LDAP 可以起到域控制器的作用:或者 Linux 系统认证 时代替 /etc/passwd 的作用.) 一.安装,环境:CentOS release 6.6 (Final) 使用yum安装:yum -y install openldap compat-open

Ldap 从入门到放弃(一)

OpenLDAP 快速入门 一.Ldap简介 1.目录服务 目录是一个为查询.浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样. 目录服务的组成: 1.目录数据库 2.访问协议 目录数据库和关系数据库不同,写性能差,并且没有事务处理.回滚等复杂功能,不适于存储修改频繁的数据,但它优异的读性能让它天生为目录服务而生. 2.OpenLDAP 是什么 OpenLDAP 是一款轻量级目录访问协议(Lightweight Directory Acce

【硬广告】兼职简历

Hi 您好: 服务器维护是一件严肃的事情,可能您发现服务器很久也不出什么问题,一旦出问题可能将会是致命的,出问题的时候才能展现优秀系统工程师的价值.能搭建环境让业务运行起来的人很多,能让业务运行起来并稳定运行下去的人不多.只做最专业的代维! 一.您真的需要招一位全职的IT工作人员么? 二.您真的放心将公司重要系统(公司网站.内部敏感服务器等)交给非资深人士维护么? 三.您真的需要一个头痛医头脚痛医脚的"救火队员"么? 四.您真的信任外包公司派来的刚入行的"系统工程师"

基于SQLAlchemy实现的堡垒机

堡垒机 堡垒机是一种运维安全审计系统.主要的功能是对运维人员的运维操作进行审计和权限控制.同时堡垒机还有账号集中管理,单点登陆的功能. 堡垒机的实现我们主要采用paramiko和SQLalchemy,可以参考前面的paramiko博客. 堡垒机实现的流程 管理员为用户在服务器上创建账号(将公钥放置服务器,或者使用用户名密码),堡垒机服务器创建jumpserver.py的主程序文件,修改用户家目录 ./bashrc: /usr/bin/python   jumperserverPATH/jumps

运维自动化的必要条件

一.可扩展的高并发网站集群架构DNS->LB4->LB7->Cache->Web->中间件->DB->存储 前端的东西都放在CDN,静态的网页,1.智能DNS根据IP来源分配服务器2.机房内,LB4,4层LVS,http转发后不管了(如果想配置多个LVS,在DNS里面指向多个LVS,一般不需要,一个主备就OK)3.机房内,LB7,7层负载均衡,nginx,F5,A10(静态数据)4.WEB缓存集群5.图片服务器集群6.存储服务器集群7.数据库架构 二.可扩展的高并

堡垒机和防火墙有什么区别?

同样是用于安全保障,堡垒机和防火墙有什么区别呢? 什么是堡垒机? 堡垒机针对内部运维人员的运维安全审计系统.主要的功能是对运维人员的运维操作进行审计和权限控制.同时堡垒机还有账号集中管理,单点登陆的功能. 堡垒机作为IT系统看门人的堡垒机其严格管控能力十分强大,能在很大程度上的拦截非法访问和恶意攻击,对不合法命令进行命令阻断,过滤掉所有对目标设备的非法访问行为,并对内部人员误操作和非法操作进行审计监控,以便事后责任追踪. 不过审计是事后行为,审计可以发现问题,但是无法防止问题发生只有在事前严格控

(转)用Python写堡垒机项目

原文:https://blog.csdn.net/ywq935/article/details/78816860 前言 堡垒机是一种运维安全审计系统.主要的功能是对运维人员的运维操作进行审计和权限控制,风险规避.同时堡垒机还有账号集中管理,单点登陆的功能. 堡垒机有以下两个至关重要的功能: 集中管理 安全审计 当公司的服务器变的越来越多后,需要操作这些服务器的人就肯定不只是一个运维人员,同时也可能包括多个开发人员,那么这么多的人操作业务系统,如果权限分配不当就会存在很大的安全风险,举几个场景例子