![如何仅允许通过活动的、已建立的 ssh 连接访问 nginx?](https://linux22.com/image/708420/%E5%A6%82%E4%BD%95%E4%BB%85%E5%85%81%E8%AE%B8%E9%80%9A%E8%BF%87%E6%B4%BB%E5%8A%A8%E7%9A%84%E3%80%81%E5%B7%B2%E5%BB%BA%E7%AB%8B%E7%9A%84%20ssh%20%E8%BF%9E%E6%8E%A5%E8%AE%BF%E9%97%AE%20nginx%EF%BC%9F.png)
我一直在尝试,但没能找到办法做到这一点。我想设置一个基于 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,因此,希望对其进行高度保护。