它不仅能够集中管理用户、计算机、安全策略等关键资源,还能提供身份验证和访问控制服务
然而,随着开源技术的蓬勃发展,越来越多的企业开始考虑在非Windows环境中,尤其是Linux系统上,实现类似AD的功能
尽管Linux本身并不直接支持AD服务,但借助Samba 4和一些开源工具,我们完全可以在Linux主机上搭建一个功能强大、兼容Windows的AD域控制器
一、引言:为何在Linux上搭建AD 1.成本控制:Linux操作系统本身免费,且拥有庞大的开源社区支持,可以显著降低IT基础设施的成本
2.灵活性:Linux系统提供了更高的灵活性和可扩展性,便于根据业务需求进行定制化开发
3.多平台整合:在混合IT环境中,Linux AD解决方案可以更好地实现跨平台资源整合和管理
4.安全性:Linux以其强大的安全性和稳定性著称,能够为AD服务提供更加坚实的底层保障
二、准备工作 硬件与软件要求 - 硬件:一台性能稳定的服务器,至少配备2核CPU、4GB内存和足够的存储空间
- 操作系统:推荐使用CentOS或Ubuntu等成熟的Linux发行版
- 软件包:Samba 4、krb5-server、krb5-libs、sssd、sssd-client等
网络配置 - 确保Linux服务器能够访问互联网,以便下载所需的软件包和更新
- 配置静态IP地址,确保AD域控制器的网络稳定性
- 配置DNS服务器,以便解析域内资源
三、安装与配置Samba 4 1. 安装Samba 4 在CentOS上,可以通过以下命令安装Samba 4: sudo yum install samba samba-client samba-common samba-common-libs samba4 samba4-client samba4-common samba4-libs samba4-krb5-auth samba4-server 在Ubuntu上,则使用: sudo apt-get update sudo apt-get install samba samba-common krb5-user samba4 samba4-ads samba4-krb5-auth samba4-server 2. 配置Kerberos Kerberos是Samba 4实现AD功能的核心组件之一
需要编辑`/etc/krb5.conf`文件,配置Kerberos的KDC(Key Distribution Center)和admin_server地址
【libdefaults】 default_realm = YOUR_REALM.COM dns_lookup_realm = false dns_lookup_kdc = true 【realms】 YOUR_REALM.COM ={ kdc = your-server-ip admin_server = your-server-ip } 【domain_realm】 .your-domain.com =YOUR_REALM.COM your-domain.com = YOUR_REALM.COM 3. 创建Kerberos数据库 使用`kdb5_util`工具创建Kerberos数据库,并初始化KDC: sudo kdb5_util create -rYOUR_REALM.COM -s sudo systemctl start krb5-kdc sudo systemctl start krb5-admin-server 4. 配置Samba 编辑`/etc/samba/smb.conf`文件,添加AD相关的配置
以下是一个基本的配置示例: 【global】 workgroup =YOUR_WORKGROUP realm = YOUR_REALM.COM security = ads ads server = your-server-ip template shell = /bin/bash winbind use default domain = true winbind offline logon = false idmap config: : range = 16777216-33554431 【netlogon】 path = /var/lib/samba/netlogon read only = no 5. 创建AD域 使用`samba-tool`命令创建AD域和域管理员账户: sudo samba-tool domain provision --use-rfc2307 --interactive 按照提示输入域名、DNS域名、NetBIOS名、管理员密码等信息
完成后,Samba将自动配置DNS和Kerberos,并创建必要的文件和目录
四、配置Winbind和SSSD 1. 安装Winbind和SSSD Winbind允许Linux系统访问AD中的用户信息,而SSSD(System Security Services Daemon)则提供了更高级的身份验证和访问控制功能
sudo yum install sssd sssd-client winbind winbind-clients 或 sudo apt-get install sssd sssd-client winbind winbind-clients 2. 配置Winbind 编辑`/etc/nsswitch.conf`文件,添加`winbind`到passwd和group数据库中: passwd: compat winbind group: compat winbind 编辑`/etc/wbinfo.conf`文件,配置Winbind的认证后端: idmap - config : range = 16777216-33554431 启动Winbind服务: sudo systemctl start winbind sudo systemctl enable winbind 3. 配置SSSD 编辑`/etc/sssd/sssd.conf`文件,添加AD域的配置
以下是一个基本配置示例: 【domain/YOUR_REALM.COM】 auth_provider = krb5 chpass_provider = krb5 access_provider = simple id_provider = ldap ldap_uri = ldap://your-server-ip ldap_search_base = dc=your-domain,dc=com ldap_schema = rfc2307bis cache_credentials = true krb5_realm =YOUR_REALM.COM krb5_server = your-server-ip krb5_kpasswd_server = your-server-ip 启动SSSD服务: sudo systemctl start sssd sudo systemctl enable sssd 五、验证与测试 1. 测试Kerberos认证 使用`kinit`命令测试Kerberos认证: kinit Administrator@YOUR_REALM.COM 如果认证成功,将显示Kerberos票据缓存信息
2. 测试Winbind和SSSD 使用`getentpasswd`和`getentgroup`命令查看AD中的用户和组信息
如果配置正确,这些命令将列出