我是一所大学的 Unix 管理员。我有两个网络服务器。其中一份是针对教师的,另一份是针对官方大学网络团队的。官方网络服务器代理对教师网页的请求,因此即使它们是两台独立的服务器,从教师和浏览器的角度来看,它看起来就像一台服务器。
为了避免教师的一些混乱,我将官方服务器上的端口 22(使用 socat)转发到教师服务器,并让官方服务器上的 sshd 监听不同的端口。这样,教师就可以通过 ssh 访问 mycollege.edu,即使这是官方服务器的 DNS 名称。这意味着网络团队更容易感到困惑,但这比数百名困惑的教员要好得多。
我使用 Fail2Ban 将暴力 ssh 登录保持在更易于管理的数量。这对于这两个 Web 服务器不起作用,因为到教职人员服务器的每个 ssh 连接都来自官方服务器,而且我显然不想阻止来自官方服务器的连接。
我想要做的是找到一种方法来跟踪服务器上的失败登录,这样我就可以让官方服务器阻止源 IP。问题是,官方服务器知道源IP,但不知道哪些登录失败,而教职服务器知道哪些登录失败,但不知道源IP。
我应该能够通过跟踪官方服务器和教员服务器之间连接上的源端口来做到这一点。官方知道原始连接的源IP以及后续连接教员服务器的源端口。教员服务器知道来自官方服务器的源端口并判断登录失败。
基本上,我会在官方(面向外部)服务器上保留外部源 IP 和内部源端口的日志,并在教员(内部)服务器上保留内部源端口和登录失败的日志。然后,我可以将日志条目从教师服务器发送到官方服务器,官方服务器可以对其进行分析,并适当地使用防火墙。
所以!这是我的问题:
- 这是一个疯狂的想法,但有一个更简单的解决方案吗?
- 如果这不是疯狂的,那么收集内部源端口信息的最佳方法是什么? Socat(在外部官方主机上)可以记录一些内容,但似乎调用源端口的内容与我在内部/教师主机上观看的连接中的任何内容(使用 tcpdump)不匹配。