我们有这个 EC2 实例:T2.medium,运行 apache,有 4 个虚拟主机(4 个站点)。有时,CPU 会突然达到很高的水平,可能是受到攻击。
我发现我们的一些 wordpress 文件已被修改。
我如何检查谁在这些文件中写入了内容?我如何检查 CPU 日志以查看哪些进程影响了它?我可以使用任何 CloudWatch 指标吗?
我们一直在对服务器进行一些强化:更新、运行 AWS Inspector、lynis、修改 ssh 配置文件。
有什么方法可以查看是谁以及他们如何进入并修改了这些 wordpress 文件?
您还推荐哪些其他强化措施?
答案1
这里有几个问题。
谁对文件进行了写入
操作系统不会记录这些信息,但是有一些线索:
- 修改日期
- 文件权限
使用文件的修改日期来缩小 Apache 访问日志的搜索范围。至少检查一下POST
该时间段内的任何请求和登录。例如,这将显示所有登录尝试:
zgrep 'POST /wp-login.php' /var/log/apache2/*access*
然后,您可以根据文件修改时间的时间范围过滤输出。
如果已修改的文件只有某些系统用户可以写入,那么您可以合理地确定它们是由这些系统用户修改的。
哪些进程占用了 CPU
默认情况下不记录此信息。如果尝试“实时”监控服务器(例如使用 top)不切实际,则可以使用各种日志记录工具。这是一个 serverfault 问题为此目的,推荐使用各种工具。
确定您是否遭到黑客攻击
这是一个更大的话题,但既然您提到了对 WordPress 文件的修改,那么我要从确定这些修改是否是恶意的开始。运行 WordPress 恶意软件扫描程序,和/或查找恶意模式,例如eval(base64_decode(
、php web shell 等。如果您不确定,请坚持不懈、彻底地进行,如果需要,请发布更多问题。
确定攻击者如何获得访问权限
如果您确信网站已被黑客入侵,您可以尝试确定攻击者如何获得访问权限。最有可能的两种方式是通过登录管理员用户帐户或通过漏洞。在大多数情况下,很难高度确定。但如果您一直在运行具有已知漏洞的软件,尤其是具有公开漏洞并允许远程代码执行的软件,那么这种情况很有可能发生。如果 WordPress 管理员用户的凭据较弱,或者他们的凭据被泄露,那么这是非常有可能的。
进一步强化
如果您认为服务器已被入侵,那么您应该参考关于这个问题的经典答案。
答案2
这不是一个完整的答案,而是对 sceox 的答案的补充。
你应该看看强化WordPress, 和Wordpress 文件权限。
我已经设置如下:
- 一个用户/组拥有该文件
- PHP 属于一个可以读取 Wordpress 文件(包括插件/主题等)但不能写入的组。它可以写入上传文件夹,以便使用 Wordpress GUI 上传图像。这使得互联网上的任何东西都很难破坏 Wordpress 文件
- 我有一个使用Wordpress 命令行界面在凌晨 2 点更新 Wordpress 和插件。
- 任何新插件都必须使用 Wordpress CLI 安装。虽然不太方便,但更安全。
这是我使用的脚本,它在 cron 作业上运行
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
echo
echo Wordpress Update and Permissions Script Starting
echo "$(date) Wordpress update and backup started" >> /var/log/me/my-wordpress-upgrades 2>&1
# Function to upgrade wordpress
function upgrade_wordpress() {
# set up folders in the formats needed
dir=$1
uploads=$1/wp-content/uploads
echo Upgrading Wordpress core, plugins, themes in ${dir}
sudo -H -u www-user bash -c "wp core update --path=$dir"
sudo -H -u www-user bash -c "wp plugin update --all --path=$dir"
sudo -H -u www-user bash -c "wp theme update --all --path=$dir"
echo Setting wordpress permissions to 755 files and 644 folders
find ${dir} -type d -exec chmod 755 {} \;
find ${dir} -type f -exec chmod 644 {} \;
chmod 440 ${dir}/wp-config.php
echo Making uploads folder ${uploads} writable by the web server
chown -R www-data:www-data ${uploads}
echo Wordpress upgrade for $1 complete
echo
echo
}
echo Setting /var/www permissions to www-user:www-data
chown -R www-user:www-data /var/www/
# Run Wordpress update for each wordpress install
upgrade_wordpress /var/www/blog1
upgrade_wordpress /var/www/blog2