gegewu0 发表于 2003-4-18 23:34:57

请教cjacker

从google上搜到的,你完成了用samba+kerberos+ldap实现single sign on,现在情况怎么样?可以实现吗?
还得知你有一篇AC Server的文章,但找了许久没有找到,可以给个连接吗?


谢谢!

cjacker 发表于 2003-4-19 00:22:33

Linux AC(authentication center)project planning(Draft I)
Linux 认证中心项目计划草案

项目目标
基于linux平台,通过对现有软件的整理和二次开发以及某些功能的独立开发,拿出一套基于linux的完全可替代windows服务器功能的模型。、
1,账号统一管理(All In One):每一个公司员工,都会被看成一个object,这个object只有一组username/password,在公司的网络范围内,使用者可以使用自己的账号和口令通过任何认证并获得tickets,访问公司提供的任何允许其访问的服务。同时作为一个object会存在其他的辅助信息,如:办公室、电话等等,这些信息可以为outlook, mizilla mail,ximian evolution等mail客户端提供目录查询服务,同时也可以作为基于web的员工信息查询黄页使用。同时提供对数据库的接口,可以方便的将数据倒入各种关系型数据库,方便信息的其他利用。
2,一次登陆(Single Sign On)(不成熟,构思阶段):通过kerberos进行tickets的分发,使用户在访问其他服务时不需要进行二次登陆。
3,客户端透明:不论客户端是windows平台或其他常用*nix操作平台(如,linux, FreeBSD等),都可以使用1所列的方式登陆到服务体系。
4,提供各种优化的周边服务,如公司内部目前提供的web, proxy, mail,数据库等,采用相同机制的认证模块(这一部分需要一些二次开发工作)。
5,兼容性,尽可能保证对windows domain的兼容,并能够建立与windows domain的信任关系。不提供对windows平台AD管理工具的支持。
6,模块化、集成化:不能仅仅是目前windows server端的替代品,一定要有独立实施的能力,在一个新的环境可以完全从零开始独立实施,并且满足地理位置的分割、需求的不同等等,将模型中的所有功能设计成各种模块,可以灵活配置,同时考虑,如何管理地理位置零散型的树状公司组织模型。
7,易于扩展:不能将整个模块做成一个封闭的体系,应当为开发者、配置者提供二次开发的可能,预留一些开发接口并形成技术文档
8,易于管理:首先要形成全面的技术文档,阐述原理和实现,并对各种模块的配置作详细的说明。同时要有一套完整的管理工具(包括对账号的管理,对服务的管理,对系统的管理),要求是人机界面亲和,回避linux系统自身操作的特点,初步考虑以java完成基于web的结构。
9,高可用性:参考windows PDC和BDC的机制,考虑实现认证中心的认证主机的双机热备、自动切换功能。
10,备份:考虑采用集中备份的方式,根据服务器所提供服务的不同,涉及备份方案和策略并集中备份到存储服务器。
项目资源
项目中可能用到的部分软件资源:
1,一个优秀的linux发行版(考虑redhat,turbo,suse)
但并不影响最终成果的通用性,只要一个linux版本符合Linux目录结构标准并具备了所必需的库函数,AC就可以运行的很好。
2,Gcc 编译器3.2版本
3,sun jdk 1.4
4,kernel >=2.4.18(自己定制)
5,kerberos+openldap+samba-tng
6,各种服务软件,如apache\squid\pure-ftp\bind\dhcpd等
考虑在整个项目中采用C,Java,Perl,python语言。
项目模块组成
整个项目应当有以下组成部分:
1,认证中心组件(Authentication Center):
采用samba(面向windows客户端),openldap(samba的backend,samdb),kerberos V(进行linux客户端验证并分发tickets)
待解决的问题就是openldap schema的设计和kerberos与samba的集成
2,邮件黄页组件(Yellow Page):
与AC结合,对每一个独立人进行opebldap属性的添加,实现outlook和mozila mail的目录服务,提供地址本功能和用户信息查询。
并制定详细的接口文档和各种程序语言的接口,保证二次开发的可能
3,DNS服务器(DNS server)
采用isc bind-9.2.*版本实现,必须保证DDNS的实现和gss-tsig
如果性能允许,可能考虑将DNS与ldap集成。
4,DHCP服务器(dhcp server)
要求实现动态更新DNS的功能,采用dhcpd-3.*
5,Apache服务器组件(Web Server):
应用较多,一是真正的提供web服务,另外是其他一些组件的需求。
因为涉及身份验证的问题,目前有ldap和kerberos V两种验证方式备选,
如果为实现更加详细的权限控制,需要进行二次开发。
6,mail服务器组件(e-mail server)
目前备选的软件有sendmail,qmail,postfix等,必须保证与ldap和kerberos的集成,提供webmail服务并遵循All In One和Single Sign On的原则。
7,squid服务器组件(proxy server)
备选方案较单一,目前仅有squid可用,存在的问题是认证问题。
8,应用服务器(application server)
考虑各种应用服务器的验证问题
9,管理工具(management tools)
初步考虑基于web实现整个服务器端模型的管理工具。
10,客户端组件(client agent)
****对于windows 无意义****
实现linux客户端向AC认证的Agent.
11,文件和打印服务(F&P)
文件服务考虑包含ftp和 SMB两种,分别使用pure-ftp和 samba实现。
打印服务以samba实现。
12,其他
根据需求我们可以加入PPPoE,VPN,软件防火墙,网络流量分析报表等组件,统一向AC认证。
项目阶段安排
1,准备阶段(preparation):
可行性调查和需求分析,了解目前esquel网络所提供的各种服务,了解使用者在使用过程中的需求,将使用者需求作为项目目标,并分析系统模型对客户需求的实现程度,评估各种软件实现,最终确定系统模型的可行性,生成并提交可行性分析报告。
对windows 2000服务器端认证机制,windows 2000域的原理,windows服务器端所提供的各种服务,客户端的管理工具进行深入的理解。
Linux软件的收集和评估。
相关知识的准备,如:kerberos认证原理,ldap管理知识、jndi接口、各种密码的加密方式和程序实现等。

2,集成实现阶段(integration & implementation)
完成各种模块的配置工作,要求是必须符合现有协议和RFC文档。
实现ddns和dhcp.
初步实现samba对windows domain的复制功能,允许windows客户端登陆到samba虚拟域,向AC进行身份验证。
初步实现linux平台客户端的single sign on方案,允许linux 客户端向AC进行身份验证。
规划openldap schema,将用户作为一个object出理,并加入对mozilla mail,outlook中的地址本的支持(或部分支持)
实现openldap对用户(object)的存储,保证MD5pass,ntpass,lmpass密码的同步。
实现kerberos 5 和 LDAP V3,并允许linux系统用户信息向ldap的迁移。
允许使用kerberos密码登陆系统获得tickets.
****尽可能将samba与kerberos集成,使每一个登陆到系统的客户端用户(linux或windows)都可以在登陆后获得tickets(构思阶段,又大量的代码要写,如果能够实现,就可以走各种服务通过kerberos验证的路子,通过KDC进行tickets的分发,可以完全实现windows目前实现的domain的方式àkerberos用来作身份验证,ldap实现AD的功能)。
实现所有用户信息向ldap的转移,包括服务器端linux系统用户和所有的windows domain用户,保留服务器上必须的系统服务用户,如root,named等。
进行各种服务向AC的认证配置:目前没有现成的samba-tng模块可用,而在这项目中,为了保证能够建立与其他windows domain的信任关系,必须使用samba-tng,而大量模块都是为samba准备的,并不能做到向samba-tng兼容,所以考虑两个方案:1,使用kerberos认证,各种服务向AC的KDC服务认证;2,使用ldap认证,如果第一步能够走得通,使用的密码是kerberos密码,采用与windows密码关联的方式实现,如果走不通,就使用MD5加密的密码,这样既能保证windows客户端的登陆,也可以保证linux客户端的登陆。各种服务统一向ldap进行认证,所读取得密码是MD5加密的密码。这一部分,需要写的代码较多,很多服务软件的认证模块都要自己写。

访问控制的设计:以上所有工作主要涉及身份验证部分(authentication),我们还要考虑访问控制(access control)问题,主要完成用户在authentication通过后能够对那些服务进行访问、进行什么样的访问的控制。对于windows客户端用户我们可以参考AD提供的schema进行设计,这一点samba和samba-tng都有相应的实现。对于某些linux平台的服务,如apache等,需要进行开发,设计出满足需求的认证模块并实现。

注:每一个实现,都要留下详细的实现文档并附上参考文档(链接),以备出现问题时进行排错和重新设计。对于自主开发的模块,要进行源代码的统一管理并提供详细的技术文档。

3,整理阶段(collection)
对项目过程中的所有文档进行汇总,形成整个项目的技术手册。
制作项目的功能说明手册和应用说明手册。
将所有项目可独立组件打包并制作安装文件,实现配置的自动化。
汇总所有的源代码并存档

4,alpha测试阶段(alpha test)
在项目组内部进行内部测试,主要是对项目功能实现、部署步骤等一些客观指标的检验,会根据需求进行没有模块的功能调整和优化配置。最终生成第一个beta版本。

5,beta测试阶段(beta test)
通过连续性的测试,对性能,可用行,管理难易度进行详细的分析和改进。
6,最后整理阶段(final)
针对alpha和beta测试阶段提出的一些问题,进行进一步的修改和整理,最终生成整个项目成果。


这个文档仅仅是计划书的草案,有待于进一步的修改,对于整个框架体系的设计和技术细节,会有另外的文档加以说明。


这是2002年7月的计划,大家看看。

我想这是目前linux下最完整,最系统的解决方案了,绝对不会有第二份。

迄今为止仍然是最完整的。

这是所有的思路,技术问题自己解决吧,
我可以负责任的说:
linux+samba3.0+kerberos+openldap
可以无缝的跟AD集成,包括作客户端登陆AD,访问AD资源,或者作为DC提供linux客户和windows客户的双重登陆都没有问题。

我现在已经不作IT了,因为Linux跟IT部老板的方向不一致,那是MS的铁杆迷,可惜,现在是他自己的饭碗保不住了。而我的饭碗仍然很稳。

gegewu0 发表于 2003-4-19 10:57:01

谢谢。

Fujinsan 发表于 2003-4-19 11:31:20

我一直没有卸掉Windows的一个重要原因是无法通过公司的M$ ISA Proxy上网。
前几天我用IP包监听工具发现,原来IE和ISA Proxy之间的认证是采用了kerberos,而我安装系统时恰好没有选kerberos认证方式。等会儿试试看。

cjacker 发表于 2003-4-19 11:40:12

不是这样的,你安装市选择kerberos认证也没有用。
关键问题你要能够让你的linux获得Proxy发布的tickets
怎么获得,就看你自己的配置了。
我访问AD用的是samba-3.0a21
正确配置kdc
使用kinit就可以获得tickets了。

Fujinsan 发表于 2003-4-19 12:03:34

刚才没有试成功。现在只能够进single模式了。下周再试。

qin_ray 发表于 2003-4-19 22:38:02

什么时候在ML中出现?期盼中...

kde2000 发表于 2004-9-26 20:31:20

期盼中。

:mrgreen:

lanche 发表于 2004-9-26 20:57:18

曾经想做这些,但没有混合网络环境作实验呀。
页: [1]
查看完整版本: 请教cjacker