Redis数据库漏洞,主机开了6379端口考虑此原因
1、检查/root/.ssh/authorized_keys,是否有可疑参数。
2、使用Redisclient.exe连接,若成功,查看是否建立可疑数据。
Redis安全漏洞影响:
1、 Redis因配置不当可以未授权访问,很容易被攻击者恶意利用。如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录、控制服务器,引发重要数据泄露或丢失,严重威胁用户业务和数据安全,风险极高,业界将此漏洞定位为高危漏洞。
2、 当前业界已暴出多起因Redis漏洞导致主机被入侵、业务中断、数据丢失的安全事件,请用户务必警惕该漏洞的严重危害,防止造成无法挽回的损失。
2 安全加固措施:
Redis安全加固主要从网络访问权限、账户执行权限两个方面入手:
2.1 网络访问权限
2.1.1 设置防火墙
通过防火墙设置,充许业务ip访问,限制不必要ip访问,方法参考如下:
#例如只允许192.168.2.*这一段C类地址访问,其他IP地址禁止访问:
iptables -A INPUT -s 192.168.2.0/24,127.0.0.0/16 -p tcp --dport 6379 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP
2.1.2修改redis.conf配置加固
如果用户仅仅是本地通讯,无需其他IP访问,则可以通过绑定127.0.0.1,确保redis本地监听,从而避免业务暴露在互联网上,方法如下:
修改/etc/redis/redis.conf 中配置,并重启redis使配置生效:
2.1.3 重命名关键命令进行加固
由于redis没有做基本的权限分离,没有管理账号、普通账户之分,所以登录之后无操作权限限制,因此需要将一些危险的操作隐藏起来,涉及的命令包括:
FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME, DEBUG, EVAL
设置方法如下,编辑/etc/redis/redis.conf文件:
上述配置将config,flushdb,flushall设置为了空,即禁用该命令,保存之后,执行/etc/init.d/redis-server restart 重启生效
2.2 账号执行权限
2.2.1 低权限账户
设置单独的redis账户运行redis,redis crackit漏洞就利用root用户的特性来重置authorized_keys从而达到控制系统主机的目的,使用普通帐号运行redis可以降低被利用的风险,如下:
创建一个redis账户,然后通过该账户启动redis,命令如下:
su - redis -c " /redis/bin/redis-server /redis/etc/redis.conf"
使用进程查看ps aux|grep redis-server可见进程以redis运行
redis 3384 0.8 0.1 137440 4168 ? Ssl 17:43 0:00 /redis/bin/redis-server 192.168.196.133:6379
2.2.2 认证
redis 默认没有开启密码认证,风险极高。手动开启认证方法:
1、打开/etc/redis/redis.conf配置文件,加入语句:requirepass Z1e4tNzOgk# 将认证密码设置为了Z1e4tNzOgk#(此密码为示例,请自行设置其它密码并妥善保管,务必注意密码复杂度不要使用含有键盘特征的密码)
2、保存redis.conf,重启redis(/etc/init.d/redis-server restart)
3 常见木马查杀方法:
一、异常进程的判断
1、 使用top命令查看当前系统进程运行情况,检查是否有异常进程,如下图占用CPU较高的进程名为一些随机字母组成(木马程序)
2、 检查其他一些名字的进程如:.sshd、getty等等,如与业务及系统无关但占用较多系统资源的进程均需留意
指令:ps aux|grep “bsd-port/getty”
Ps aux|fgrep “.sshd”
3、 用netstat -anp命令查看异常网络连接进程,以下可以看到以下标红的进程异常,因该进程使用的进程名为uptime,另外连接的远端服务器端口为2444为非常用端口
2016-01-25 15:26:40||csa-dev-provision-001||192.168.0.5||netstat -anp||tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1444/sshd
2016-01-25 15:26:40||csa-dev-provision-001||192.168.0.5||netstat -anp||tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1440/cupsd
2016-01-25 15:26:40||csa-dev-provision-001||192.168.0.5||netstat -anp||tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2042/master
2016-01-25 15:26:40||csa-dev-provision-001||192.168.0.5||netstat -anp||tcp 18888 0 192.168.0.5:60482 183.60.202.2:2444 ESTABLISHED 1459/uptime
4、 在判断到程序进程异常时,使用lsof –p 进程号方式可以看到该进程启动的程序路径,可以进一步确认否为木马,木马程序一般会存放在/root、 /tmp等路径下,
二、 木马文件的查杀清除
1、 这些进程如果通过kill -9 pid命令杀掉,不久又会出现类似的进程。这可能是因为在/etc/cron.hourly中有自启动项(gcc4.sh、kill.sh),且木马进程会相互守护,一旦其中一个木马被杀掉后,其他木马程序会很快重启一个新的木马进程。此时应该通过kill –STOP pid将木马进程暂时停止,等将后续对应的木马文件全部清除后,再将进程彻底杀掉(kill -9)
2、 通过lsof –p pid查看木马进程对应的文件所在目录,找到所有可疑的木马文件并删除。常见被感染文件路径(不排除其他路径):/root/、/tmp、 /bin、/usr/sbin、/sbin、/etc/init.d、/var/tmp 木马被写入启动项:/etc/init.d/
3、 在/bin下的netstate、ps和/usr/sbin下的lsof等系统命令被替换成木马文件(原始系统文件在/usr/bin/dpkgd下,删除木马后自行替换回来即可):
执行cp /usr/bin/dpkgd/ps /bin/ps; cp /usr/bin/dpkgd/netstat /bin/netstat cp /usr/bin/dpkgd/lsof /usr/sbin/lsof
4、 通过kill -9 pid命令杀掉所有可疑木马进程。
5、 清除免密登录文件:/root/.ssh/authorized_keys
6、 检查是否存在未知的新建系统账号,如‘Redistoor’,有则删除并修改常用账号密码