如何在 Docker 容器中使用 fail2ban 正确创建 ssh 堡垒

如何在 Docker 容器中使用 fail2ban 正确创建 ssh 堡垒

我已经在 Docker 论坛上提问但到目前为止还没有收到回复。我希望在这里能有更好的运气。

我正在 Docker 容器中制作 ssh 堡垒(使用 fail2ban 确保安全)。该容器除了作为 ssh 堡垒外没有其他用途,并将用于通过 sshfs 访问绑定卷。

目前,我怀疑我正在使用一种非常糟糕的方法。我的 Dockerfile:

  • 拉取最新的 debian stable-slim 镜像,
  • 通过 apt 安装 ssh 和 fail2ban,
  • 添加用户、sshd_config 和 fail2ban jails,
  • 然后指定一个包装器 bash 脚本,在该脚本中我使用 /app 中的自定义配置路径无条件启动 ssh 和 fail2ban

它可以工作,但有一些警告(没有 /var/log/auth.log 供 fail2ban 使用,因此那里有相当多的配置扭曲),但我觉得我做错了。

问题是,很难找到有关如何正确完成我正在尝试做的事情的信息。有无数的页面列出了如何通过 ssh 进入容器进行调试、备份等。还有一些有趣的页面关于为什么你不应该 ssh 进入容器。但我还没有找到“这是在 Docker 容器中使用 fail2ban 正确设置 ssh 堡垒的方法”。这真的存在吗?或者我这样做是对的吗?

谢谢!

答案1

注意:我知道这是一个老问题,但它出现在搜索引擎中。写下我的答案是为了帮助任何有同样问题的人。


它是每个容器拥有尽可能少的服务的最佳实践

这降低了升级容器以及出现任何问题时恢复的复杂性。

您应该有两个容器——一个SSH容器和一个Fail2Ban容器。

对于SSH容器,您将适当的日志文件映射到主机上的目录。根据您的需要配置容器。

容器Fail2Ban需要权限才能编辑IPTables主机上的防火墙。Fail2Ban容器还需要映射到相同的SSH日志文件(甚至:ro在映射中附加“只读”,因为它不需要写入日志文件)

相关内容