samba共享服务的部署及安全优化

article/2025/8/14 3:06:14

=@TOC

1.samba服务简介

在构建主机时我们需要将主机系统的数据存储在存储服务器中(如下图所示),这样用户在需要访问系统数据资源时,可以通过不同的终端主机访问存储服务器,避免因客户端主机瘫痪导致用户数据丢失,我们将这一技术成为存储分离技术,这一技术的本质是共享文件系统的读写权限,而不是将文件系统下载到客户端主机后共享。

1.1smb协议

smb(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同操作系统的计算机之间提供文件及打印机等资源的共享服务。SMB
协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

1.2cifs协议

随着 Internet 的流行,Microsoft 希望将 SMB 这个协议扩展到 Internet 上去,成为 Internet上计算机之间相互共享数据的一种标准。因此它将原有的几乎没有多少技术文档的SMB协议进行整理,重新命名为CIFS (CommonInternet File System),它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB 协议版本,并由 Microsoft 使用。SMB 协议在局域网上用于服务器文件访问和打印的协议。

1.3 ftp 服务 与 samba 服务对比

ftp 的优缺点:
优点:文件传输、应用层协议、可跨平台
缺点:只能实现文件传输,无法实现文件系统挂载;无法直接修改服务器端文件

Samba 的特性: 使用 smb/cifs 协议、可跨平台、可实现文件系统挂载、可实现服务器端修改文件

2. samba基本信息

服务启动脚本smb.service
主配置目录/etc/samba
主配置文件/etc/smb.conf
安全上下文samba_share_t
默认使用端口139、445
服务安装包samba(软件主体)、samba-common(说明软件)、samba-client(客户端软件)

3. samba的安装与启用

实验环境:

两台虚拟机
服务端 westos_storage :172.25.254.100
客户端 num2 :172.25.254.200

[root@westos_storage ~]# dnf install samba samba-common.noarch samba-client.x86_64  -y
//zhua
[root@westos_storage ~]# systemctl enable --now smb.service
[root@westos_storage ~]# firewall-cmd --permanent --add-service=samba
[root@westos_storage ~]# firewall-cmd --reload
smbclient -L //172.25.254.100

安装:
在这里插入图片描述开启smb服务,添加smb到火墙中
在这里插入图片描述测试:pdbedit -L查看设置的samba账户列表
在这里插入图片描述# samba用户的建立

4. samba用户的建立

smbpasswd -a lee #添加用户
pdbedit -L       #查看用户列表
pdbedit -x lee   #删除用户

注:samda 新建的用户必须是本地已有的用户,如图lee新建失败
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

5. samba服务共享目录

5.1 创建共享目录

[root@westos_storage samba]# cp smb.conf smb.conf.example -p     // 重新生成主配置文件
mkdir /westos		#创建共享目录
semanage fcontext -a -t samba_share_t '/westos_share(/.*)?'        //更改安全上下文
restorecon -RvvF /westos_share/                                                // 刷新vim /etc/samba/smb.conf		#编写配置文件
[westos_share]comment = westos_sharepath = /westos_sharesystemctl restart smb.service 
![在这里插入图片描述](https://img-blog.csdnimg.cn/ed95c1b9d1154aa5a57a16855f662fc7.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/9bed0428bc2543c683e5161c095a3994.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Njk3MTg5NA==,size_16,color_FFFFFF,t_70)

在这里插入图片描述在这里插入图片描述

5.2 系统自建目录的共享

[root@westos_storage samba]# vim smb.conf[etc]comment = etc dirpath = /etc
[root@westos_storage samba]# systemctl restart smb.service 
[root@westos_storage samba]# smbclient  -L //172.25.254.100  -U westos

共享成功
在这里插入图片描述

系统自建目录不能随意更改安全上下文
在这里插入图片描述在这里插入图片描述

5.3 samba用户访问家目录

setsebool -P samba_enable_home_dirs on 调整selinux中的smb的波尔直使用户可以访问家目录

在这里插入图片描述

6.samba的访问控制

[root@num2 ~]# dnf install samba-client -y num2客户端要安装

6.1 全局访问控制

1.全局白名单

只允许200主机来访问当前的samba服务器
在这里插入图片描述100主机访问失败
在这里插入图片描述
200主机成功访问
在这里插入图片描述2.全局黑名单
在这里插入图片描述200主机访问失败
在这里插入图片描述100主机访问成功
在这里插入图片描述真机访问成功
在这里插入图片描述

6.2 局部访问控制

westos_share 这个共享目录只能被200主机访问,此访问设定只针对westos_share
在这里插入图片描述
100主机访问失败
在这里插入图片描述
200主机访问成功
在这里插入图片描述

7.samba的常用配置参数

browseable = yes|no 		##是否隐藏共享valid users = lee 			##指定访问用户
valid users = +lee|@lee 	##指定访问用户组writable = yes 				##可写write list = westos 		##指定用户可写
write list = +westos 		##指定用户组可写
write list = @westosmap to guest = bad user 	##写到全局设定中
guest ok = yes 				##允许匿名用户访问admin users = lee 			##指定此共享的超级用户身份

1.browseable = no ##隐藏共享
在这里插入图片描述在这里插入图片描述

2.指定访问
valid users = westos ##指定访问用
在这里插入图片描述
在这里插入图片描述
valid users = +lee|@lee ##指定访问用户组

在这里插入图片描述在这里插入图片描述
3.writable = yes ##可写
在这里插入图片描述
write list = lee 此共享只对lee可写
在这里插入图片描述在这里插入图片描述
write list = +lee 此共享只对lee组可写

在这里插入图片描述在这里插入图片描述在这里插入图片描述

4.允许匿名用户访问:
smbclient //共享主机ip/共享目录即以匿名用户身份访问共享资源时无法访问,编辑samba配置文件,在全局模块中将所有访问samba服务器的未知用户身份映射为匿名用户,在某单个共享目录语句块中设置允许匿名用户访问,重启smb服务,此时smbclient //共享主机ip/该共享目录以匿名用户身份访问可以看到指定的单个共享目录下的文件资源

在这里插入图片描述在这里插入图片描述在这里插入图片描述

8.samba服务客户端共享优化—autofs自动挂载

实现自动挂载过程

[root@num2 samba]# dnf install autofs -y
[root@num2 samba]# vim /etc/auto.master
[root@num2 samba]# vim /etc/auto.share
[root@num2 samba]# cat /etc/auto.share
samba      -fstype=cifs,username=westos,password=westos        ://172.25.254.100/westos_share
[root@num2 samba]# vim /etc/autofs.conf
[root@num2 samba]# systemctl restart autofs.service

测试过程

[root@num2 samba]# cd 
[root@num2 ~]# cd westos
-bash: cd: westos: No such file or directory
[root@num2 ~]# cd 
[root@num2 ~]# cd /westos
[root@num2 westos]# ls
[root@num2 westos]# cd samba
[root@num2 samba]# ls
api  file  file1  file2  file3  file4
[root@num2 samba]# 

在客户端中安装autofs 实现自动挂载和自动卸载
在这里插入图片描述
客户端主机num2中编辑策略文件/etc/auto.master写入最终挂载点的上级目录(如果上级目录是根目录则写/-,且编写挂载子策略文件指定最终挂载点时要写绝对路径)、指定挂载子策略文件,编写挂载子策略文件指定将资源以指定参数方式挂载到最终挂载点

在这里插入图片描述
挂载子策略文件**/etc/auto.share中写入最终挂载点的相对路径,挂载参数、挂载服务器ip及资源共享
在这里插入图片描述 主配置文件
/etc/autofs.conf**设置的资源闲置时间限制,挂载资源在10妙以上无任何程序使用那么自动卸载 默认时间是300妙
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.samba的多用户挂载

在客户端如果用普通的挂载方式,没有通过用户验证的人也可以访问samba服务。
解决办法:

dnf install cifs-utils.x86_64 -y    #安装服务vim /root/smbpass   				#编辑认证文件
username=lee
password=westos
chmod 600 /root/smpass

在这里插入图片描述

mount -o credentials=/root/smbpass,multiuser  //172.25.254.100/westos_share /mn
su - westos
ls /mnt
ls: cannot access '/mnt': Permission denied

在这里插入图片描述如果想要使客户端主机中的其他用户在多用户挂载后能够查看到共享目录中的文件资源,需要在挂载时加入sec=ntlmssp参数,即指定客户端主机中的其他用户在多用户挂载后可以通过ntlmssp这种认证方式进行samba账户认证,此时以root用户身份挂载后,切换到普通用户westos中,可以执行cifscreds add(添加认证) -u xxx(指定samba账户) samba服务器IP命令输入指定samba账户密码后,以普通用户westos身份完成认证,此时westos中就可以查看到共享目录中的文件资源(出现报错时使用cifscreds clearall清除历史认证记录重新认证即可)

[root@num2 ~]# mount -o credentials=/root/smbpass,multiuser,sec=ntlmssp  //172.25.254.100/westos_share /mnt/
[root@num2 ~]# su - westos
[westos@num2 ~]$ ls /mnt
ls: cannot access '/mnt': Permission denied
[westos@num2 ~]$ cifscreds add -u westos 172.25.254.100
Password: ls /mnt

在这里插入图片描述


http://chatgpt.dhexx.cn/article/1DEgCoiJ.shtml

相关文章

记录一次紫狐Rootkit应急响应过程

前言:​ ​ ​受保密协议影响,此次仅介绍发现过程、思路、以及该Rootkit行为,以便大家后续的参考,此文章篇幅较长,建议大家穿好纸尿裤观看! ​ 紫狐(Purple Fox)Rootkit概述 紫狐…

基于AD Event日志检测哈希传递攻击

01、简介 哈希传递攻击是基于NTLM认证的一种攻击方式,当我们获得某个管理员用户的密码哈希值,就可以利用密码哈希值进行横向渗透。 在域环境中,只有域管理员的哈希值才能进行哈希传递攻击,攻击成功后,可以访问域内任何…

linux学习笔记-RH135(六):网络文件系统

网络文件系统 一.samba服务1.samba基本信息2.samba的安装与启用3.samba用户的建立4.samba用户访问家目录6.samba访问控制7.samba的常用配置参数8.samba多用户挂载9.samba自动挂载 二.NFS1.nfs的启用2.nfs配置3.nfs配置参数4.nfs自动挂载5.自动挂载参数更改挂载版本更改挂载超时…

工作组与域环境下NTLM协议数据包分析

NTLM协议由来 早起SMB协议以明文口令形式在网络上传输,存在安全问题为了解决这个问题出现了LM协议, 因为LM协议过于简单很容易被破解,于是微软又提出了NTLM协议,以及更新的NTLM第2版。 发展过程:SMB -> LM -> NTLM -> NTLM v2 NTLM的作用:用于工作组…

基于NTLM认证的中间人攻击(含实战)

文章目录 中间人攻击0x01 域和工作组0x02 NTLM认证(Windows)本地认证NTLM Hash的生成 网络认证工作组环境NTLM认证流程域环境NTLM认证 0x03 域名解析协议LLMNR解析过程 NetBIOSWindows系统域名解析顺序 0x04 WPAD工作原理WPAD劫持 0x05 NTLM中继0x06 Responder介绍 攻击演示0x0…

批次更新失败服务器返回的信息,服务器出现大批量登录审核失败/NtLmSsp攻击

问题:服务器出现大批量登录审核失败 详细信息:---重点红色标注 日志名称: Security 来源: Microsoft-Windows-Security-Auditing 日期: 2020/7/28 16:47:37 事件 ID: 4625 任务类别: 登录 级别: 信息 关键字: 审核失败 用户: 暂缺 计算机: VM82 描述: 帐…

NtLmSsp 登录爆破防御办法踩的坑-网络安全:LAN管理器身份验证级别设置还原

windows系统日志看到很多相同NtlmSsp报错 于是在找了一些解决方法,按照下面这张图设置踩了一些坑 按照图上设置2008系统没问题,2019系统远程桌面就怎么设置都连不上了。 暂时正确的解决办法: 1、实际操作折腾一番发现上面那个LAN可以不用设…

针对ntlmssp攻击的本机安全攻防记(第一回)

一、写在前面 这个问题说来也是恼火,切入正题之前先谈谈最近的一段狗血的经历,如果比较着急,就直接跳到第二部分吧!! 新去的一家政府支持的号称做互联网的单位(据后来观察几个部门都是凑吧的)。…

NtLmSsp 登录爆破防御办法 附修改RDP远程桌面3389端口方法

NtLmSsp 登录爆破防御办法 附修改RDP远程桌面3389端口方法 https://www.bnxb.com/winserver/27745.html 今天在系统日志中看到一堆尝试登录远程桌面失败的提示,内容类似下方 - EventData SubjectUserSid S-1-0-0 SubjectUserName - SubjectDomainName - Su…

java 打包exe_Java项目打包成exe的详细教程

Java项目打包成exe的详细教程 把Java项目打包成exe共分为以下两步: 1、 利用Eclipse先把Java项目先打成jar包 2、 利用exe4j工具把jar包转成exe 这里以Java项目(ExeDemo)为例进行讲解 随便在一个位置新建一个文件夹,文件夹的名称也可以随便起&#xff0c…

java项目如何打包?

导航 步骤 1 编写编译的脚本步骤 2 打包脚本步骤 3 jar包里面是什么 D盘下面的tool文件夹已经有三个工具类了(其实是两个,CustNode是为了TuziLinkedList服务的),我们这一节来进行打包,这样的好处就是不用每次编译都把t…

Java打包exe文件

launch4j下载地址:launch4j 虽然很多人都说没什么公司会使用Java编辑Swing界面程序,但有空余时间时总会想编写一些自己的小程序,经常这样乐此不彼。开发之前首先得会怎么将Java程序打包生成exe文件,要不然每次使用软件时都要使用…

JAVA程序打包为EXE

把Java项目打包成exe共分为以下两步: 1、 利用Eclipse先把Java项目先打成jar包 2、 利用exe4j工具把jar包转成exe 这里以Java项目(ExeDemo)为例进行讲解 随便在一个位置新建一个文件夹,文件夹的名称也可以随便起,这里我们在桌面上新建一个…

java打包为可执行的exe文件,并在无环境的电脑上运行

上一篇文章将讲完关于摸鱼时间工具的代码部分,具体参考一个好玩的java摸鱼时间计算悬浮工具_峰哥爱写小代码01的博客-CSDN博客,下面我们来对程序进行打包,首先是idea打包为可执行的jar程序,具体步骤如下: 点击File-&g…

java文件如何打包_java文件如何打包?

java文件打包的方法如下: 1、首先要确认自己写的程序有没有报错。 2、第一次我写的是Web Project到现在,我一直没有执行成功,所以最好创建的是java Project 打包步骤: 1.在项目上,右键,选择Export。 2.进入…

java打包成jar对其进行加密处理防止反编译

Xjar工具实现 1:创建一个maven项目(无需启动类) 1> pom依赖 <dependencies><dependency><groupId>com.github.core-lib</groupId><

java打包----“Artifacts”

打包流程 1. 打开菜单栏File-Project Structure 2. 点击Artifacts 3. 点击 "" - JAR - From module with depenencies 注意选择主类--运行的类 二.阶段编译jar包 2.1. 点击Build-Artifacts 上述完成后&#xff0c;就是生成了*.jar包,去下面的截图中找寻*.jar包的…

Java命令行编译打包

文章目录 一、简介1、介绍2、Jar简介3、Java命令行3.1 jar相关命令3.2 Java相关命令 二、简单编译打包实战1、简单编译执行2、Jar包方式运行2.1 普通方式执行2.2 可执行的 jar 包 一、简介 1、介绍 本文主要记录jar与java相关命令介绍以及Java 命令行编译、执行、打包等操作 …

java打包_java工程打包(方式一)

1、新建工程myproject package cn.zj; public class TestMain { public static void main(String[] args) { System.out.println("Hello World!"); } } 2、右击Java工程选择Export—>选择JAR file—>Next 3、选择要打包的文件&#xff0c;不需要的文件不必打包…

IDEA java打包方法(转载)

1、打包时尽可能选择将依赖的jar包独立存储&#xff0c;而不是将所有依赖打入同一个jar包的方式。后者会导致出现一些莫名的错误。 2、maven工程 有main函数的类&#xff0c;要放在src/main包中&#xff0c;而不是src/test包中。 3、如果使用jar包时显示no main manifest attr…