CentOS 6.8 OpenLDAP实现SSO并对sudo权限管控

当机器成千上百台增加的时候,如果需要对机器内一台一台的使用密码或者密钥登录,也是一件痛苦的事情,今天分享下使用OpenLDAP实现一个帐号任何机器及应用都可登录。

一.OpenLDAP安装及配置

1.安装依赖包及软件安装

yum install -y openldap openldap-servers openldap-clients openldap-devel

2.配置文件配置

cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG 
cp /usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP  /etc/openldap/schema/sudo.schema

#修改/etc/openldap/slapd.conf文件
找到include         /etc/openldap/schema/core.schema在下面增加
include         /etc/openldap/schema/sudo.schema

#找到database        bdb修改下面的几行
database        bdb
suffix          "dc=abc,dc=com"
checkpoint      1024 15
rootdn          "cn=admin,dc=abc,dc=com"
rootpw          admin
loglevel        1
#说明:
    database      bdb  说明使用Berkeley DB
    suffix        "dc=abc,dc=com"  域名就是abc.com
    checkpoint    1024 15 就是每1M或者每15分钟将缓存刷进磁盘
    rootdn        "cn=admin,db=abc,dc=com"  管理员是adnin
    rootpw        admin       管理员的密码就是admin
    loglevel      1            日志级别是1
    
#日志级别
Any (-1, 0xffffffff) //开启所有的dug 信息  
Trace (1, 0x1) //跟踪trace 函数调用  
Packets (2, 0x2) //与软件包的处理相关的dug 信息  
Args (4, 0x4) //全面的debug 信息  
Conns (8, 0x8) //链接数管理的相关信息  
BER (16, 0x10) //记录包发送和接收的信息  
Filter (32, 0x20) //记录过滤处理的过程  
Config (64, 0x40) //记录配置文件的相关信息  
ACL (128, 0x80) //记录访问控制列表的相关信息  
Stats (256, 0x100) //记录链接、操作以及统计信息  
Stats2 (512, 0x200) //记录向客户端响应的统计信息  
Shell (1024, 0x400) //记录与shell 后端的通信信息  
Parse (2048, 0x800) //记录条目的分析结果信息  
Sync (16384, 0x4000) //记录数据同步资源消耗的信息  
None (32768, 0x8000) //不记录  

#在文件最后增加如下,允许用户自行修改密码
access to attrs=shadowLastChange,userPassword
        by self write
        by * auth
access to *
        by * read

3.配置OpenLDAP日志

echo "local4.*          /var/log/sldap.log" >>/etc/rsyslog.conf
/etc/init.d/rsyslog restart

4.初始化OpenLDAP

service slapd start
rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d 
chown -R ldap:ldap /etc/openldap/slapd.d/
service slapd restart

5.检查服务

netstat -ntlup |grep :389

二.迁移用户(将本地的用户和组迁移到OpenLDAP)

1.安装迁移工具

yum install migrationtools -y
cd /usr/share/migrationtools/
[[email protected] migrationtools]# ls
migrate_aliases.pl              migrate_all_offline.sh  migrate_group.pl            migrate_profile.pl
migrate_all_netinfo_offline.sh  migrate_all_online.sh   migrate_hosts.pl            migrate_protocols.pl
migrate_all_netinfo_online.sh   migrate_automount.pl    migrate_netgroup_byhost.pl  migrate_rpc.pl
migrate_all_nis_offline.sh      migrate_base.pl         migrate_netgroup_byuser.pl  migrate_services.pl
migrate_all_nis_online.sh       migrate_common.ph       migrate_netgroup.pl         migrate_slapd_conf.pl
migrate_all_nisplus_offline.sh  migrate_common.ph.ori   migrate_networks.pl
migrate_all_nisplus_online.sh   migrate_fstab.pl        migrate_passwd.pl

2.配置迁移工具,修改migrate_common.ph 71、73行

$DEFAULT_MAIL_DOMAIN = "abc.com";

# Default base 
$DEFAULT_BASE = "dc=abc,dc=com";

3.导出用户,我这里只导出user1

cd /usr/share/migrationtools/
grep ‘user1‘ /etc/passwd > passwd.in
grep ‘user1‘ /etc/group > group.in
./migrate_base.pl > /tmp/base.ldif
./migrate_passwd.pl  passwd.in > /tmp/passwd.ldif
./migrate_group.pl  group.in > /tmp/group.ldif
#这里生成了3个OpenLDAP数据
/tmp/base.ldif /tmp/passwd.ldif /tmp/group.ldif

导入数据:
ldapadd -x -D "cn=admin,dc=abc,dc=com" -W -f /tmp/base.ldif
ldapadd -x -D "cn=admin,dc=abc,dc=com" -W -f /tmp/passwd.ldif
ldapadd -x -D "cn=admin,dc=abc,dc=com" -W -f /tmp/group.ldif

4.导入sudo基础库

vim /tmp/sudo.ldif

dn: ou=SUDOers,dc=abc,dc=com
objectClass: top
objectClass: organizationalUnit
description: SUDO Configuration Subtree
ou: SUDOers

dn: cn=defaults,ou=SUDOers,dc=abc,dc=com
objectClass: top
objectClass: sudoRole
cn: defaults
description: Default sudoOption‘s go here
sudoOption: visiblepw
sudoOption: always_set_home
sudoOption: env_reset

dn: cn=root,ou=SUDOers,dc=abc,dc=com
objectClass: top
objectClass: sudoRole
cn: root
sudoUser: root
sudoHost: ALL
sudoRunAsUser: ALL
sudoCommand: ALL
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: env_reset

dn: cn=%wheel,ou=SUDOers,dc=abc,dc=com
objectClass: top
objectClass: sudoRole
cn: %wheel
sudoUser: %wheel
sudoHost: ALL
sudoRunAsUser: ALL
sudoCommand: ALL
sudoOption: !authenticate
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: env_reset
sudoOption: requiretty

dn: cn=%confops,ou=SUDOers,dc=abc,dc=com
objectClass: top
objectClass: sudoRole
cn: %confops
sudoUser: %confops
sudoHost: ALL
sudoRunAsUser: ALL
sudoOption: !authenticate
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: env_reset
sudoCommand: ALL
sudoCommand: !/bin/passwd

dn: cn=%confdev,ou=SUDOers,dc=abc,dc=com
objectClass: top
objectClass: sudoRole
cn: %confdev
sudoUser: %confdev
sudoHost: ALL
sudoRunAsUser: ALL
sudoOption: !authenticate
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: env_reset
sudoCommand: /sbin/service
sudoCommand: !/bin/passwd
sudoCommand: /etc/init.d/tomcat
sudoCommand: /bin/kill
sudoCommand: /usr/bin/pkill
sudoCommand: /usr/bin/killall
sudoCommand: /etc/init.d/confservice
sudoCommand: /bin/su - app -s /bin/bash
sudoCommand: /bin/su - tomcat -s /bin/bash

dn: cn=%confqa,ou=SUDOers,dc=abc,dc=com
objectClass: top
objectClass: sudoRole
cn: %confqa
sudoUser: %confqa
sudoHost: ALL
sudoRunAsUser: ALL
sudoOption: !authenticate
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: env_reset
sudoCommand: /sbin/service
sudoCommand: !/bin/passwd
sudoCommand: /etc/init.d/confservice
sudoCommand: /bin/kill
sudoCommand: /usr/bin/pkill
sudoCommand: /usr/bin/killall
sudoCommand: /bin/su - app -s /bin/bash
sudoCommand: /bin/su - tomcat -s /bin/bash
sudoCommand: /etc/init.d/tomcat

dn: cn=zabbix,ou=SUDOers,dc=abc,dc=com
objectClass: top
objectClass: sudoRole
cn: zabbix
sudoHost: ALL
sudoUser: zabbix
sudoOption: !authenticate
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: env_reset
sudoRunAsUser: root
sudoCommand: !/bin/passwd
sudoCommand: /etc/init.d/tomcat
sudoCommand: /etc/init.d/confservice
sudoCommand: /usr/bin/nmap
sudoCommand: /usr/local/zabbix-ztc/bin/sudo-*

dn: cn=admin,ou=SUDOers,dc=abc,dc=com
objectClass: top
objectClass: sudoRole
cn: admin
sudoHost: ALL
sudoRunAsUser: ALL
sudoOption: !authenticate
sudoOption: !visiblepw
sudoOption: always_set_home
sudoOption: env_reset
sudoCommand: ALL
sudoCommand: !/bin/passwd
sudoUser: admin

导入sudo.ldif

ldapadd -x -D "cn=admin,dc=abc,dc=com" -W -f /tmp/sudo.ldif

从上面可以看到会生成

SUDOers    (OU)

%confdev    (cn)

%confops    (cn)

%confqa    (cn)

%wheel     (cn)

admin     (cn)

defaults    (cn)

root      (cn)

zabbix    (cn)

因此只需要建立组confdev,然后将用户拉入confdev组即可有相应的权限,同理zabbix用户也有zabbix相应的权限

二.客户端部署

CentOS 6

yum -y install openldap openldap-clients nss-pam-ldapd pam_ldap 
echo "session required pam_mkhomedir.so skel=/etc/skel umask=0077" >> /etc/pam.d/system-auth
authconfig --savebackup=auth.bak
authconfig --enablemkhomedir --disableldaptls --enableldap --enableldapauth --ldapserver=ldap://192.168.10.242 --ldapbasedn="dc=abc,dc=com"  --update
echo -e "uri ldap://192.168.10.242\nSudoers_base ou=SUDOers,dc=abc,dc=com" > /etc/sudo-ldap.conf
echo "Sudoers: files ldap" >>  /etc/nsswitch.conf

CentOS 5

yum -y install openldap openldap-clients nss_ldap
echo "session required pam_mkhomedir.so skel=/etc/skel umask=0077" >> /etc/pam.d/system-auth
authconfig --savebackup=auth.bak
authconfig --enableldap --enableldapauth --enablemkhomedir --ldapserver=192.168.10.242 --ldapbasedn="dc=abc,dc=com"  --update
echo "Sudoers_base ou=SUDOers,dc=abc,dc=com" >> /etc/ldap.conf
echo "Sudoers: files ldap" >> /etc/nsswitch.conf
时间: 2024-12-30 03:28:17

CentOS 6.8 OpenLDAP实现SSO并对sudo权限管控的相关文章

【CentOS】Linux sudo权限集中管理案例

目的 使得公司的Linux系统权限管理更规范,让每个用户拥有自己所该有的权限,防止因为某些用户的权限过大后的一些误操作,导致服务器的不正常运行. 操作 1.编辑Linux系统中的sudoers文件 [[email protected] ~]# vim /etc/sudoers #Edit by root User_Alias NETMAN = net01, net02 #用户别名 User_Alias ADMIN = admin01, admin02 User_Alias SA = %sa #定

嵌入式环境:CentOS下添加用户并且让用户获得root权限

CentOS下添加用户并且让用户获得root权限 http://www.centoscn.com/CentOS/config/2014/0810/3471.html 1.添加用户,首先用adduser命令添加一个普通用户,命令如下:  #adduser tommy //添加一个名为tommy的用户#passwd tommy   //修改密码Changing password for user tommy.New UNIX password:     //在这里输入新密码Retype new UN

CentOS添加用户及赋予sudo权限

在CentOS下添加一个用户假设用户名:username 密码:userpwd 新建用户: adduser username 修改密码: passwd username 根据提示重复输入两遍userpwd. 赋予sudo权限: visudo –f   /etc/sudoers 添加username(xin)如下图: 写入退出即可.

CentOS普通用户添加sudo权限

环境:VMware下的CentOS 操作: [[email protected] ~]$ sudo apt-get install samba   <-----普通用户kiwi要进行sudo操作 [sudo] password for shaokn:            <-----input passwd kiwi is not in the sudoers file. This incident will be reported. 提示用户shaokn不在sudoers文件里.我们要做的

CentOS配制FTP服务器,并且能用root权限登录

步骤如下: 1.运行yum install vsftpd命令 具体的细节如下:(如果无法更新,你先配置能访问互联网,我有文档叫 CentOS 在 VMware下,如何联网到Internet的解决办法可以解决无法上网的问题) [[email protected] ~]# yum install vsftpd Setting up Install Process Parsing package install arguments Resolving Dependencies --> Running

01:操作系统(centos,redhat):文件结构、目录、权限和用户

FHS:文件结构标准 /bin: 存放可执行的二进制程序,管理员和普通用户都可以使用 /sbin:管理员才能执行的命令 运行正常功能的程序存放位置 /usr/bin /usr/sbin 用来存放第三方软件的程序 /usr/local/bin /usr/local/sbin /boot:存放系统引导文件:内核.ramfs文件.bootloader(grub) /dev:设备文件存放目录 /etc:配置文件的集中存放目录 /etc/sysconfig:系统级别的应用 /etc/init.d:系统服务

centos 6.x 7.x 批量添加用户 开启sudo 权限 并设置密匙登录

需求背景: 局域网内全公司有50余台Linux服务器,现在有两个运维人员,之前都是使用root账号登录来管理服务器,现在想在每台服务器添加各自的账号,开启sudo权限,并设置密钥登录(密钥提前准备好了). 需求分析: 功能其实很简单,但是如果逐一登录服务器去配置,一台服务器5分钟,50台我已经不敢想象了--,所以想办法弄得简单些. 搭建简单ftp服务器: 本机利用IIS建立一个ftp服务器,把shell脚本,和管理员公钥放进去,注意允许ftp通过防火墙(详细步骤略)5分钟内可以完成本步骤:浏览器

CentOS下添加用户并且让用户获得root权限

修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示: ## Allow root to run any commands anywhereroot    ALL=(ALL)     ALLtom   ALL=(ALL)     ALL 修改完毕,现在可以用tom帐号登录,然后用命令 su - ,即可获得root权限进行操作. ---------------------------------------------------------------------

CentOS 普通用户设置sudo权限

1.先切换到root用户下,输入命令 su 2.添加sudo文件的写权限,命令是: chmod u+w /etc/sudoers 3.编辑sudoers文件 vi /etc/sudoers 找到 root ALL=(ALL) ALL 这一行 在"root  ALL=(ALL)   ALL"这一行下面,再加入一行: evai ALL=(ALL) ALL 其中,evai为你当前使用的用户名,也就是普通用户的用户名. ps:这里说下你可以sudoers添加下面四行中任意一条youuser