大家好,我是飞小优,当大家收到这个主机安全通知后估计很快就傻眼了吧,我当初也一样,通过查询文件也没能找到,因此跟大家介绍下具体情况及解决方案。
可能原因
- 文件上传漏洞:
- 攻击者利用网站的文件上传功能,将恶意文件上传到服务器。
- 未修补的漏洞:
- 使用了含有已知漏洞的应用程序或插件,攻击者通过这些漏洞进行攻击。
- 弱密码:
- 管理员账号或其他关键账号使用了弱密码,导致被暴力破解。
- SQL注入攻击:
- 攻击者通过输入恶意SQL代码,获取服务器的访问权限。
实际中php恶意临时文件是怎么生成的
对任意一个PHP文件发送一个上传的数据包时,不管这个PHP服务后端是否有处理$_FILES
的逻辑,PHP都会将用户上传的数据先保存到一个临时文件中,这个文件一般位于系统临时目录,文件名是php开头,后面跟6个随机字符;在整个PHP文件执行完毕后,这些上传的临时文件就会被清理掉。
- 该文件默认存储在 /tmp 目录中『可通过 php.ini 的
upload_tmp_dir
指定存储位置』 - 文件名为
php[6个随机字符]
,例:phpXXXXXX
- 若本次请求正常结束,临时文件会被自动删除
- 若非正常结束,比如崩溃,临时文件可能会被永久保留
所以高并发的恶意post请求能构造出异常的请求,让服务端生成大量php临时文件甚至出现错误,让php崩溃最终不能删除临时文件,就能产生永久php临时文件。那么腾讯云检测到这些临时恶意文件(即便是无法被利用)就会发出告警。
解决办法
- 删除恶意文件:
- 立即删除
/tmp/phpXXX
文件,检查是否有其他可疑文件。
- 立即删除
- 更新和修补:
- 确保所有软件和插件都是最新版本,安装所有安全补丁。
- 强化密码:
- 检查并更新所有关键账户的密码,使用强密码并启用双因素认证。
- 检查和修复漏洞:
- 使用工具扫描服务器上的安全漏洞,并及时修复。
- 加强文件上传安全性:
- 限制文件上传类型,只允许上传特定格式的文件(如图片)。
- 在上传文件之前进行严格的服务器端验证和过滤。
- 监控服务器:
- 实时监控服务器的流量和行为,及时发现并应对异常活动。
- 配置入侵检测系统(IDS)或入侵防御系统(IPS)。
- 备份和恢复计划:
- 定期备份重要数据,确保在遭遇攻击后可以迅速恢复。
具体步骤示例
删除恶意文件
rm /tmp/phpXXX
更新系统
sudo apt update && sudo apt upgrade -y
检查并修复文件上传漏洞
- 验证文件类型:使用MIME类型或文件头验证上传文件的真实性。
- 限制文件权限:将上传目录权限设置为不可执行。
// Example of PHP code to check file MIME type $finfo = finfo_open(FILEINFO_MIME_TYPE); $mimeType = finfo_file($finfo, $_FILES['upload']['tmp_name']); if ($mimeType !== 'image/jpeg' && $mimeType !== 'image/png') { // Reject the file } finfo_close($finfo);
通过上述方法,你可以更好地保护你的服务器,避免恶意文件的上传和执行。定期检查和更新系统,强化安全措施,是维护服务器安全的重要手段。
当然,最后为了安全起见,也一并问了腾讯云空间商,以下是具体回复:
发送过来的告警其实是已经将/tmp/下的文件删除了的。
最后我依旧排查了下网站文件及站点流量情况,并未看到异常,因此当发生这个告警时一定要多方面进行排查,若没有问题那就不用担心,可以忽略;若是有异常行为,那先备份然后在重装处理!