如何在CentOS 7上不提供Shell访问的情况下配置和保护SFTP

在本文中,我们将学习如何在不启用CentOS 7上的外壳访问的情况下配置SFTP,SSH文件传输协议(SFTP)是使用SSH加密连接将文件从服务器传输到服务器的安全方法,这是不同的所有FTP客户端支持的文件传输协议(FTP)中的协议。

可以通过在计算机上启用了SSH访问的所有服务器上使用默认配置来配置SFTP。SFTP是一种安全且最容易使用的方法,在标准配置中有一个缺点,它允许终端外壳访问服务器上的所有SFTP用户。

在某些组织中,我们希望仅允许文件传输,而不能访问SSH。

先决条件

  • 在机器上安装的CentOS7.x。

  • 在计算机上具有sudo权限的用户。

为SFTP创建用户

我们需要创建一个新用户,我们只需要使用创建的用户在服务器上授予FTP访问权限,并为该用户设置密码。

$ sudo adduser ftpuser

$ sudo passwd ftpuser
Output:
Changing password for user ftpuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

创建用于FTP访问的文件夹

我们需要在具有SSH服务器权限要求的计算机中创建一个文件夹,这一要求非常重要,尤其是该文件夹本身以及计算机中的所有子文件夹以及上述所有文件夹均由根拥有,并且没有人可以访问文件夹。

我们可以在/ var / sftp / files中创建文件夹/ var / sftp由root用户拥有,/ var / sftp / files由ftpuser所有。

现在,我们将创建所需的文件夹并设置SFTP设置所需的权限。

为SFTP用户创建文件夹,在文件夹上提供适当的用户权限并更改文件夹权限。

$ sudo mkdir -p /var/sftp/files
$ sudo chown root:root /var/sftp
$ sudo chmod 755 /var/sftp

现在,我们将/ var / sftp / files文件夹的权限授予新创建的用户'ftpuser'。

$ sudo chown ftpuser:ftpuser /var/sftp/files

限制对文件夹的访问

在这里,我们将更改SSH服务器中的配置文件,以限制新创建的用户ftpuser的SSH终端访问,但允许FTP文件传输。

让我们在文件末尾使用nano和下面的所有配置来编辑SSH配置。

$ sudo nano /etc/ssh/sshd_config

Output:
….
….
# Example of overriding settings on a per-user basis#Match User anoncvs
#       X11Forwarding no
#       AllowTcpForwarding no
#       PermitTTY no#       ForceCommand cvs server
Match User ftpuser
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/sftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

要确保重新启动sshd守护程序所需的配置,请使用以下命令–

$ sudo systemctl restart sshd

上述配置中使用的指令为–

  • 匹配用户-配置将应用到此指令中此处指定的用户,即ftpuser。

  • ForceCommand-限制用户以SSH用户身份在终端中登录,并在用户登录后允许SFTP。

  • PasswordAuthentication-这将允许对指定的用户进行密码认证。

  • ChrootDirectory / var / sftp / -不会超出/ var / sftp目录的所有用户。

  • AllowAgentForwarding否-不允许隧道到我们指定的用户。

  • AllowTcpForwarding否-不允许将端口转发给我们指定的用户。

  • X11Forwarding否-不允许X11转发给我们指定的用户。

验证配置

为了验证配置,我们将检查本地计算机上的SSH登录。

$ ssh ftpuser@localhost
Output:
ftpuser@localhost's password:
Could not chdir to home directory /home/ftpuser: No such file or directory
This service allows sftp connections only.
Connection to localhost closed.

如您所见,不允许使用SSH登录到ftpuser的连接。

现在,我们将对SFTP访问进行验证。

$ sftp ftpuser@localhost
Output:
ftpuser@localhost's password:
Connected to localhost.
sftp>

如您所见,我们已经允许进行SFTP登录,现在您可以使用ls命令查看文件夹列表。

ftp> ls
files
sftp> ls -l
drwxr-xr-x    2 1000       1000       6 Jun 19 13:31 files
sftp>

在本文中,我们学习了将用户限制为仅将SFTP登录到单个文件夹,还限制了登录到SSH具有更复杂的配置和方案的终端,其中w可以限制单个用户或组或受限访问到一个IP地址。