如何安全地设置SFTP推送?

如何安全地设置SFTP推送?

我正在尝试从数据提供商处购买每小时/每天/每周发送的数据流。他们告诉我他们通过 SFTP 推送提供数据。我担心安全性。我应该采取哪些预防措施才能允许文件通过推送传输到我的服务器?

以下是我认为我需要做的事情:

  1. 创建发送文件的文件夹
  2. 为我的服务器创建 SSH 密钥和用户
  3. 限制该用户只能访问一个文件夹

这些正确吗?我希望有一个关于如何在我的服务器(linux)上设置安全 SFTP 推送的完整详细示例。

答案1

我认为,SFTP 或多或少是“内置”在标准 Linux 安装中的openssh-server。因此,如果您正在运行 SSH 服务器,那么您基本上已经准备就绪,但是:

  1. 查看 /etc/ssh/sshd.config 并确保至少root不能使用密码登录(root 只能使用密钥)。您确实应该完全禁用通过 SSH 的密码登录,只使用密钥。还要确保禁用所有转发选项。

  2. 还请考虑指定一个组并启用ChrootDirectory

  3. 设置和监控fail2ban以保护您sshd免受重复的密码猜测尝试。您将得到它们。或者考虑将 IP 地址列入白名单(如果可能),和/或用防火墙封锁永远不需要访问的国家/地区的 IP 范围。

  4. 创造一个帐户接收文件的位置。如果您在步骤 2 中为 chroot 指定了组,请在添加用户时指定该组。

  5. 将此帐户的 shell 更改为/sbin/nologin- 这样他们就无法获取 shell 并且仅限于 SFTP。

  6. 为该帐户创建一个 SSH 密钥。

  7. 调整帐户主文件夹的权限,使除了要接收文件的放置文件夹外,其他内容都不可写入。如果您正在执行此操作,则可能无需太担心这一点ChrootDirectory

  8. 为该用户设置磁盘配额,以便该帐户不能恶意填满您的磁盘。

  9. 设置一项cron作业或类似机制来定期扫描文件夹并复制出文件。

答案2

  1. 将原始 IP 列入白名单

然后,对于特定的 SFTP 配置,似乎 serverfault.com 上的这个兄弟问题有比我能提供的更完整的答案:

https://serverfault.com/questions/354615/allow-sftp-but-disallow-ssh

我到达那里试图弄清楚如何限制登录仅使用 SFTP 子系统,并且无法获取 ssh-shell - 即“5”。无论如何。

相关内容