由于各种原因,我想在一段时间的空闲时间后关闭我的服务器。我在 Debian 4.9.88 上运行 Tomcat 8.5.29 和 Apache2(不确定版本)。我写了一个脚本来查看 Tomcat 上次访问的时间。我的服务器上只有一个应用程序,它位于
http://hostname/source/
。
我的问题是存在许多网络服务器漏洞,并且我不断收到以下请求:
GET / HTTP/1.1
POST /GponForm/diag_Form?images/ HTTP/1.1
GET /jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.system%3Aservice%3DMainDeployer HTTP/1.1
POST /user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1
我想做的是阻止任何不以
/source
开头的东西甚至到达 Tomcat。我认为重写或 Apache 中的某些东西可以做到这一点,但我不确定请求首先是如何到达 Tomcat 的。有什么想法吗?
请求到达 Tomcat 有两种可能的方式:
探测器直接向 Tomcat 端口(通常是端口 8080)发送请求。您可以通过将 Tomcat 的侦听地址限制为环回地址来解决此问题,方法是将属性
address="127.0.0.1"
添加到 conf/server.xml
中相应的 Connector 元素。或者您可以在防火墙中阻止端口 8080。请求通过 Apache 中的反向代理配置从 Apache 转发到 Tomcat。这意味着 Apache 配置文件之一中有如下一行:
ProxyPass / http://127.0.0.1:8080/
如果为两个参数添加显式路径前缀,则可以限制哪些请求传递到 Tomcat:
ProxyPass /source http://127.0.0.1:8080/source
这确保只有以“/source”开头的请求才会转发到 Tomcat。
一些 Apache 配置使用 AJP 协议而不是 HTTP 进行代理,但同样的推理也适用。