有一台服务器莫名其妙的无法正常免密登录了,密码登录也被禁止了:只好去机房直接接上显示器检查。结果发现免密相关文件authorized_keys被修改的一塌糊涂:不是像其他木马或者病毒那样只是增加自己的免密登录信息,而是全部写成乱码形式:文件开头可以看到"REDIS0007redis-ver3.2.8"的字样。 一开始感觉是木马故意混淆视线嫁祸redis(事后才发现是redis没有设置登录密码导致被入侵)。查了半天没有发现可疑进程,于是利用auditctl监控authorized_keys,发现是redis-server进程去修改该文件。第一反应是redis-server是不是被木马替换了。但是检查发现redis-server的binary 文件是从源码编译的,源码是从官网下载的。
后来查询资料:
https://zhuanlan.zhihu.com/p/25015624
发现应该是未设置密码保护导致redis服务被恶意入侵。
亲自试验下发现确实可行。
这里需要说明下:
从源码编译后直接以root用户运行redis-server,会导致redis-server的进程是root权限,于是通过6379端口登录redis后可以干很多事儿。
但是如果是yum 安装的话,使用systemctl start redis仅仅是以redis用户运行,即使黑客进入也需要进一步提权才能干坏事。
但是仅仅设置密码,还是有被暴力破解的可能:所以还是加入iptables定义允许访问redis服务的ip范围比较好:
iptables -I INPUT -p TCP --dport 6379 -j REJECT
iptables -I INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 6379 -j ACCEPT
iptables -I INPUT -s 192.168.6.178/32 -p tcp -m tcp --dport 6379 -j ACCEPT
记得安排好插入顺序。避免reject不生效:这里使用Insert,所以REJECT放在第一条。如果是Append,则REJECT必须放在最后一条。