Linux下用户启用Windows AD做集中认证

Why

为什么要做服务器的集中认证(和统一权限管理)呢?简答之:当服务器数量呈几何级增长之后,为每台机器维护单独的用户系统已经成为了一个几乎不可能完成的任务(试想下为一万台服务器上的每个用户每三个月修改一次密码),虽然现在也可以通过类似于ansible之类的工具也可以比较容易地做到,但我们有更好的解决方案----统一认证,这样,只需要在一个地方维护用户数据即可,这样简洁可靠的方案,肯定比ansible之类的方案更胜一筹呀。

Howto

一句话;用sssd。不过sssd在这两个系统下都能跑,但这里为嘛把CentOS 6.x和7.x的系统分开讲呢?答案简单:由于CentOS 7.x下有realm从而使得配置巨简单而CentOS 6.x下没有realm(也不好编译使用,因为realm其依赖的某个软件包(glib2>=2.36)版本很高,而且那是一个及其重要的核心软件包,CentOS 6.x不好强行升级到这个版本)所以导致两个版本的配置方法不一样。

背景环境

  • xxx.corp: 是贵司Windows AD上的主域名
  • AD1.xxx.corp: 是贵司Windows AD上xxx.corp这个域的全局主域控制器
  • LoginNO: 是贵司AD域xxx.corp中一个组
  • Daha.Ma: 是贵司AD域xxx.corp中的一个普通用户
  • SudoNO: 是贵司AD域xxx.corp中一个组
  • admin.win: 是贵司AD域xxx.corp中的一个具有管理员权限的用户

具体部署

CentOS 6.x

安装软件

yum -y install sssd oddjob oddjob-mkhomedir \ 
    adcli samba-common authconfig;
adcli join xxx.corp -U admin.win; # 这里需要输入admin.win的密码
authconfig --enablesssd --enablesssdauth \ 
    --enablemkhomedir --update;
service messagebus start;
chkconfig messagebus on;
service oddjob start;
chkconfig oddjob on; # addjob用来自动建立用户的家目录

修改配置

krb5.conf
vim /etc/krb5.conf

使得看起来像这样:

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log
 
[libdefaults]
 default_realm = xxx.corp
 dns_lookup_realm = true
 dns_lookup_kdc = true
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 
[realms]
 xxx.corp = {
  kdc = AD1.xxx.corp
  admin_server = AD1.xxx.corp
 }
 
[domain_realm]
 .example.com = xxx.corp
 example.com = xxx.corp
sssd.conf
vim /etc/sssd/sssd.conf

修改内容如下:

[sssd]
services = nss, pam, ssh, autofs
config_file_version = 2
domains = xxx.corp
 
[domain/xxx.corp]
id_provider = ad
fallback_homedir = /home/%u
shell_fallback = /bin/bash
override_shell = /bin/bash
default_shell = /bin/bash
access_provider = simple
simple_allow_groups = LoginNO
simple_allow_users = Daha.Ma
sudoer
visudo

添加这么一句:

%SudoNO@xxx.corp   ALL=(ALL)       ALL

现在的情况将是:

  • 除了LoginNO组和Daha.Ma以外其他域账号不能登录
  • SudoNO组可以不用密码通过sudo执行任何命令

重启服务

systemctl restart sssd;

维护命令

id Daha.Ma@xxx.corp; # 从AD中获取域用户信息
id Daha.Ma; # 在/etc/sssh/sssd.conf中设置了use_fully_qualified_names为False的可以直接用
adcli delete-computer --domain=xxx.corp -U admin.win ; # 退出AD域

常见问题

不能加入域

当前面adcli join xxxxxx时如果出错:

adcli: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (Server not found in Kerberos database)

的话,请尝试修改/etc/krb5.conf,在[libdefaults]这个区块下加一句:

rdns = false

然后重新再试,即可。

CentOS 7.x

安装软件

yum -y install realmd sssd oddjob \
    oddjob-mkhomedir adcli samba-common;
realm join ad1.xxx.corp -U admin.win; # 这里需要输入admin.win的密码
realm permit -g LoginNO@xxx.corp; #这里以允许LoginNO组为例

修改配置

sudoer
visudo

添加这么一句:

%SudoNO@xxx.corp   ALL=(ALL)       ALL
sssd.conf
vim /etc/sssd/sssd.conf

修改两句如下:

use_fully_qualified_names = False
fallback_homedir = /home/%u

重启服务

systemctl restart sssd;

现在的情况是:

  • 除了LoginNO组以外其他域账号不能登录
  • SudoNO组有不需要密码通过sudo执行所有命令的权限

维护命令

realm permit --withdraw -g LoginNO@xxx.corp; # 取消LoginNO组的登录权限
id Daha.Ma@xxx.corp; # 从AD中获取域用户信息
id Daha.Ma; # 在/etc/sssh/sssd.conf中设置了use_fully_qualified_names为False的可以直接用
realm leave ad1.xxx.corp; # 退出AD域

相关链接

  1. Configuring sssd to authenticate with a Windows 2008 or later Domain Server
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容