如果你曾经做过系统管理员,你就知道强大的脚本完成常见的任务,LDAP的管理是相当复杂的,因此,将这些常见的任务编写成脚本其价值是无价的,Perl和Python都有强大的LDAP模块,你如果阅读了本系列文章的前面几篇,就应该知道我曾经使用过Perl脚本,如smb-create-password.pl和smb-new-machine.pl,但是Python的LDAP模块也一样非常有用,Perl还有Kerberos和SASL的接口,我就不详细解析每个模块的API了,我将给你展示如何使用它们,以及使用LDAP和Kerberos的不同方法。
管理用户和SSH密钥
在http://www.opendarwin.org/en/projects/openssh-lpk为LDAP提供了一个OpenSSH方案,你首先想到的可能是在这个方案中保存主机公钥到某个位置,一种known_host目录,事实上,这就是这个方案创建的目的,将来的OpenSSH版本可能会使用名称服务转换(NSS),查找一个主机密钥不再总是需要包含它们的一个本地文件了,这是一个巨大的改变,因为当主机被添加或移除时你将不再需要推拉known_hosts文件了,但是除非你已经给你的OpenSSH应用了补丁,否则也是没有用的。
在计算协会里,我们已经有一个大型的集群供外部协作使用,这个集群有它自己的网络home目录,因此,它不能加载到一个集中的NFS系统中,我们也不想让基于密码的登陆通过线路传输密码,一般地,这就是使用强制基于GSSAPI的认证的最佳时机,除非我们不控制协作这的桌面,因此,我请求我的一个同事编写了一个脚本来自动完成创建用户home目录并添加一个SSH密钥到她的.authorized_keys文件,因为她选择的是Python语言,mkhomedirs.py就这样诞生了。
那么它是如何工作的呢?当用户被授权允许访问那个集群时,它们被放进cluster-users网络组,这个组也是由LDAP提供了,mkhomedirs.py脚本从cron计划每小时执行一次,检查在cluster-users网络组中的用户列表,看哪个用户还没有home目录,当它发现一个没有home目录的用户时,它就为其创建一个home目录并拷贝必须的文件,如/etc/skel下的文件,一旦用户提供了一个SSH密钥,这个密钥就被添加到LDAP中用户的sshPublicKey属性上,同时,mkhomedirs.py脚本也检查哪个用户还没有~/.ssh/authorized_keys文件,如果一个用户没有那个文件但是在LDAP中有一个密钥,它就创建这个文件并将密钥添加到这个文件里,那么这个用户就可以登陆了。这个脚本没有强加限制:用户的authorized_keys文件包括的密钥必须在LDAP中,增加这样的功能也是不重要的。破坏者经常使用的技巧就是将她/他的SSH密钥添加到用户的authorized_keys文件中,如果你要求列出用户的authorized_keys文件中包括的所有密钥,当发现一个未知的密钥时你可以发出警告。
进入讨论组讨论。相关专题
- 高手支招 详解注册表与系统安全 (242次浏览)
- 百毒不侵 安全手段让电脑轻松过春节 (193次浏览)
- Windows安全经验之预防病毒的八个忠告 (100次浏览)
- 最安全的打开U盘的方法 (81次浏览)
- 艳照门启示录:要给电脑“洗澡” (61次浏览)
- “艳照门”警钟!编辑教你保护个人隐私 (54次浏览)
- 系统安全:剿清删不掉的DLL木马 (51次浏览)
- 木马程序是如何实现隐藏的 (50次浏览)
- 让电脑裸奔 制作百毒不侵的Windows系统 (46次浏览)
- 九大策略 保护用户计算机远离黑客骚扰 (36次浏览)



