多数网站被黑,不是因为黑客多厉害,而是因为门没关。下面六个入口,是我在排查中见到最多的。
入口一:默认后台路径
/admin、/wp-admin、/dede 这些路径,扫描器一秒就能试出来。
加固:改成自定义路径,或者加一层访问限制(IP 白名单、HTTP 认证)。
入口二:弱密码
admin/123456、admin/admin888,这类组合在撞库字典里排最前面。
加固:密码至少 12 位,含大小写、数字、符号;开启二次验证;限制登录尝试次数(5 次锁 15 分钟)。
入口三:上传功能
上传头像、上传附件、上传图片,如果没做类型校验,就能传 PHP 文件上去执行。
加固:
- 白名单校验扩展名(只允许 jpg/png/webp/pdf)。
- 校验 MIME 类型,不只看扩展名。
- 上传目录禁止执行 PHP。
- 上传后重命名文件,不用用户提供的文件名。
location ~* ^/uploads/.*\.(php|php5|phtml|jsp)$ { deny all; }
入口四:插件与主题漏洞
WordPress 被黑,绝大多数是通过过时的插件。插件作者停止维护后,漏洞没人修。
加固:
- 只装必要的插件,越少越好。
- 卸载不用的插件(停用不等于删除)。
- 关注漏洞公告,及时更新。
- 不用破解版,破解版常带后门。
入口五:数据库暴露
3306 端口对公网开放,或者 phpMyAdmin 用默认路径且弱密码。
加固:数据库只允许 localhost;远程管理走 SSH 隧道;phpMyAdmin 改路径或直接不装。
入口六:备份文件
把 backup.sql、www.zip 放在网站根目录,扫描器能直接下载。数据库里有用户信息,泄露就是大事。
加固:备份文件放在 web 目录之外;或者用对象存储的私有读;定期清理旧备份。
日常防护的五个动作
| 动作 | 频率 |
|---|---|
| 更新核心与插件 | 每月 |
| 检查异常文件 | 每周 |
| 查看登录日志 | 每周 |
| 备份并验证 | 每天 |
| 扫描木马 | 每月 |
怎么发现已经被入侵
五个信号:
- 网站上出现不认识的链接或弹窗。
- 搜索结果里的标题被改(变成博彩、医疗)。
- 服务器有异常外连。
- 出现陌生的管理员账号。
- 文件修改时间异常(大量文件在同一时间被改)。
一个被忽略的入口:备份文件与编辑器
除了后台和插件,还有两个地方经常被忘记:网站根目录下的备份压缩包,以及后台自带的文件编辑器。前者能被直接下载,后者一旦后台被登录就等于拿到了服务器 Shell。
处理方式很直接:备份文件不放在 web 目录;后台的文件编辑功能直接关掉,改代码走 FTP 或 Git。
被入侵后的第一小时
不要先删文件。先改所有密码、关掉对外端口、保存一份完整快照,再去查日志找入口。顺序反了,证据没了,同样的问题一周后会再来一次。
先做这三件,比装插件有用
改掉默认后台路径,强密码加二次验证,限制登录 IP 或时间段。三件事做完,绝大多数暴力破解就进不来。然后再删掉不用的账号、关闭不必要的端口、把备份放到独立位置。
不要装一堆安全插件却从不看日志。真正出事时,能救你的是最近一份可恢复的备份,以及知道谁在什么时候改了什么。
登录日志至少保留 90 天,记录 IP、账号、登录结果。发现异常登录时,先改密码、踢下线,再查是否被新建了管理员账号。很多后门不是漏洞,而是一个没人注意的旧账号。后台的文件管理器和数据库入口,平时不用就关掉。
后台文件管理器和数据库入口,平时不用就关掉;少一个入口,少一分风险。
常见问题
装了安全插件就够了吗
不够。插件能挡一部分自动化攻击,但挡不住弱密码和逻辑漏洞。基础加固仍然要做。
被黑了要不要重装
如果后门清不干净,重装是最彻底的。重装前先备份数据和日志。
小网站会被盯上吗
会。扫描是全网的、自动化的,不挑目标大小。小站防护弱,反而更容易被选中做跳转站。
被入侵后的处理流程,见服务器被攻击后的应急处理。