Centos 7+Samba +winbind+Windows 2012 AD (Samba加入WINDOWS AD域)

公司办公系统采用windows系统,有大量的数据需要共享。其中需要把办公数、生产数据分开保存。

我打算采用Samba管理,便有以下的使用过程。在此过程中有参阅以下samba文档:

http://www.mamicode.com/info-detail-2306907.html
https://www.jianshu.com/p/f2fd9e88077c
https://www.cnblogs.com/Ericshang/p/9070978.html
https://www.cnblogs.com/rusking/p/3993148.html
https://blog.csdn.net/QTM_Gitee/article/details/84060845#3__Samba__288

https://xz.aliyun.com/t/5004#toc-16

https://www.cnblogs.com/fatt/p/5856892.html

概念:

PDC:主域控制器,一般用来做验证
BDC:备份域控制器,一般用于和主域做同步帐号等操作
KDC:密钥分发中心,说白了,就是kerbrose服务器。这个需要对kerbrose有一定的了解,这里不多说了
PAM:可插拔认证模块,这玩意就是使用不同的验证方法来验证你所需要的服务,比如sshd,login,ftp等。这些服务都对应一个配置文件,这个配置文件位于/etc/pam.d/下。而支持这些验证的动态库位于/lib/security/下。

SRV:服务器定位资源记录,要使活动目录正常工作,DNS必须支持SRV。活动目录客户端和域控制器使用SRV记录决定域控制器的ip地址。使用SRV记录决定域控制器的ip地址

 

 

 

samba简介

Samba,是种用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协定做连结的自由软件。

目前samba不仅可存取及分享SMB的资料夹及打印机,本身还可以整合入Windows Server的网域,扮演为网域控制站(Domain Controller)以及加入Active Directory成员。简而言之,此软件在Windows与UNIX系列OS之间搭起一座桥梁,让两者的资源可互通有无。

1.基础准备:

A .修改hosts:  # vim /etc/hosts

B. 修改dns:# vim /etc/resolv.conf

C.修改selinux : # vim /etc/sysconfig/selinux

修改内存中设定,让其立即生效:       setenforce 0

D. 修改防火墙:# systemctl stop firewalld && systemctl disable firewalld

 

2. yum安装samba所需软件:

    yum -y install pam_krb5* krb5-libs* krb5-workstation* krb5-devel*  samba samba-winbind* samba-client* samba-swat*

    安装完成后,请启动相关服务:

     systemctl start smb nmb
     systemctl start winbind

3.  配置文件说明:

      kerberos :

              配置文件:#   /etc/krb5.conf

              作用:一种网络认证协议,其设计目标是通过客户端+KDC+服务端提供强大的认证服务。

      samba:

              配置文件:#  /etc/samba/smb.conf

              作用:samba的配置文件,通过该文件来管理文件共享、用户权限,samba服务设置、与winbind交互等。

      winbind:

              配置文件:

              作用:Samba作为域成员运行,则winbindd服务将负责向域操作系统(AD)提供有关域用户和组的信息。

              winbindd服务为用户和组提供唯一的ID给Linux,必须在samba配置文件(/etc/samba/smb.conf)中配置ID映射。
              samba winbind包里包含上面说的做映射的服务库(NSS library)和客户端工具。
              samba winbind clients包里只含有客户端工具(wbinfo , ntlm_auth)。

      nssiwtch:

              配置文件:# /etc/nsswitch.conf

              作用: Nsswitch.conf文件通常控制着用户(在passwd中)、口令(在shadow中)、主机IP和组信息(在group中)的搜索。

            

PAM模块接口(模块管理组)

PAM为认证任务提供四种类型可用的模块接口,它们分别提供不同的认证服务:

单个PAM库模块可以提供给任何或所有模块接口使用。例如,pam_unix.so提供给四个模块接口使用

 

配置文件:   /etc/pam.d/system-auth     

作用: 用户身份认证

配置文件:   /etc/pam.d/password-auth

作用:  密码认证

√ auth

- 认证模块接口,如验证用户身份、检查密码是否可以通过,并设置用户凭据

√ account

- 账户模块接口,检查指定账户是否满足当前验证条件,如用户是否有权访问所请求的服务,检查账户是否到期

√ password 

- 密码模块接口,用于更改用户密码,以及强制使用强密码配置

√ session

- 会话模块接口,用于管理和配置用户会话。会话在用户成功认证之后启动生效

 

配置文件:  /etc/security/pam_winbind.conf

作用: 将AD域中用户连接samba服务器后,限制在samba服务器中的 / home目录对应的AD用户目录下:

例如AD用户小明连接到samba后,将权限限制在samba中的/home/xiaoming/中(共享目录除外) 

 

 

 

3. 与AD同步时间:

      ntpdate 192.168.8.188

   

4.具体配置:

# /etc/samba/smb.conf(只显示全局设置)

[global]
        workgroup = SILANIC
        realm = SILANIC.CN
        security = ads
        idmap config * : range = 16777216-33554431
        template shell = /bin/bash
        template homedir = /home/%D/%U
        winbind enum users = yes
        winbind enum groups =yes
        winbind use default domain = true
        winbind offline logon = true

        server string = PT2CTD
        log file =/var/log/samba/log.%m
        max log size = 50

        passdb backend = tdbsam
        encrypt passwords = yes
        printing = cups
        printcap name = cups
        load printers = yes

# /etc/nsswitch.conf  (只显示修改项)

 passwd:     files winbind
shadow:     files winbind
group:      files winbind

# /etc/krb5.conf(全部显示)
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt
 default_realm = SILANIC.CN
 default_ccache_name = KEYRING:persistent:%{uid}

[realms]
  SILANIC.CN = {
   kdc = 172.17.1.11
   admin_server = 172.17.1.11
  }

[domain_realm]
 .example.com = SILANIC.CN
  example.com = SILANIC.CN

 

# /etc/pam.d/system-auth(在末行增加以下内容:)

session     required      pam_mkhomedir.so

# /etc/pam.d/password-auth(在末行增加以下内容:)

session     required      pam_mkhomedir.so

# /etc/security/pam_winbind.conf (在末行增加以下内容:)

require_membership_of =S-1-5-21-1111111111-1111111111-1111111111-111

 

 5. 加入AD域:

net ads join -Uadministrator

加入后,请重新服务:

systemctl restart smb
systemctl restart winbind

 

6.测试winbind

    wbinfo -t
    wbinfo -u
    wbinfo -g

7.测试kerberos

kinit administrator

[root@pt2ctd samba]# kinit administrator
Password for administrator@SILANIC.CN:
[root@pt2ctd samba]#

8. 加入域时各种报错:

 A. 先清理缓存

rm -rf /var/lib/samba/private/secrets.tdb

rm -rf /var/lib/samba/gencache.tdb

B. samba退出域

net ads leave -U cdroot

 

9.常用命令

 A. 重载smbdnmbdwinbindd的配置,请将reload-config消息类型发送到all目标:

# smbcontrol all reload-config

  

 B.测试samba配置参数:

 # testparm /etc/samba/smb.conf

C. 加入AD域命令:

net ads join -U "DOMAIN\administrator"

10.安全防护:

设置SELinux,请在目录中设置samba_share_t上下文:

# semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?"
# restorecon -Rv /srv/samba/example/

打开所需的端口并使用firewall-cmd实用程序重新加载防火墙配置:

# firewall-cmd --permanent --add-service=samba
# firewall-cmd --reload
11. samba共享说明
要提供分享资源时,须先把欲分享的资源以 [ ] 符号括住,底下通常会带指令和参数来表示此资源的设定和存取权限等,详情如下:

comment---------注释说明
path------------分享资源的完整路径名称,除了路径要正确外,目录的权限也要设对
browseable------是yes/否no在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取
printable-------是yes/否no允许打印
hide dot ftles--是yes/否no隐藏隐藏文件
public----------是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
guest ok--------是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
read only-------是yes/否no以只读方式共享当与writable发生冲突时也writable为准
writable--------是yes/否no不以只读方式共享当与read only发生冲突时,无视read only
vaild users-----设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名)
invalid users---设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名)
read list-------设定此名单内的成员为只读(用户名/@组名)
write list------若设定为只读时,则只有此设定的名单内的成员才可作写入动作(用户名/@组名)
create mask-----建立文件时所给的权限
directory mask--建立目录时所给的权限
force group-----指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名)
force user------指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名)
allow hosts-----设定只有此网段/IP的用户才能访问共享资源
allwo hosts = 网段 except IP
deny hosts------设定只有此网段/IP的用户不能访问共享资源
allow hosts=本网段指定IP指定IP
deny hosts=指定IP本网段指定IP
 
posted @ 2019-06-20 15:12  3哥哥  阅读(6072)  评论(0编辑  收藏  举报