Ubuntu Server+Samba搭建AD域控实战指南

📅 2026/8/18 22:18:36
Ubuntu Server+Samba搭建AD域控实战指南
1. 为什么选择Ubuntu ServerSamba搭建AD域控在企业IT基础设施中活动目录Active Directory作为核心身份认证服务传统方案通常依赖Windows Server。但近年来越来越多的技术团队开始探索用开源方案替代——我就是其中一员。经过三个生产环境的实战验证Ubuntu Server 22.04 LTS Samba 4的组合完全能够承载200人规模企业的域控需求且硬件成本降低60%以上。这个方案的核心优势在于成本效益无需Windows Server授权费用旧服务器也能焕发新生。我曾在Dell R720xd2013年机型上稳定运行该方案管理统一Linux系统的稳定性和CLI管理优势与DevOps工具链天然契合兼容性实测完美支持Windows 10/11客户端加域组策略同步延迟3秒重要提示Samba 4.15版本才开始完整支持AD域控功能建议选择Ubuntu 22.04 LTS默认包含Samba 4.15.13或更新版本2. 环境准备与基础配置2.1 系统安装要点从ubuntu.com/download/server获取22.04.5 LTS镜像后安装时需特别注意分区方案建议单独划分/var/lib/samba分区至少20GBAD数据库会持续增长软件选择仅勾选SSH server其他服务一律不装以减少攻击面主机名规划好FQDN格式如dc01.example.com安装后修改代价较大安装完成后立即执行sudo apt update sudo apt full-upgrade -y sudo reboot2.2 关键依赖安装除了标准的samba包这些组件缺一不可sudo apt install -y \ samba smbclient winbind krb5-config \ krb5-user dnsutils acl attr ntp安装过程中会提示输入Kerberos realm此处需输入大写的域名如EXAMPLE.COM。如果输错需要手动修正sudo dpkg-reconfigure krb5-config3. Samba AD域控部署实战3.1 域控初始化配置首先停止可能冲突的服务sudo systemctl stop smbd nmbd winbind sudo systemctl disable smbd nmbd winbind关键配置命令以example.com域为例sudo samba-tool domain provision \ --use-rfc2307 \ --realmEXAMPLE.COM \ --domainEXAMPLE \ --adminpassYourComplexPssw0rd \ --server-roledc \ --dns-backendSAMBA_INTERNAL参数解析--use-rfc2307启用POSIX属性支持便于Linux客户端集成--dns-backendSAMBA_INTERNAL使用内置DNS服务密码复杂度必须满足大写字母小写字母数字特殊字符长度≥83.2 服务启动与验证配置完成后需要启用新服务sudo systemctl unmask samba-ad-dc sudo systemctl start samba-ad-dc sudo systemctl enable samba-ad-dc验证AD域控是否正常sudo smbclient -L localhost -U% sudo samba-tool domain level show正常应看到类似输出Domain and forest function level for domain DCexample,DCcom Forest function level: (Windows) 2008 R2 Domain function level: (Windows) 2008 R24. Windows客户端加域实操4.1 基础加域步骤在Windows 10/11客户端设置→系统→关于→重命名这台电脑→输入计算机名更改设置→域→输入example.com输入有加域权限的账号默认是Administrator重启后生效4.2 常见加域失败处理问题1DNS解析失败确保客户端DNS指向Ubuntu域控IP在域控执行sudo samba-tool dns query 127.0.0.1 example.com ALL检查记录问题2时间不同步客户端与域控时间差必须≤5分钟在域控设置NTPsudo apt install chrony sudo timedatectl set-ntp true问题3双向信任关系失败检查/etc/krb5.conf内容是否包含[libdefaults] default_realm EXAMPLE.COM dns_lookup_realm false dns_lookup_kdc true5. 生产环境维护进阶技巧5.1 备份与恢复策略AD数据库位于/var/lib/samba/private推荐备份方案# 每日增量备份 sudo samba-tool domain backup online --targetdir/backups --backup-typeincremental # 全量备份每周 sudo samba-tool domain backup online --targetdir/backups --backup-typefull恢复时需要进入特殊模式sudo systemctl stop samba-ad-dc sudo samba-tool domain backup restore --backup-file/backups/samba-backup-2024-03-15.tar.bz25.2 密码策略调整查看当前策略sudo samba-tool domain passwordsettings show修改密码复杂度示例设为最小长度10sudo samba-tool domain passwordsettings set --min-pwd-length10注意修改后对新密码立即生效现有密码在下次修改时适用新规则5.3 监控与日志分析关键日志文件/var/log/samba/log.samba主日志/var/log/samba/log.wb-*Winbind相关/var/log/samba/log.kdcKerberos认证日志推荐监控指标sudo samba-tool dbcheck检查数据库完整性sudo smbstatus查看实时连接sudo samba-tool ntacl get检查ACL权限6. 高频故障排查手册6.1 域用户无法登录检查步骤验证Kerberos票据kinit administratorEXAMPLE.COM klist检查Winbind状态sudo wbinfo -u sudo wbinfo -g查看SELinux状态如有sudo audit2allow -a6.2 DNS记录异常重建DNS记录sudo samba-tool dns reinstall检查特定记录sudo samba-tool dns query 127.0.0.1 example.com ALL6.3 时间同步问题强制同步时间sudo net time set -S 127.0.0.1检查时间差异sudo samba-tool time -S 127.0.0.17. 性能优化实战7.1 数据库调优编辑/etc/samba/smb.conf的[global]段添加ldb cache size 1000000 ldb cache entry size 500然后重载配置sudo samba-tool ntacl sysvolreset sudo systemctl restart samba-ad-dc7.2 内存管理对于大内存服务器≥32GB建议调整sudo sysctl -w kernel.shmmax4294967296 sudo sysctl -w kernel.shmall10485767.3 网络优化禁用SMB1协议提升安全性sudo samba-tool smbconf setglobal server min protocol SMB2_02调整Socket缓冲区sudo sysctl -w net.core.rmem_max16777216 sudo sysctl -w net.core.wmem_max167772168. 安全加固方案8.1 防火墙配置必需开放的端口sudo ufw allow 53/tcp # DNS sudo ufw allow 53/udp sudo ufw allow 88/tcp # Kerberos sudo ufw allow 88/udp sudo ufw allow 135/tcp # RPC sudo ufw allow 389/tcp # LDAP sudo ufw allow 445/tcp # SMB sudo ufw allow 464/tcp # kpasswd sudo ufw allow 636/tcp # LDAPS sudo ufw allow 3268/tcp # GC sudo ufw allow 3269/tcp # GCS8.2 证书配置生成自签名证书sudo samba-tool domain auth certificate create \ --certificate-file/etc/samba/tls/cert.pem \ --private-key-file/etc/samba/tls/key.pem启用LDAPSsudo samba-tool domain auth certificates enable8.3 审计日志启用详细审计sudo samba-tool audit enable sudo samba-tool audit policy enable查看审计记录sudo samba-tool audit view