说实话我自己的工作都是关注存储结构,集群,负载均衡,基于操作系统级别的安全。很少研究目录服务以及相关的整合技术,去网上看了一下很多文章不是体系太庞大就是环境未知,凭借我的智商是没办法搞定了。这里我就班门弄斧给新人们一点小小的入门,我自己都是新人献丑了。
我理解的整合?
就是把现有的资源发挥最大的使用限度,各种服务器依据自身硬件软件优点各挥所长,各司其职。网络中的服务器众多
1.文件服务器
2.网站服务器
3.账号管理服务器
我就先说这么多举个简单例子。文件服务器用得samba,网站服务器用得apache,账号管理服务器用得AD活动目录。
1.客户端user1要访问samba的共享目录需要提供身份核查
2.samba这台linux服务器本地账号库上没有user1,那怎么验证呢?
3.所以samba就把这个身份核查请求交给了账号管理服务器AD
4.AD身上存了公司所有用户的用户名,密码,邮箱,电话,地址等信息,所以AD可以帮samba核查user1的身份是否合法。
5.一旦通过核查就把这个消息传给samba并允许访问共享目录
6.用户知道samba不能核查自己身份吗?绝对不会知道,用户一直以为是samba做的核查身份。这个过程是samba把AD的账户映射了一份在自己本地。什么叫映射?就如果你的影子一样,有你的人在就会有影子在,人不在了影子自然就没了。映射不是什么复制,只是依据主载体变了一个样子而已。
7.这样做的好处就是不论你登陆什么linux服务器,只要有身份核查就交给AD去做,AD就是干这个活的很专业,而samba就是文件共享的很专业。大家就做自己最擅长的事就好了,但同时大家也有不擅长的或者不能实现的缺点,那么大家就整合在一起,优点融合了,那就掩盖了缺点,共同完成用户这样那样烦人的需求
那么linux服务器怎么和AD整个在一起呢?
1.因为linux服务器的目录服务使用的标准schema,而AD把schema扩展了并把objetclass和attribute都该了自定的名字
2.比如linxu服务器的用户名属性叫uid,而AD的用户名属性叫sAMAccountName
3.当linux映射AD用户时就说“现在帮我核查一个uid=user1的账户”,AD收到这个消息后一查说不认识uid这个属性帮不上忙呀。
4.所以需要先做attribute和objectclass的映射nss_map_attribute uid sAMAccountName
5.现在linux改词了说“现在帮我核查一下uid=user1的账户,你的说法叫sAMAccountName=user1”,这回AD知道samba想干啥了,ok小case。
6.当然linux服务器和AD之间很多有关用户的属性都要做映射,我们慢慢来做实验吧。班门弄斧完毕!!
实验环境
station9.example.com是客户机,域为example.com,dns指向AD
server109.example.com是linux服务器,域为example.com,dns指向AD
w2k3.ad.example.com是AD活动目录,域为ad.example.com,自己是dns服务器,并把dns指向自己
AD上有个Linux-NSS账户用来获得AD数据库里的账号信息,AD你好歹也要给linux服务器一个绿色通道呀直接用Linux-NSS从AD里拿账户信息,AD一看是Linux-NSS来请求账户映射的当然是允许的了。要不怎么叫整合呢。
首先我们先建立一台AD
因为server109.example.com和station9.example.com都属于example.com域了,为了能解析到这两台计算机,我决定在AD上的dns再建立一个正向域example.com,并添加主机记录server109和station9
在dns窗口做得导航栏中选择example.com点右键选择“新建主机”
我们在AD上建立一个账户Linux-NSS,这个账户专门是AD允许Linux服务器映射账户用的绿色通行证。
然后我们在建立一个用户叫billgates,看到能否映射到这个账户的信息
在映射过程中需要把AD的schema扩展掉要不然他就不认识uid=sAMAccountName是一回事,所以必须要让AD也认识uid这是什么东东。我们要安装一个SFU3.5的包。完成后需要重新启动,漫长等待。。。。
开启相关支撑Linux服务器的服务
其次我们把用户相关的类和属性让linux服务器与AD达成一致,互相通告。
nss_map_objectclass posixAccount User 映射用户类
nss_map_objectclass shadowAccount User 映射密码类
nss_map_attribute uid sAMAccountName 映射用户名属性
nss_map_attribute uidNumber msSFU30uidNumber 映射用户号码属性
nss_map_attribute gidNumber msSFU30gidNumber 映射组号码属性
nss_map_attribute gencos cn 映射用户全名属性
nss_map_attribute loginShell msSFU30loginShell 映射用户命令解释器属性
nss_map_attribute homeDirectory msSFU30HomeDirectory
nss_map_objectclass posixGroup Group 映射组类
pam_login_attribute sAMAccountName 映射pam模块验证用户名
pam_filter objectclass=User
pam_password ad 采用AD来验证身份,我理解为使用kerberos
把Linux服务器加入到AD的LDAP数据库中
此时我们用getent passwd看能不能获得AD上的账户了
我们在试试能不能用gates登陆
在来利用ldapsearch查找一下
ldapsearch -x 'sAMAccountName=gates' -D 'cn=billgates,cn=Users,dc=ad,dc=example,dc=com' -W -LLL
最后一个实验就是如何把linux计算机加入到活动目录中,利用winbind
首先把AD中的dns服务器主机记录建立好如图
Linux服务器的dns解析顺序一定先用AD的dns服务器
一定要注意和AD同步时区 net time –S w2k3.ad.examle.com当然你可以把AD当成NTP服务器加入到Linux服务器中,我每次用net time同步都不成功,最后都是直接用date命令手工改的
现在开始利用winbind把Linux服务器加入到AD中作为一台普通的客户机而已
我们回到AD中看有没有计算机加入进来,我把server109,server209都加进来,station9死活进不来不知道为何。
夜已经深了,现在凌晨了,为了做实验今天的魔兽世界战场日常没做,炼金也没做,又损失了几百G。
转载于:https://blog.51cto.com/linuxsafe/668715