RHEL 6S 主域控制器配置实战指南

LEAF
RHEL 6S主域控制器配置实战指南聚焦Samba服务实现Windows域环境管理,内容涵盖系统环境准备(更新依赖、关闭SELinux/防火墙)、Samba核心配置(定义域参数、设置域用户数据库)、Kerberos认证集成及DNS服务联动,详细解析smb.conf关键参数(如workgroup、server role、passdb backend),实战演示域用户创建、权限分配及客户端加入域流程,最终实现Windows/Linux客户端统一身份认证,为企业内网集中管控提供可落地方案,兼顾安全性与易用性。

在企业环境中,主域控制器(Domain Controller, DC)是集中管理用户身份认证、权限控制、组策略等核心功能的关键组件,RHEL 6S(Red Hat Enterprise Linux 6 Server)作为经典的Linux企业级操作系统,可通过Samba服务模拟Windows域控制器,实现跨平台(Windows/Linux)的统一身份管理,本文将详细介绍RHEL 6S下主域控制器的完整配置流程,涵盖环境准备、服务安装、核心配置、用户管理及验证测试等环节,帮助读者快速搭建稳定可靠的域环境。

环境准备

系统要求

  • 操作系统:RHEL 6.5及以上版本(确保支持Samba 3.6.x及Kerberos 1.10.x)
  • 硬件配置:CPU≥1核,内存≥1GB,硬盘≥20GB(可根据用户规模调整)
  • 网络环境:静态IP地址、正确的主机名解析(建议内部DNS服务器)

网络配置

以域控制器IP为168.1.10、域名为example.com、主机名为dc.example.com为例,配置如下:

# 设置静态IP(以eth0为例)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.10  # 指向自身(若部署内部DNS)
ONBOOT=yes
# 配置主机名
hostname dc.example.com
vi /etc/sysconfig/network
HOSTNAME=dc.example.com
# 配置hosts文件
vi /etc/hosts
192.168.1.10    dc.example.com    dc

重启网络服务使配置生效:service network restart

RHEL 6S 主域控制器配置实战指南

关闭防火墙与SELinux

域控制器需开放多个端口(如139、445、88等),为简化测试,先临时关闭防火墙并设置SELinux为宽松模式(生产环境建议精细配置策略):

# 关闭防火墙
service iptables stop
chkconfig iptables off
# 设置SELinux为permissive模式(仅记录不阻止)
setenforce 0
vi /etc/selinux/config
SELINUX=permissive

配置Yum源

确保系统能访问官方或第三方软件源,若使用RHEL官方源,需注册系统并启用“Optional”仓库(包含Samba域相关组件),若为本地源,请提前挂载安装光盘并配置Yum仓库。

安装必要软件包

RHEL 6S下,主域控制器依赖Samba(提供文件共享与身份认证)、Kerberos(安全认证)、Winbind(域用户映射)等组件,通过Yum安装以下软件包:

yum install samba samba-client samba-common samba-domain krb5-workstation pam_krb5 winbind -y

安装完成后,验证软件包版本:

smbd --version  # 应显示Samba 3.6.x
kinit --version  # 应显示Kerberos 1.10.x

核心配置步骤

配置Kerberos认证服务

Kerberos是域认证的核心,负责颁发和管理票据(Ticket),需配置/etc/krb5.conf文件,定义域信息与KDC(Key Distribution Center,即域控制器)地址:

vi /etc/krb5.conf
[libdefaults]
    default_realm = EXAMPLE.COM  # 必须为大写,与域名对应
    dns_lookup_realm = false
    dns_lookup_kdc = false
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true
[realms]
    EXAMPLE.COM = {
        kdc = dc.example.com
        admin_server = dc.example.com
    }
[domain_realm]
    .example.com = EXAMPLE.COM
    example.com = EXAMPLE.COM

注意default_realm必须为大写,且与[realms]中的EXAMPLE.COM严格一致。

测试Kerberos认证:

# 创建管理员主体(admin@EXAMPLE.COM,密码需设置)
kadmin.local -q "addprinc admin/admin"
# 测试获取票据
kinit admin/admin@EXAMPLE.COM
klist  # 查看票据列表

配置Samba主配置文件

Samba通过/etc/samba/smb.conf实现域控制器功能,需重点配置全局参数和共享目录,以下是核心配置:

vi /etc/samba/smb.conf
[global]
    workgroup = EXAMPLE  # 域名(小写,与Windows域对应)
    netbios name = DC    # NetBIOS名称,客户端识别用
    server string = Samba Domain Controller on RHEL 6S
    security = user      # 安全模式:user(域认证)
    passdb backend = tdbsam  # 密码数据库格式(tdbsam适合中小规模)
    domain logons = yes   # 启用域登录功能
    os level = 255        # 优先级越高,越可能成为域主浏览器
    preferred master = yes # 优先成为域主控制器
    domain master = yes   # 强制作为域主控制器
    dns proxy = no        # 禁用DNS代理(若部署内部DNS)
    log file = /var/log/samba/log.%m  # 日志文件(按主机名区分)
    max log size = 50     # 日志最大50MB
    # Kerberos集成
    realm = EXAMPLE.COM  # Kerberos域(大写)
    kdc = dc.example.com  # KDC地址
    admin server = dc.example.com  # Kerberos管理服务器
    # 登录脚本与配置文件路径
    logon script = logon.bat  # 客户端登录脚本(需创建)
    logon path = \\dc\profiles\%u  # 漫游配置文件路径(需创建共享)
    logon drive = Z:  # 登录映射网络盘符
[netlogon]
    comment = Network Logon Service
    path = /var/lib/samba/netlogon  # 登录脚本存放目录
    browseable = no
    read only = yes
    guest ok = no
[profiles]
    comment = User Profiles
    path = /var/lib/samba/profiles  # 漫游配置文件目录
    browseable = no
    read only = no
    create mask = 0600
    directory mask = 0700
    guest ok = no
[homes]
    comment = Home Directories
    browseable = no
    writable = yes
    valid users = %S  # 仅允许用户访问自己的家目录

关键参数说明

  • security = user:启用用户级安全认证,是域控制器的基础。
  • domain logons = yes:允许客户端通过域控制器登录。
  • os level = 255:确保域控制器在浏览器选举中优先级最高。

配置完成后,使用testparm检查语法:

RHEL 6S 主域控制器配置实战指南

testparm -s /etc/samba/smb.conf

创建共享目录并设置权限

根据smb.conf中的配置,创建必要的共享目录:

# 创建netlogon目录(存放登录脚本)
mkdir -p /var/lib/samba/netlogon
chmod 755 /var/lib/samba/netlogon
# 创建profiles目录(存放漫游配置文件)
mkdir -p /var/lib/samba/profiles
chmod 1777 /var/lib/samba/profiles  # 设置sticky位,确保用户可创建自己的目录
# 创建家目录基础路径
mkdir -p /home/samba
chmod 777 /home/samba

创建域用户与组

(1)创建管理员账户

# 创建Linux系统用户(同步为Samba用户)
useradd admin
passwd admin  # 设置用户密码
# 将用户添加到Samba密码数据库(并设置域密码)
smbpasswd -a admin

(2)创建域用户组

# 创建域用户组(如"Domain Users")
groupadd -g 10000 "Domain Users"

(3)批量创建普通用户

可通过脚本批量创建,例如创建用户user1

useradd user1
passwd user1
smbpasswd -a user1
usermod -G "Domain Users" user1  # 添加到域用户组

启动并配置服务

Samba域控制器依赖smb(Samba核心服务)、nmb(NetBIOS名称服务)、winbind(域用户映射)三个服务,启动服务并设置开机自启:

# 启动服务
service smb start
service nmb start
service winbind start
# 设置开机自启
chkconfig smb on
chkconfig nmb on
chkconfig winbind on

验证服务状态:

service smb status
service nmb status
service winbind status

验证域控制器功能

Windows客户端加入域

以Windows 10为例:

  • 右键“此电脑”→“属性”→“更改设置”→“计算机名”→“更改”,输入域名example.com,点击“确定”。
  • 输入域管理员账户admin及密码,成功后提示“欢迎加入example.com域”。
  • 重启Windows客户端,使用域账户admin@example.com登录。

Linux客户端加入域

以RHEL 6S客户端为例,安装oddjoboddjob-mkhomedir(自动创建家目录):

yum install oddjob oddjob-mkhomedir -y

配置/etc/samba/smb.conf(客户端):

[global]
    security = domain
    workgroup = EXAMPLE
    realm = EXAMPLE.COM
    password server = dc.example.com
    winbind use default domain = yes
    winbind offline logon = yes

启动winbind服务并加入域:

service winbind start
chkconfig winbind on
net ads join -U admin  # 输入admin的密码

验证域用户:

getent passwd  # 查看域用户(如EXAMPLE\user1)
su - user1@example.com  # 切换到域用户(需输入密码)

域控制器端验证

  • 查看域用户列表:
    wbinfo -u  # 列出所有域用户
  • 查看域组列表:
    wbinfo -g  # 列出所有域组
  • 测试Samba共享:
    smbclient -L //dc.example.com -U admin  # 列出共享资源

常见问题与解决

客户端加入域失败

  • 原因1:网络或DNS解析问题。
    解决:确保客户端DNS指向域控制器(168.1.10),测试ping dc.example.com是否通。
  • 原因2:Kerberos认证失败。
    解决:检查/etc/krb5.conf中的default_realmkdc配置,重新测试kinit admin/admin@EXAMPLE.COM

Samba服务启动失败

  • 原因smb.conf语法错误或目录权限问题。
    解决:运行testparm检查语法,确认共享目录(如/var/lib/samba/netlogon)权限为755。

域用户无法登录

  • 原因winbind服务未启动或域用户未同步。
    解决:启动winbind服务,运行wbinfo -u确认用户列表,检查/etc/nsswitch.conf中是否包含winbind(如passwd: files winbind)。

通过以上步骤,已成功在RHEL 6S上搭建了主域控制器,实现了跨平台的身份认证与用户管理,虽然RHEL 6S已进入生命周期末期,但在遗留系统维护或特定企业环境中,其稳定性和兼容性仍具有价值,实际生产环境中,建议结合内部DNS服务、精细化防火墙策略及定期备份(如备份smb.conf/etc/krb5.conf及Samba密码数据库),确保域环境的安全可靠。

本文以Samba 3.6.x为基础,若需支持更高级的域功能(如组策略对象),可考虑升级到RHEL 7+及Samba 4.x版本,其原生支持AD(Active Directory)协议,功能更完善。

文章版权声明:除非注明,否则均为XMSDN - MSDN原版系统镜像 | 纯净ISO系统下载原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码