Fail2ban 用于通过reject
命令阻止某些模式的用户。有时,特别是当用户在一个有很多用户的 NAT 后面时,他们会无意中被阻止。用户然后写一封电子邮件,然后我要求他的 IP 地址解除阻止(通常电子邮件被转发给我,所以我没有带有他的 IP 地址的邮件标题)。
为了使这一步更容易,我想将他重定向到一个特殊的动态网页,该网页显示其 IP 地址和联系电子邮件。这里有一个例子:
我想要一个类似的网页。一个简单的解决方案是 php,但这需要安装 php 和一些网络服务器配置。所以最简单的解决方案是一个小型网络服务器,它只提供一个小文本和一个 IP 地址。
我考虑过使用 python,因为已经安装了 Python。我发现这篇文章https://www.anycodings.com/1questions/2464569/how-do-i-get-the-client-ip-address-on-a-python-server但打印了 IP 地址仅在标准输出上并提供文件。
据我所知,要像使用 php 一样简单地使用 python,它需要 Flask 或 Django。然而,对于这个简单的用例来说,这些都是很大的框架,而且尺寸很大。它们也可能意味着一些安全问题。此信息页面也应通过设计确保安全,因此与reject
方法相比不会产生任何可能的安全问题。我知道 DOS 更有可能是因为传输的数据比 using 多reject
,但是这个页面的大小非常小,所以这没关系。
那么这个任务的简单解决方案是什么?Python?如果是这样,您能否提示我可以搜索一些关键字来完成此任务?还有其他解决方案吗?也许这些比 python 的想法更合适。
在这里找到解决方案https://pythonbasics.org/webserver/
所以基本上你只需要添加一行
self.wfile.write(bytes("<p>IP-Address: " + self.client_address[0] + "</p>", "utf-8"))
client_address 字段记录在这里https://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.client_address所以显示访问者IP地址的完整代码是: