我正在努力强化Apache 2.4Web 服务器运行 2 个 wordpress 站点,具有单独的 vhost 设置。部署在 Windows 2012 r2 上。几周前我被黑客入侵,服务器完全瘫痪。在新服务器上,他们仍在尝试通过发布请求注入/代码执行来入侵站点。我尝试阻止POST
提交时未由服务器发送的所有请求时遇到了麻烦。
我尝试过的事情包括
<Location>
、、<Directory>
标签<Limit>
及其属性,如、、GET
尝试使用各种语句进行各种组合,即、、、和模式。PUT
POST PUT DELETE
Require
local
ip
host
order allow, deny
Allow all from
<Directory "/">
、、<Location >
标签包括、和组合<LimitExcept >
等属性。GET
POST
各种
<if >
声明AllowMethod
声明将目录列入白名单
.htacess
在不同的文件上下文中尝试。例如httpd.conf
,,Vhost.conf
。.htaccess
我发现在 Apache 文档中引用的任何文件都与指令上下文有关。甚至把它放在不应该工作的地方,真是可笑。我在文档或 stack overflow 上读到的似乎都不起作用。
所有 auth 模块都已加载,如 mod_auth、mod_host 等。假设模块都没有问题。
我想要实现的是deny
或<Limit POST>
请求。严格允许它们以动态方式<Directory "/.*"> or
响应,只有当服务器使用服务器 IP 提交请求时才响应。因此,请求的 IP:port 应该是“远程地址”,因为 apache 本地服务通过 PHP 发送请求方法。我相信这是正确的逻辑。
下班前我尝试的最后一件事是下面的代码,尝试动态`<Directory“/.*”>标签,我不想在 Wordpress 中挖掘每个表单并为每个目录创建一个标签。
谢谢您的帮助,请在您的答案中附上一个代码示例。
<Directory "/.*">
<if "%{REQUEST_METHOD} == 'POST'">
<Limit POST PUT DELETE>
Require req, http %{REMOTE_ADDR} == 'xx.xx.xx.xx:xx'
</Limit>
</if>
</Directory>
现在我尝试了
<Directory "/">
<if "($_SERVER['%{REMOTE_ADDR}'] == 'xx.xx.xx.xx'">
<Limit POST>
allow from all
</Limit>
</if>
</Directory>
<Directory "/">
<if "($_SERVER['REMOTE_ADDR'] == 'xx.xx.xx.xx'">
<Limit POST>
allow from all
</Limit>
</if>
</Directory>
没有插件,没有 nginx、E xpress 或 IIS 建议。只有与此配置相关的解决方案。
答案1
POST 由用户的浏览器完成。如果 Apache 的访问日志显示请求来自同一系统,那么该系统上可能首先运行的是其他软件,例如 Varnish 或 HaProxy 等 Web 缓存。检查标头 X-Forwarded-For 是否包含用户的 IP 地址。如果您想保护 Wordpress 免受黑客攻击(这并不容易),您需要对 Wordpress 本身进行改进。更改登录页面的名称,为管理员设置一个无法猜测或暴力破解的密码,最后但并非最不重要的是,让 Wordpress 保持最新状态,以便修补已知的漏洞。