Linux

记一次Linux服务器被入侵后排查过程

背景

操作系统:Centos7

运行程序:Redis

服务器在云上

今早突然接到电话,检查一台被黑的服务器。

打开我们的工单系统,用户描述如下:

主机被比特币勒索病毒攻击,导致服务不正常,请重新安装服务器,并给与防范该问题的措施。

配图:

-.- 英语不好,别喷我。

大致意思如下,你的文件及数据已被我备份到我的安全服务器上,如果你想要恢复,请付我0.2的bit币,我的邮箱如下。。。。。

 

1.排查问题

通过云后台登录服务器。

先看看用户起了那些服务

netstat    -antp

很明显,启动了一个叫bashd的服务...

不放心的我,登录一台正常的服务器查找这个bashd...  没有这个服务。

那就有待怀疑了....

 

查看该文件路径

ps -aux | grep bashd

查到该文件位于/usr/sbin下

kill -9 bashd
netstat   -antp

进程消失了...

 

根据以往的经验,不会这么简单,肯定有启动脚本..

查找linux启动路径。

cat    /etc/rc.d/rc.local

果然发现问题! 有2个后台运行的启动脚本,是这个bashd进程的守护脚本

进程找到了...

该找入侵方式了...

history

先看历史命令~    找找黑客执行了那些命令

 

很失望...什么都没有..应该做了处理。

既然是入侵,那肯定登录了服务器。

就从用户查起

cat  /etc/passwd

仔细查看,redis用户权限不对。

立即电话用户确认,用户表示没做过相关操作。

答案出来了...   redis的问题...

查看云路由端口,开放了6379...

百度查找redis相关....

发现redis早期曝出了未授权访问漏洞.....

网上的资料竟然和自己遇到的情况一样....  无疑  该漏洞导致服务器被入侵。

当然,也找到了修复手段,如下:

 

 

2.修复方案:

1.禁止一些高危命令(重启redis才能生效)

修改 redis.conf 文件,禁用远程修改 DB 文件地址

rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""

或者通过修改redis.conf文件,改变这些高危命令的名称

rename-command FLUSHALL "name1"
rename-command CONFIG "name2"
rename-command EVAL "name3"

2.以低权限运行 Redis 服务(重启redis才能生效)

为 Redis 服务创建单独的用户和家目录,并且配置禁止登陆

groupadd -r redis && useradd -r -g redis redis

3.为 Redis 添加密码验证(重启redis才能生效)

修改 redis.conf 文件,添加

requirepass mypassword

(注意redis不要用-a参数,明文输入密码,连接后使用auth认证)

4.禁止外网访问 Redis(重启redis才能生效)

修改 redis.conf 文件,添加或修改,使得 Redis 服务只在当前主机可用

bind 127.0.0.1

在redis3.2之后,redis增加了protected-mode,在这个模式下,非绑定IP或者没有配置密码访问时都会报错

5.修改默认端口

修改配置文件redis.conf文件

Port 6379

默认端口是6379,可以改变成其他端口(不要冲突就好)

6.保证 authorized_keys 文件的安全

为了保证安全,您应该阻止其他用户添加新的公钥。

将 authorized_keys 的权限设置为对拥有者只读,其他用户没有任何权限:

chmod 400 ~/.ssh/authorized_keys

为保证 authorized_keys 的权限不会被改掉,您还需要设置该文件的 immutable 位权限:

chattr +i ~/.ssh/authorized_keys

然而,用户还可以重命名 ~/.ssh,然后新建新的 ~/.ssh 目录和 authorized_keys 文件。要避免这种情况,需要设置 ~./ssh 的 immutable 权限:

chattr +i ~/.ssh

7.设置防火墙策略

如果正常业务中Redis服务需要被其他服务器来访问,可以设置iptables策略仅允许指定的IP来访问Redis服务。

 

(2)

本文由 樱花博客 作者:樱花 发表,转载请注明来源!

热评文章

评论:

8 条评论,访客:6 条,博主:2 条
  1. visual learners and montessori education
    visual learners and montessori education发布于: 

    其原理也比较简单,通过ps命令查看服务器异常进程,然后通过lsof命令定位进程访问的文件,找到异常文件删除之,最后为了确保万无一失,可以通过find命令找出最近时间内服务器上产生的文件进一步排除。每一个Linux的文件或目录,都有3组属性,分别定义文件或目录的所有者,用户组和其他人的使用权限(只读、可写、可执行、允许SUID、允许SGID等)。特别注意,权限为SUID和SGID的可执行文件,在程序运行过程中,会给进程赋予所有者的权限,如果被黑客发现并利用就会给系统造成危害。

发表评论