资讯详情
首页 / 营销学院 / 文章详情

一文搞懂为wordpress创建一个ftp完整流程:网站被黑挂马不知道怎么办

一文搞懂为wordpress创建一个ftp完整流程:网站被黑挂马不知道怎么办

一文搞懂为wordpress创建一个ftp完整流程:网站被黑挂马不知道怎么办

你网站被黑挂马了,找不出问题根源,连FTP都连不上,这事儿在WordPress圈里太常见了。很多甲方对接人根本不了解FTP的作用,更别说怎么创建一个FTP来管理WordPress站点了。这篇文章就来一文搞懂,怎么在WordPress里创建一个FTP,从零开始教你一步步操作,避免被黑、被挂马,从源头开始保护网站。

威胁场景:网站被黑,FTP权限混乱是主因

很多时候,网站被黑,其实就一个原因:FTP权限没设置好。攻击者通过暴力破解、漏洞利用等方式获取了FTP账号和密码,然后就能直接上传木马、篡改文件、修改数据库配置,甚至把整个网站变成黑产工具。

我遇到过太多客户,被黑后才发现FTP账号被泄露,甚至有些是建站公司默认配置了同一个FTP账户给多个客户使用。这种情况下,攻击者一旦入侵一个站点,就能顺藤摸瓜,把所有共享FTP的站点一锅端。

为什么FTP对WordPress这么重要?

FTP(文件传输协议)是管理网站文件的“钥匙”。在WordPress中,上传插件、主题、修改文件、备份网站、恢复数据库,都离不开FTP。如果你的FTP权限没设好,就相当于把网站的“后门”给攻击者开了。

漏洞原理:FTP配置不当导致权限滥用

FTP的权限设置是整个WordPress安全体系中最重要的一个环节,但很多人把它忽略。FTP权限设置不当,会导致以下几种风险:

  • 文件可被任意覆盖:攻击者通过FTP上传恶意文件,比如wp-config.php或恶意插件。
  • 数据库连接信息泄露:攻击者可修改配置文件,直接连接到数据库,进而删除、篡改甚至劫持网站数据。
  • 服务器资源被滥用:攻击者可通过FTP上传大量垃圾文件、恶意脚本,造成服务器资源耗尽或被用于DDoS攻击。

举个真实的漏洞案例

之前有一个客户,他使用的是默认的FTP账户“ftpuser”和“123456”,并且权限设置为“777”,也就是所有人都可以读写。结果被黑客利用这个FTP账户上传了一个名为index.php的恶意脚本,直接将整个网站变成垃圾广告站。直到他找我们排查,才发现是FTP权限设置的锅。

防护方案:为WordPress创建一个安全的FTP

在WordPress中,为站点创建一个FTP账户,是保障网站安全的第一步。以下是一套推荐的FTP创建方案,适用于Linux服务器环境(如阿里云ECS、腾讯云等),使用VSFTPD或ProFTPD等FTP服务。

步骤一:安装并配置FTP服务(以VSFTPD为例)

如果你使用的是阿里云服务器,推荐使用VSFTPD(Very Secure FTP Daemon),这是Linux系统中比较安全的FTP服务,支持多种权限配置。

安装VSFTPD

sudo apt update
sudo apt install vsftpd

配置VSFTPD

编辑配置文件 /etc/vsftpd.conf,添加以下配置:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
allow_writeable_chroot=YES

这段配置的关键点在于 chroot_local_user=YES,它限制用户只能访问自己的目录,不能跳出目录树访问其他文件,避免权限被滥用。

启动并设置开机自启

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

步骤二:创建FTP用户并设置权限

创建一个专用的FTP账户

sudo adduser wpftp

系统会提示你设置密码、全名等,记得设置一个强密码,例如 Wp@2024!

为FTP用户设置家目录(建议单独设置一个目录,比如 /var/www/ftp)

sudo mkdir /var/www/ftp
sudo chown wpftp:wpftp /var/www/ftp
sudo chmod 755 /var/www/ftp

修改VSFTPD配置,限制用户只能访问自己的目录

在 /etc/vsftpd.conf 中添加以下两行:

user_sub_token=$USER
local_root=/var/www/ftp/$USER

这样,每个用户只能访问自己在/var/www/ftp下的子目录,比如 /var/www/ftp/wpftp。

步骤三:为WordPress设置FTP连接

WordPress在安装插件、主题、升级核心时,需要FTP访问权限。你可以通过以下两种方式设置:

方式一:使用ftp字段在wp-config.php中设置

打开你的wp-config.php文件,添加以下代码:

define('FS_METHOD', 'ftpext');
define('FTP_HOST', 'your-ftp-server-ip');
define('FTP_USER', 'wpftp');
define('FTP_PASS', 'Wp@2024!');
define('FTP_SSL', true);

这种方法适用于大多数情况,但要注意,密码不应写在代码里,最好使用环境变量或加密方式存储。

方式二:使用ftp插件(如“FTP Credentials”)

如果你不想手动修改配置文件,可以使用插件来管理FTP账户,比如“FTP Credentials”插件,它会自动从wp-config.php中读取FTP信息,方便管理。

检测与修复:如何确认FTP设置是否安全

设置好FTP后,需要定期检查是否安全。以下是一些检测方法:

检查FTP用户权限

sudo ls -ld /var/www/ftp/wpftp

输出应为:

drwxr-xr-x 2 wpftp wpftp 4096 Jan 1 00:00 /var/www/ftp/wpftp
  • drwxr-xr-x 表示所有者(wpftp)有读写执行权限,其他用户只有读和执行权限。
  • 如果看到 777,立即修改为 755。

检查FTP登录日志

VSFTPD的日志默认在 /var/log/vsftpd.log,你可以用以下命令查看:

tail -f /var/log/vsftpd.log

观察是否有异常登录记录,比如非预期的时间、IP或用户。

使用fail2ban防止暴力破解

你可以安装fail2ban来防止FTP暴力破解:

sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

在/etc/fail2ban/jail.local中添加以下内容:

[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 3
bantime = 86400

然后重启fail2ban服务:

sudo systemctl restart fail2ban

这会自动屏蔽连续失败登录3次的IP,保护FTP账户安全。

安全加固清单:为WordPress FTP加“三把锁”

1. 账户强密码策略

  • 密码长度至少12位,包含大小写字母、数字、特殊符号。
  • 不要使用默认密码或弱口令。
  • 定期更换FTP密码,特别是遇到可疑登录行为时。

2. 限制FTP访问IP

在/etc/vsftpd.conf中添加以下内容,只允许指定IP访问FTP:

allow_writeable_chroot=YES
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.userlist

然后在/etc/vsftpd.userlist中添加允许的IP:

192.168.1.100
192.168.1.101

这个配置只允许指定IP的用户访问FTP,可以有效防止外部攻击。

3. 使用SFTP替代FTP

FTP协议本身是明文传输,容易被窃听。推荐使用SFTP(SSH File Transfer Protocol),它是基于SSH协议的,加密传输更安全。

你可以通过以下命令安装和启用OpenSSH的SFTP服务:

sudo apt install openssh-server

SFTP默认是开启的,只需确保/etc/ssh/sshd_config中包含:

Subsystem sftp /usr/lib/openssh/sftp-server

然后重启SSH服务:

sudo systemctl restart ssh

你也可以使用rsync+SSH的方式上传文件,更加安全。

结尾互动钩子

你更倾向模板建站还是定制开发?欢迎评论说出你的看法,也许你的经验能帮到正在犹豫的甲方!

还不确定哪种方案适合您?

留下需求,尧图科技资深顾问30分钟内为您出具免费诊断报告与定制建站方案

立即免费咨询
拨打电话📞 在线留言💬