type
status
date
slug
summary
tags
category
icon
password

引言

本文将呈现 : 1.samba服务的相关背景与原理 2.samba服务的搭建与配置(针对内网) 3.配置win10连接公网ip连接samba服务(针对公网)
之前服务器于搭建chatgpt的微信机器人后,闲暇之余想做个文件服务器,选择了samba做文件共享,轻松搞定于局域网共享,但由于要给远方的朋友也使用,便有了让远方朋友连接公网ip的samba服务器,由于考虑到端口问题,比如445端口(注释),所以得突破这个点,后面有了一个思路,便是通过 netsh来设置端口映射
注释!
samba是默认使用445端口进行通信,且服务针对windows, windows 默认连的是 445 端口
2017年5月,出现了永恒之蓝病毒(比特币勒索病毒), 永恒之蓝(EternalBlue)是一种利用Windows操作系统中的漏洞进行攻击的网络蠕虫病毒。它最初由美国国家安全局(NSA)开发,在泄露后被黑客组织使用,给全球范围内的计算机系统带来了严重的影响。 由此导致运营商(内地三大运营服务商)把 445 端口封了,因此现在无法通过 445 端口连接你的 linux 服务器了

1.samba服务简介

1.1什么是samba服务

Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件;Samba提供了一种在不同操作系统之间共享文件、打印机和其他资源的方法。它的本质是一个实现了SMB/CIFS协议的服务器软件,允许不同操作系统的计算机之间进行文件共享和通信。

1.2samba服务的应用

Samba能做什么?
  • 分享档案与打印机服务
  • 可以提供用户登入Samba主机时的身份认证,以提供不同身份者的个别数据。
  • 可以进行windows网络上的主机名解析
  • 可以进行装置的分享
    • Samba服务器的应用实例:
  • 利用软件直接编修WWW主机上面的网页数据
    • 用FTP修改,后上传;不方便,很有可能传上去旧版本的。
    • 在线修改比较能迅速看到结果。
  • 做成可直接联机的文件服务器
    • 因为每个人登陆的账户名不同,这样对目录的权限也不同,实现权限控制。

2.samba服务器的搭建(内网)

第一步:安装samba服务

bash

yum -y install samba* ## 安装samba服务 systemctl start smb ## 启动服务 systemctl enable smb ##让系统在引导时自动启动 Samba 服务 firewall-cmd --permanent --add-service=samba ## 防火墙添加 Samba 服务的规则,允许传入和传出与 Samba 相关的网络流量,--permanent 参数表示将规则永久保存,以便在系统重启后仍然有效 firewall-cmd --reload ## 有permanent参数的时候需要马上重载生效 getenforce ## 获取 SELinux 当前的执行模式,此时为permissive模式便可,否则使用命令:setenforce 0 ## Enforcing:表示 SELinux 正在强制执行安全策略,并且会拒绝违反策略的操作。 ## Permissive:表示 SELinux 已被启用,但仅会记录违反策略的操作而不阻止它们。 ## Disabled:表示 SELinux 已被禁用,不会对系统进行强制访问控制。
Bash

第二步:Samba服务的配置

Samba服务的主要配置文件为:/etc/sambs/smb.conf , 主配置文件由两部分构成:Global 部分和 Share 部分

1.global部分:

该设置都是与Samba服务整体运行环境有关的选项,它的设置项目是针对所有共享资源的

bash

cat /etc/samba/smb.conf # 查看配置文件内容 # 文件内容如下,更详细的smb.conf配置内容可以上网查找,这里做部分注释 # See smb.conf.example for a more detailed config file or # read the smb.conf manpage. # Run 'testparm' to verify the config is correct after # you modified it. [global] #全局参数:该设置都是与Samba服务整体运行环境有关的选项,它的设置项目是针对所有共享资源的 workgroup =MYGROUP #设定Samba Server所要加入的工作组或域 security = user #安装验证方式,总共有四种,目前不再支持share级别 passdb backend = tdbsam #定义用户后台类型,总共有三种 printing = cups printcap name = cups load printers = yes #设置在Samba服务启动时是否共享打印机设备 cups options = raw #打印机的选项 [homes] comment = Home Directories #描述信息 valid users = %S, %D%w%S #有效访问用户 path = ~ #文件路径 browseable = No #指定共享信息是否在“网上邻居”中可见 read only = No #是否只读 inherit acls = Yes [printers] comment = All Printers path = /var/tmp #共享文件的实际路径。 printable = Yes create mask = 0600 browseable = No [print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = root create mask = 0664 directory mask = 0775
Bash

2.share部分:

该设置针对的是共享目录个别的设置,只对当前的共享资源起作用

bash

vim /etc/samba/smb.conf ## 在文件最后添加以下,此为测试 [share] comment = Share Directories ## 这个参数提供对共享资源的描述 path=/www/share ## 指定了要共享的目录路径 public = yes ## public用来指定该共享是否允许guest账户访问 browseable = yes ## 共享将在网络上可见 writable = yes ## 设置共享的可写性
Bash
:wq!保存退出
还有其他参数可自行 选择设置: valid users = 允许访问该共享的用户invalid users = 禁止访问该共享的用户write list = 允许写入该共享的用户

bash

systemctl restart smb.service ## 重启smb服务 ## 添加Samba用户 smbpasswd –a username ## 设置Samba用户的密码 pdbedit –a username ## 向Samba数据库中添加用户 pdbedit -L ## 查看已注册的Samba用户列表 在Windows运行中键入\\Server_IP验证 注意:::第二次连接更换用户需要运行:net use * /d /y
Bash
到此,服务器配置便完成

3.samba服务配置连接(公网)

在引言已经提到,由于永恒之蓝病毒的影响,445端口已封,目前无法通过 445 端口连接你的 linux 服务器了,下面的操作便是利用 netsh 来绕过这个端口,接下来介绍该工具与实现方法

netsh简介

功能:Netsh是Windows操作系统中的命令行脚本实用工具,用于管理和配置网络功能
命令语法: 命令语法:Netsh命令的基本语法为 netsh <context> <subcontext> command
想要更多关于特定"netsh"命令及其用法的信息,可以在命令提示符中输入netsh /?或netsh command /?来查看内置帮助系统

netsh实现本机端口映射

更换原本的445端口 设置本机端口映射到你那台 samba 的 linux 服务器的 1314 端口。最后,你就可以通过\\127.0.0.1访问你的文件共享服务了
  1. 配置smb.conf,更改端口, 修改 Samba 主配置文件:/etc/samba/smb.conf ;通过参数smb ports 将 Samba 的端口更改为:1314,然后重启服务
    1. bash

      vim /etc/samba/smb.conf # See smb.conf.example for a more detailed config file or # read the smb.conf manpage. # Run 'testparm' to verify the config is correct after # you modified it. [global] workgroup = SAMBA security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw smb ports = 1314 ## 添加此行 systemctl restart smb.service ## 重启服务 ## 查看端口 [root@miyi_server ~]# netstat -nplt | grep smb tcp 0 0 0.0.0.0:1314 0.0.0.0:* LISTEN 7528/smbd tcp6 0 0 :::1314 :::* LISTEN 7528/smbd samba服务配置到此完成
      Bash
  1. 配置win10
    1. 关闭 windows 的 445 端口
      1. bash

        ## 使用cmd命令行关闭,也可通过任务管理器的服务里找到, 445 端口应该是一直被 LanmanServer 占用的,Windows共享服务的显示名称为Server,实际服务名为LanmanServer,为文件共享服务; sc config LanmanServer start= disabled net stop LanmanServer
        Bash
    2. 启动 windows 的 ip helper 服务
      1. bash

        ## sc config iphlpsvc start= auto用于配置Windows中“IP Helper”服务的启动类型。通过将其设置为“自动”,您将指示Windows在系统启动期间自动启动IP Helper服务,此ip helper用来搞端口转发 sc config iphlpsvc start= auto
        Bash
    3. 设置 windows 端口转发
      1. bash

        ## connectaddress后为公网ip地址,运行后无显示,后用 netsh interface portproxy add v4tov4 listenport=445 connectaddress=xxx.xx.xxx.xx connectport=1314 ## 注意:必须重启电脑,且服务器对应开启1314端口 ## 查看转发的端口: netsh interface portproxy show v4tov4
        Bash
        notion image
    4. 输入\\127.0.0.1访问服务器文件
      1. 同内网一样的用户操作,权限操作,区别就是内网访问是同个同个网段的ip访问,而这个是通过访问 本地回环地址 , 通过监听的本地端口号 , 进行端口转发,将传入的连接从本地计算机的445端口转发到指定的目标 IP 地址和端口号

结语

samba服务的内外网连接到此为止,对于内网上的samba是相当方便的,对于公网上的连接,有这样的一个思路和方法,同样也算不错的;
结束之余,也想到了用内网穿透的方法,这里没去实现,顺带提一下

内网穿透

内网穿透一般的步骤和方法:
  1. 配置Samba服务器:首先,您需要在本地网络中配置并启动Samba服务器。确保Samba服务器已正确设置并具有共享文件夹。
  1. 选择内网穿透工具:选择一个适合您需求的内网穿透工具。常用的内网穿透工具包括ngrok、frp、inlets等。这些工具允许您创建一个隧道,将公网请求转发到本地网络。
  1. 下载和配置内网穿透工具:根据您选择的工具,下载并安装相应的软件。按照工具提供的说明进行配置,将本地Samba服务器的端口映射到公网IP上。
  1. 启动内网穿透服务:运行内网穿透工具并启动隧道服务。该服务会为您生成一个公网可访问的地址,将流量转发到本地Samba服务器。
  1. 访问Samba服务器:使用生成的公网地址,您就可以从任何具有互联网连接的设备上访问Samba服务器了。只需将生成的地址输入到Samba客户端中,即可连接到Samba服务器并访问共享文件夹。
使用内网穿透技术会涉及到网络安全方面的问题。确保已经采取了必要的安全措施,如设置强密码、使用加密连接等,以保护的Samba服务器和数据的安全性。
记录~~收工
ip地址与探针 逻辑推理的艺术:归纳与演绎
2024-2025 宓翊23.

miyi23 | 博学而笃志,切问而近思~ 爱探索,热爱技术的Geek一枚~

Powered by NotionNext 4.1.5.