caddy运行wordpress简单防黑

由于网上有大量的自动挂马程序会不停地无差别扫描攻击,对于WP小站,如果疏于管理,经常会被挂马,通过上传PHP运行webshell恶意程序,轻则导致程序错误网站打不开,重则SSH、数据库密码明文暴露,整个vps被黑成为肉鸡。

除了官方插件(完整功能多是收费的),这里有几个防黑的设置,对于个人博客务必及时打上。

  • 修改caddyfile设置,禁止外来php文件

yourdomain.com {
root * /var/www/wordpress

# 1. 禁用 uploads、blogs.dir 和 cache 目录下的 PHP 解析
@forbidden {
    path /wp-content/uploads/*.php
    path /wp-content/blogs.dir/*.php
    path /wp-content/cache/*.php
}
respond @forbidden 403

# 2. 正常配置 PHP-FPM 解析
php_fastcgi unix//run/php/php8.2-fpm.sock # 请根据你实际的 PHP-FPM 路径调整

# 3. 静态文件与 WordPress 伪静态
file_server

}

yourdomain.com {
    root * /var/www/wordpress

    # 阻止访问隐藏文件(如 .git, .env, .htaccess)
    @hiddenFiles path_regexp (^|/)\.
    respond @hiddenFiles 403

    # 阻止访问敏感根目录文件
    @sensitiveFiles {
        path /wp-config.php
        path /xmlrpc.php # 如不需要远程发布功能,强烈建议关掉 xmlrpc 防暴破
        path /readme.html
        path /license.txt
    }
    respond @sensitiveFiles 403

    # 禁止特定目录执行 PHP
    @forbidden {
        path /wp-content/uploads/*.php
        path /wp-includes/*.php
    }
    respond @forbidden 403

    php_fastcgi unix//run/php/php8.2-fpm.sock
    file_server
}
验证 Caddy 配置并重载
caddy validate --config /etc/caddy/Caddyfile
caddy reload --config /etc/caddy/Caddyfile


  • 查杀uploads里的木马PHP:
# 查看 uploads 目录下是否存在 PHP 文件
find /var/www/wordpress/wp-content/uploads/ -type f -name "*.php"

# 确认全是恶意后门后,直接批量删除
find /var/www/wordpress/wp-content/uploads/ -type f -name "*.php" -delete
  • 关闭后台代码编辑器 在 wp-config.php 中确保加上以下代码,关闭后台代码编辑器
define('DISALLOW_FILE_EDIT', true);
  • 禁止/tmp文件夹上传

全局可写权限:Linux 下的 /tmp 目录默认权限是 1777(所有用户都有写入权限),黑客不需要 Root 权限就能在这里创建文件。

隐藏性高:很多运维人员只检查 Web 目录(如 /var/www),容易忽略 /tmp 目录。

针对防范黑客的追加建议
由于你的站点刚遭遇过 Webshell 入侵,建议检查 PHP-FPM 是否开启了 open_basedir 限制。

如果开启了 open_basedir,可以限制 PHP 脚本只能在 WordPress 网站根目录下运行,禁止 PHP 读取或写入 /tmp 目录。这样即使黑客在 Web 端执行代码,也无法将后门写入 /tmp 或从 /tmp 加载文件。

在全局 php.ini 中设置
如果你这台服务器只运行这一个 WordPress 站点,可以直接修改全局 php.ini:

找到 php.ini 文件(通常在 /etc/php/8.x/fpm/php.ini)。

搜索并修改 open_basedir:

Ini, TOML
open_basedir = /var/www/wordpress:/tmp/

重启 PHP-FPM:

Bash
systemctl restart php8.2-fpm

删除完所有异常文件后,最好将外来的php文件代码复制给AI检查。通常这些代码是层层加密的,文件不会很大,10k左右,AI可以指出其运作机理和数据库内写入的异常数据,彻底清除干净。最后务必立即修改SSH密码、数据库密码以及WP后台管理密码,重启服务器。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理