如何仅允许通过活动的、已建立的 ssh 连接访问 nginx?

如何仅允许通过活动的、已建立的 ssh 连接访问 nginx?

我一直在尝试,但没能找到办法做到这一点。我想设置一个基于 Web 的服务器管理控制面板(类似于 webmin),但试图添加一种极难欺骗的安全措施,这种措施对那些有访问权限的人来说基本是透明的,但最终一无所获。我有一个听起来合适的想法,但找不到真正可行的解决方案。

我在 ssh 上设置了端口敲击,以及密钥认证。它几乎将攻击尝试次数降至零。我对现有的 ssh 安全措施相当满意,但事实证明,将同样的安全性引入 nginx 毫无用处。

是否可以设置类似于端口敲击的功能,以便只有主动登录 ssh 的用户才能在 http 上打开端口?我不能简单地使用 ESTABLISHED,因为我还想要求在 ssh 中进行身份验证。

理想的解决方案应该是这样的......

  • 没有 ssh 连接 -> DROP 尝试访问 nginx 端口
  • 主动 ssh 连接,未经身份验证 -> DROP 尝试访问 nginx 端口
  • 主动 ssh 连接,已验证 -> 接受 nginx 端口连接

我意识到终止会话将导致活动切换到 DROP,这是可以接受的。

我能想到的最接近的解决方案是通过 cron 扫描 ssh 日志并动态修改 iptables,但需要有更好的方法。如果没有其他方法,请接受想法,为我指明正确的方向。


您能否修改一下您的问题,介绍一下为什么需要这种级别的安全性?这似乎有点过头了。– Tim

我提到了 Webmin 的服务器管理。简而言之,php/py 脚本可以访问服务器内部,例如 iptables、/etc 修改、关机/重启、日志解析器和其他维护工具。访问服务器本身需要 sudo,因此,希望对其进行高度保护。

相关内容