如何在 Linux 中设置安全的 SFTP 服务器如何在 Linux 中设置安全的 SFTP 服务器如何在 Linux 中设置安全的 SFTP 服务器如何在 Linux 中设置安全的 SFTP 服务器
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 中设置安全的 SFTP 服务器

SFTP 服务通过 SSH 隧道提供安全的文件访问和传输机制。如果您要设置多个用户访问的SFTP服务器,则需要加强安全保护,不仅要保护SFTP用户免受外部入侵者的侵害,还要保护SFTP服务器免受(潜在恶意)SFTP用户的攻击,并在各个SFTP用户之间提供隔离。

在本教程中,我将描述如何在 Linux 中设置安全的 SFTP 服务器,方法是正确保护 SFTP 服务器免受 SFTP 用户的攻击,并将各个 SFTP 用户相互隔离。可以有许多不同的方法来实现此目标,但我将在这里描述基于 MySecureShell 的方法。

MySecureShell 是基于 OpenSSH 的 SFTP 服务器,具有许多安全功能:

  • 限制每个连接的下载/上传带宽

  • 限制每个帐户的并发连接数

  • 隐藏文件和目录所有者/组/权限

  • 隐藏用户无权访问的文件和目录

  • 限制连接的生命周期

  • Chroot SFTP 用户进入他/她的主目录

  • 拒绝上传与正则表达式匹配的文件和目录

在 Linux 上安装 MySecureShell

要在 Linux 上使用 MySecureShell,您首先需要安装以下先决条件。

要在 Ubuntu 或 Debian 上安装先决条件:


$ sudo apt-get install libssl0.9.8 ssh openssh-server gcc make

要在 CentOS、RHEL 或 Fedora 上安装先决条件:


$ sudo yum install openssl-devel openssh-server gcc make

安装所有先决条件后,您可以在 Linux 上构建并安装 MySecureShell,如下所示。


$ wget http://mysecureshell.free.fr/repository/index.php/source/mysecureshell_1.31.tar.gz
$ tar xvfvz mysecureshell_1.31.tar.gz
$ cd mysecureshell_1.31
$ ./configure
$ make
$ sudo ./install.sh en

#########################################
#       MySecureShell       #
#########################################

Welcome to the MySecureShell installation script !

Detecting needed files for installation:
Existing file MySecureShell         [ OK ]
Existing file sftp_config         [ OK ]

Do you want to test MySecureShell (check libraries requirement) ? (Y/n)
Test MySecureShell...
Test ending

This script will made a few operations:
- Install MySecureShell in /bin
- Make a configuration file in /etc/ssh/sftp_config
- Introduce if which MySecureShell as a valid shell
- Install utilities in /usr/bin

WARNING: The server will shutdown and all sftp connected clients will be killed !
- Do you want to continue installation ? (Y/n)

MySecureShell Installation

MySecureShell file created             [ OK ]
MySecureShell file created                [ OK ]

Do you want MySecureShell shell to be add like valid shell on your system ? (Y/n)
MySecureShell shell added like a valid shell     [ OK ]

Installation of tool sftp-who         [ OK ]
Installation of tool sftp-kill            [ OK ]
Installation of tool sftp-state           [ OK ]
Installation of tool sftp-admin           [ OK ]
Installation of tool sftp-verif           [ OK ]
Installation of tool sftp-user            [ OK ]

Do you want to automatically rotate MySecureShell logs ? (Y/n)
Initialisation of MySecureShell rotation logs   [ OK ]
cp: target `/share/man/fr/man8' is not a directory
Installation of Manuals                [ OK ]

Installation Finished !

配置MySecureShell

安装后,验证 MySecureShell 的安装位置。


$ whereis MySecureShell

/usr/bin/MySecureShell

为了使用 MySecureShell 管理 SFTP 用户,首先创建 SFTP 用户所属的 Linux 组。假设该组名为 sftp。


$ sudo groupadd sftp

然后配置现有的 SFTP 用户(例如 alice),使该用户属于 sftp 组,并在登录时使用 MySecureShell shell。


$ sudo usermod -s /usr/bin/MySecureShell -g sftp alice

如果您要从头开始创建新的 SFTP 用户,请改为运行以下命令。


$ sudo useradd -m -s /usr/bin/MySecureShell -g sftp bob

要自定义 MySecureShell 的默认设置,请编辑其位于 /etc/ssh/sftp_config 的配置文件。在配置文件中,您可以定义各种每组安全设置。例如,对于 Linux 组 sftp:


$ sudo vi /etc/ssh/sftp_config

<Group sftp>
        Download                50k     # limit download speed for each connection
        Upload                  0       # unlimit upload speed for each connection
        StayAtHome              true    # limit user to his/her home directory
        VirtualChroot           true    # fake a chroot to the home account
        LimitConnectionByUser   1       # max connection for each account
        LimitConnectionByIP     1       # max connection by IP for each account
        IdleTimeOut             300     # disconnect user if idle too long time (in sec)
        HideNoAccess            true    # hide file/directory which user has no access
</Group>

编辑配置文件后,请确保按如下方式重新启动 sshd。

要在 Ubuntu 或 Debian 上重新启动 sshd:


$ sudo service ssh restart

要在 CentOS、RHEL 或 Fedora 上重新启动 sshd:


$ sudo service sshd restart

访问和管理SFTP服务器

在客户端,您可以按如下方式登录SFTP服务器。用户被chroot到他自己的主目录,并且服务器上的其他目录对用户不可见。


$ sftp [email _host.com

[email 's password: 
Connected to 192.168.233.141.
sftp> pwd
Remote working directory: /
sftp> 

在SFTP服务器端,您可以按如下方式管理SFTP服务器及其用户。

监控当前连接的SFTP用户:


$ sftp-who

--- 1 / 10 clients ---
Global used bandwith : 0 bytes/s / 0 bytes/s
PID: 24377   Name: bob   IP: 192.168.10.55
    Home: /home/bob
 Status: idle    Path: /
 File: 
  Connected: 2013/05/28 20:57:42 [since 01mins 05s]
   Speed: Download: 0 bytes/s [50.00 kbytes/s]  Upload: 0 bytes/s [unlimited]
  Total: Download: 1002 bytes   Upload: 82 bytes

强制断开特定 SFTP 用户的连接:


$ sudo sftp-kill bob
©2015-2025 艾丽卡 support@alaica.com