SSH & Samba

1. SSH的安装与配置

Secure Shell (SSH) 是一种网络协议,允许用户通过加密的通道安全地访问另一台计算机。SSH广泛用于远程登录系统、管理服务器和进行安全数据传输。在Ubuntu这样的Linux发行版中,安装和配置SSH服务是一项常见且相对简单的任务。以下是在Ubuntu系统上安装和配置SSH的步骤。

(1) 安装SSH服务器

~$ sudo apt-get update
~$ sudo apt install openssh-server

安装完成后,SSH服务会自动启动。你可以使用以下命令来检查SSH服务的状态:

~$ sudo systemctl status ssh

如果服务正在运行,你将看到关于SSH服务的详细信息。

ubuntu@Ubuntu20:~$ systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: e>
     Active: active (running) since Thu 2024-06-13 00:00:31 CST; 1h 0min ago
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 929 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 945 (sshd)
      Tasks: 1 (limit: 4607)
     Memory: 2.4M
     CGroup: /system.slice/ssh.service
             └─945 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

Warning: some journal files were not opened due to insufficient permissions.

ubuntu@Ubuntu20:~$ 

(2)通过CMD连接到SSH服务器,当然也可以通过MobaXterm进行连接。

C:\Users>ssh ubuntu@192.168.56.2
ubuntu@192.168.56.2's password:
Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.15.0-107-generic x86_64)

* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage

441 updates can be applied immediately.
356 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

New release '22.04.3 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Your Hardware Enablement Stack (HWE) is supported until April 2025.
Last login: Thu Jun 13 00:01:22 2024 from 192.168.56.1
ubuntu@Ubuntu20:~$

(3)SSHD配置文件

SSH的配置文件分为客户端文件ssh_config与服务端文件sshd_config,这里主要说的是服务端配置,如果你的系统是装在物理机上,项目组内共享,建议进行一定的安全配置。
以限定登录IP为例,在/etc/ssh/sshd_config文件中使用 AllowUsers 与 DenyUsers 两个参数来设置允许哪些用户通过哪些主机来访问,并限制哪些主机通过哪些用户来访问。
关于配置文件内容的详细信息,请参考以下官方文档:

OpenSSH https://www.openssh.com/
ssh_config https://man.openbsd.org/ssh_config
sshd_config https://man.openbsd.org/sshd_config
在/etc/ssh/sshd_config文件最后添加一行,格式为“DenyUsers user@IP”,其中user指用户名,IP指客户端IP,如果想拒绝某个IP上的所有登录请求,可写为“DenyUsers *@IP”。
DenyUsers user1@IP1
#拒绝用户名为user1的用户在IP为IP1的主机上进行远程连接,但user1可在其他主机上连接,同时其他用户可以在IP为IP1的主机上远程连接
DenyUsers user1@*
#拒绝user1的所有连接请求
DenyUsers *@IP1
#拒绝IP为IP1的主机上的所有链接

当然,这里也可以通过/etc/hosts.allow与/etc/hosts.deny文件来实现对SSH请求的访问限制,对于公用的服务器,建议设置合理的限制,只允许一定范围内的用户可以访问。

2. Samba的安装与配置

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

对于物理机上的文件共享,Infra部门有相应的要求,请按照 关于 Linux (Ubuntu)上的 文件共享 安全 进行相应的配置。

(1)安装Samba

~$ sudo apt-get install samba

(2)备份配置文件

~$ cd /etc/samba
~$ sudo cp smb.conf smb.conf.bak

关于samba配置的参数详解请参考官方文档
下面对一些常见的参数做一些说明

配置项 说明
global 全局设置:这部分配置项的内容对整个Samba服务器都有效
homes 宿主目录共享设置:设置Linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将自动映射到该用户的宿主文件夹中
printers 打印机共享设置:如果需要共享打印机设备,可以在这部分进行配置
workgroup 设置服务器所在的工作组名称
server string 设置服务器的说明文字,用于描述Samba服务器
security 设置服务器的安全级别,可设为以下三个值中的一 个:user(需由本服务器验证用户名及密码)、server(需指定另一台服务器来验证用户名及密码)、ads(由Windows域控制器验证用户名及密码)
log file 设置 Samba 服务器的日志文件,默认存放在 /var/log/samba/目录下,表示将日志文件保存到/var/log/samba/目录中,按每个客户机建立 一 个日志文件,其中"%m"变量表示客户端主机名或IP地址
passwd backend 设置共享账户文件的类型, 默认使用tdbsam (TDB数据库文件)。若网络内拥有LDAP目录认证,这里可以改用ldapsam数据库文件;另外,若要兼容旧版的Samba密码文件,也可以将类型设为smbpasswd
comment 设置对应共享目录的注释、说明信息
path 设置对应共享目录在服务器中的文件夹路径
browseable 设置该共享目录在“ 网上邻居 ”中是否可见, 设置为no时相当于隐藏共享目录
guest ok 设置是否所有人都可以访问共享目录, 与"public"配置项的作用相同
writable 设置该共享目录是否可写, 与"read only"配置项的作用相反,即使"read only = yes", "writable = yes"依然有效

(3)添加samba用户,修改smb.conf文件
想要登录smaba的用户必须是系统中已经存在的用户,这里我们添加一个叫test的新用户,系统会为新添加的用户创建一个同名的组。用于共享文件的用户,不建议添加sudo权限,普通用户即可。

~$ sudo useradd -d /home/test -m test
#-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
#/home/test是主目录,test是用户名
~$ sudo passwd test
#为test设置登陆密码,这里的密码是test登录系统的密码,新添加的用户默认是lock的。
~$ sudo smbpasswd -a test
#为用户test添加登录samba的密码,这个密码可以跟前面设置的登陆密码不一致。
~$ sudo pdbedit -L
# 查看samba用户

修改smb.conf文件,在文件末尾添加如下内容

[Share$]
    comment = Share document
    path = /home/test
    security = user
    public = no
    browseable = no
    guest ok = no
    read only = yes
    valid users = test
    deadtime = 10
    load printers = no

检查smb.conf,是否有错误

~$ sudo testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions            //按Enter键输出当前的配置清单
~$

重启samba

~$ sudo service smbd restart

在windows端连接是可能会遇到连接错误的提示,根本原因是由于Windows 10 及以上系统 SMB 客户端有一条安全规则,默认禁止不安全的 Lanmam 工作站登录(即不允许 guest 登录),保障 SMB 安全。Linux 下 samba 的默认配置是,用户登陆失败后映射到 guest 账户。


百度的解决方案大部分是选择“Enable insecure guest logons", 也就是启用不安全的来宾登录策略,这里不建议修改这个配置,可以通过修改samba服务端的默认配置,即在smb.conf中设置,不允许guest访问。

#/etc/samba/smb.conf
#map to guest = bad user
修改为
map to guest = never
#重启smba服务
~$ sudo service smba restart

windows端登录,注意路径后面的符号"$",完整路径包含”$", 如果直接访问 \192.168.56.2,会显示空白,前面的smb.conf中将共享文件夹名称隐藏了,只有手动拼写完整路径,才能看到Share路径。

热门相关:呆萌小青梅:妖孽竹马太腹黑   司令,以权谋妻   农家小福女   性版17:男性的17种性幻想   特工皇后不好惹