本文将学习一下几个方面的内容,将会结合具体的实验来一步步实现。
1、
用户账号的映射
2、
使用
IP
对客户端进行访问控制
3、
使用域名对客户端进行访问控制
4、
使用通配符对客户端进行访问控制
5、
设置
samba
的权限
6、
设置
samba
的隐藏共享
7、
Samba
客户端的配置
8、
Samba
的排错
Samba服务器的常规配置很容易就可以实现,但是并不能够满足企业的实际需求,所以需要做更加详细的配置。
(一)、用户账号的映射
因为samba服务器的账号必须对应一个同名的系统账号,所以就造成了这样的安全缺陷:只要知道samba服务器的samba账号,就等于知道了服务器的系统账号,只要破解其密码,从而加以利用,就可以来攻击samba服务器。
对于这个问题可以用账号的映射功能来加以解决。
方式:建立一个账号映射关系表,里面记录着samba账号和虚拟账号的对应关系,客户端访问时使用虚拟账号登录。这样告诉客户端用户的samba账号就不是和系统账号相对应的那个账号,而又可以访问samba服务器。
下面是具体实现的步骤
1、
开启用户账号映射功能,在全局设置中添加一行
2、
编辑
smbusers
,
smbusers
保存账号映射关系,添加一行用户的账号映射关系
把sale1映射为sky apple
3、重启samba服务
(二)、
使用
IP
对客户端进行访问控制
需要用到host allow和host deny字段
Host allow
定义可以访问的客户端
Host deny
定义禁止访问的客户端
案例:公司内部
samba
服务器上共享了一个目录
sales
,该目录文件为销售部的共享目录,公司规定
192.168.0.0/16
这个网段的
IP
地址都不能访问该目录,但是
192.168.1.1/24
这个地址可以访问,对于该需求,我们可做如下配置
编辑
samba
的主配置文件
vi /etc/samba/smb.conf
首先把安全级别改为
share
模式
Hosts allow = 192.168.1.1
表示允许该
IP
地址访问
注意:当
hosts deny
和
hosts allow
字段同时出现的时候,
hosts allow
优先。
我们在客户端验证一下,用
192.168.1.100
访问,错误信息如下
这样就达到了
IP
限制客户端访问的目的
示例:公司
samba
服务器上共享了一个目录
public
,公司规定
.sale.com
域和
.net
域的客户端不能访问,同时,主机名为
free
的客户端也不能访问
分析:这个案例很明显不适合用
IP
限制来做,因为一个域中可能会有很多台客户端,所以可以使用域名限制,如图:
(四)、使用通配符进行访问控制
示例:
samba
服务器共享了一个目录
sales
,规定所有人不允许访问,只有主机名为
cli-3e723d915cf.
的客户端可以访问
然后到客户端验证一下吧,我们先用
boss
帐户,可以正常访问
看到上面的共享文件界面后,下面是sales文件夹的内容,访问成功
案例:规定所以人不能访问
sales
目录,只允许
192.168.1.0
网段的
IP
地址访问,但是
192.168.1.100
除外
下面我们看看具体的实现步骤
修改配置文件,使用
EXCEPT
进行设置
它们的作用范围是不同的,设置在
[global]
里表示对
samba
服务器生效,如果设置在目录下,则表示对单一的目录生效
如图:表示只有客户端
192.168.1.100
能访问
samba
服务器
案例:公司
samba
服务器上有个共享目录
sales
,公司规定只有
boss
账号和
sales
组的账号可以完全控制,其他人只有读取的权限
分析:前面我们学习的
writable
字段已经不能够满足要求了,因为:当
writable = yes
时,表示所有人都可以写入,当
writable = no
时则表死所有人都不可以写入,这时候就要用到
write list
字段了
实现的步骤如下(省略的步骤可参照前一篇文章):
1、
建立
sales
组,在组中建立两个账号
sale1
和
sale2
,建立账号
boss
,
2、
将账号映射到
smbpasswd
账号,使用
smbpasswd –a
账号名
3、
编辑
smb
配置文件
5、
在客户端验证一下(省略)
(六)、
samba
的隐藏共享的设置
处于安全的考虑,该功能往往用在较为私密的目录,或是比较重要的目录上。从而保证只有管理员或者一些重要人员才知道
samba
服务器上有这个目录,而其他的员工则不知道。
Browseable
字段可以实现该功能
下面通过一个案例来说明
案例:
samba
服务器有一个共享目录
sales
,只有
boss
用户可以浏览并访问该目录,其他人都不可以浏览和访问该目录
分析:通过为
boss
单独建立一个配置文件,并且让
boss
访问的时候能够读取这个单独的配置文件即可。
具体实现的步骤如下:
为
boss
建立独立的配置文件
编辑独立配置文件
在
boss
的独立配置文件中删除
browseable = no
在客户端验证一下
用
boss
访问,可以看到
sales
目录
(七)、
samba
客户端的配置
linux
客户端访问
samba
共享有两种方式
1、
使用
smbclient
命令
首先确保客户端已经安装了
samba-client
软件包
查看目标主机共享目录列表的方式:
smbclient –L
目标
IP
地址或主机名
–U
登录用户名
%
密码
2、
smbclient
支持命令行的共享访问方式
格式:
smbclient //
目标
IP
地址或主机名
/
共享目录名
–U
用户名
%
密码
例:用
sale1
访问
public
目录
格式:
mount –t cifs //
目标
IP
地址或主机名
/
共享目录名
挂载点
–o username=
用户名
实例:使用
sale2
账号挂载
IP
地址为
192.168.1.1
的
samba
服务器的共享目录
public
到客户机的
/mnt
(八)、
samba
的排错思路
1
、看错误信息
2
、看配置文件,使用配置文件检查工具
3
、看日志文件的记录,切换到另一个终端对日志文件进行监控
使用:
tail –F /var/log/messages
4、
使用
testparm
命令检测
5、
使用
smbclient
命令进行测试,如果客户端不能和服务器连接,会出现不同种类的出错信息,可根据不同的出错信息进行判断错误的原因
u
tree connect failed(
可能是
hosts deny
字段的设置有问题
)
u
Connection refused(
可能是
smbd
进程未开启,确保
smbd
和
nmbd
进程开启,并使用
netstat –a
检查
netbios
使用的
139
端口是否处于监听状态
u
Session setup failed
(可能是输入了错误的用户名和密码)
u
Your server software is being unfriendly
(可能是服务器软件存在问题,配置
smbd
时使用了错误的参数)