![如何隐藏你正在运行 Apache 的事实?](https://linux22.com/image/504022/%E5%A6%82%E4%BD%95%E9%9A%90%E8%97%8F%E4%BD%A0%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%20Apache%20%E7%9A%84%E4%BA%8B%E5%AE%9E%EF%BC%9F.png)
我怎样才能让它看起来好像我没有运行 Apache?我认为最好的方法是让它看起来好像是另一种类型的 httpd,例如 lighthttpd 或 iis。我知道通过使用 mod_security,您可以将服务器签名更改为任何内容:
SecServerSignature "Microsoft IIS"
是否有人知道掩盖正在使用的 HTTPD 的其他技巧?
答案1
你为什么要尝试这么做?
Apache httpd 暴露自身的方式有很多种,有明显的,也有不明显的。请把时间花在真正的安全上。版本标识符、库存页面、HTTP 标头和加载的模块只是 Apache httpd 暴露自身的方式中的几种。
运行 apache 并加载尽可能少的模块。将日志发送到另一台主机并进行实时日志分析。
设计您的系统,使得 Apache 的妥协不会导致直接访问您想要保护的内容。
答案2
有两种方法。最简单的方法是将其添加到您的 apache 配置文件中:
ServerSignature Off
ServerTokens Prod
另一个方法是更改 apache 源代码中的 /src/include/httpd.h 文件。更改:
#define SERVER_BASEVENDOR “Apache Group”
#define SERVER_BASEPRODUCT “Apache”
#define SERVER_BASEREVISION “”
到
define SERVER_BASEVENDOR: Microsoft
define SERVER_BASEPRODUCT: Microsoft-IIS
define SERVER_BASEREVISION: 5.0
然后重新编译apache。
可能还有其他解决方案,请在 Google 上尝试“Apache banner faking”。
答案3
可以从常用错误页面(404、500 等)的样式和内容判断 Apache 是否正在运行。请指定您自己的错误页面。
答案4
正如霍尔斯特所说,你真的应该质疑为什么你想隐藏你的主机。隐藏是一机制,但应该被认为是最薄弱的,因此只需要在更为强大的安全架构中占据一层。
我强烈建议您查看Apache 的 CIS 基准并实施任何可以在您的环境中使用的东西。除了 NIST,互联网安全中心基准也经常被用作标准配置的基础。这很好,因为 Nessus 的专业供稿包括用于与 CIS 基准进行比较的审计文件。此外,这让您走上了可以轻松审计的标准配置之路,并大大降低了尝试充分管理大量不同系统的风险。
回到最初的问题,CIS Apache Benchmark v2.2 建议对信息泄漏保护进行以下设置
ServerTokens Prod
ServerSignature Off