redis被攻击,作为突破口,服务器惨遭毒手的事太常见了。

大多数云服务器被攻击,都是redis,mongodb等数据库被入侵。

因此修改端口,密码,以及注意bind运行地址,是必须。

思考是否要暴露redis到公网。

1.设置密码、端口

配置

[root@db-51 ~]#cat /opt/redis_6379/conf/redis_6379.conf
daemonize yes
bind 127.0.0.1 10.0.0.51
port 26379
pidfile /opt/redis_6379/pid/redis_6379.pid
logfile /opt/redis_6379/logs/redis_6379.log dir /www.yuchaoit.cn/redis/data/ save 900 1
save 300 10
save 60 10000
dbfilename www.yuchaoit.cn_redis_dump.rdb appendonly yes appendfilename "www.yuchaoit.cn_appendonly.aof" dir /www.yuchaoit.cn/redis/data/
appendfsync everysec
appendonly yes
appendfilename "www.yuchaoit.cn_appendonly.aof"
aof-use-rdb-preamble yes
requirepass chaoge666

启动

[root@db-51 ~]#redis-server /opt/redis_6379/conf/redis_6379.conf
[root@db-51 ~]#netstat -tunlp|grep redis
tcp 0 0 10.0.0.51:26379 0.0.0.0:* LISTEN 2857/redis-server 1
tcp 0 0 127.0.0.1:26379 0.0.0.0:* LISTEN 2857/redis-server 1
[root@db-51 ~]#

密码验证

玩法1

[root@db-51 ~]#redis-cli -h 127.0.0.1 -p 26379
127.0.0.1:26379> ping
(error) NOAUTH Authentication required.
127.0.0.1:26379> auth chaoge666
OK
127.0.0.1:26379>
127.0.0.1:26379> ping
PONG
127.0.0.1:26379>

玩法2

[root@db-51 ~]#redis-cli -h 127.0.0.1 -p 26379 -a 'chaoge666' dbsize
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
(integer) 3 [root@db-51 ~]#redis-cli -h 10.0.0.51 -p 26379 -a 'chaoge666' dbsize
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
(integer) 3
[root@db-51 ~]#

2.redis远程连接(python)

1.windows安装python3
C:\Users\Sylar>where python
C:\Users\Sylar\AppData\Local\Programs\Python\Python39\python.exe
C:\Users\Sylar\AppData\Local\Microsoft\WindowsApps\python.exe C:\Users\Sylar>where pip
C:\Users\Sylar\AppData\Local\Programs\Python\Python39\Scripts\pip.exe 2.测试代码 # 安装python操作redis的模块
pip install redis # 测试代码 cat test_redis.py
import redis
conn=redis.StricRedis(host='10.0.0.51',port=26379,password='chaoge666',db=0)
conn.set('name','www.yuchaoit.cn')
print(conn.get('name')) # 执行结果 $ python test_redis.py
b'www.yuchaoit.cn' # 至此确认远程连接,读写数据成功。
[root@db-51 /www.yuchaoit.cn/redis/data]#redis-cli -h 127.0.0.1 -p 26379 -a 'chaoge666' get name
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
"www.yuchaoit.cn"

3.禁用危险命令

背景

最近安全事故濒发啊,前几天发生了“ 顺丰高级运维工程师的删库事件”,今天又看到了PHP工程师在线执行了Redis危险命令导致某公司损失400万..

什么样的Redis命令会有如此威力,造成如此大的损失?

具体消息如下:

据云头条报道,某公司技术部发生2起本年度PO级特大事故,造成公司资金损失400万,原因如下:

由于PHP工程师直接操作上线redis,执行键 wxdb(此处省略)cf8 这样的命令,导致redis锁住,导致CPU飙升,引起所有支付链路卡住,等十几秒结束后,所有的请求流量全部挤压到了rds数据库中,使数据库产生了雪崩效应,发生了数据库宕机事件。

该公司表示,如再犯类似事故,将直接开除,并表示之后会逐步收回运维部各项权限。

看完这个消息后,我心又一惊,为什么这么低级的问题还在犯?为什么线上的危险命令没有被禁用?这事件报道出来真是觉得很低级......

且不说是哪家公司,发生这样的事故,不管是大公司还是小公司,我觉得都不应该,相关负责人应该引咎辞职!

对Redis稍微有点使用经验的人都知道线上是不能执行keys *相关命令的,虽然其模糊匹配功能使用非常方便也很强大,在小数据量情况下使用没什么问题,数据量大会导致Redis锁住及CPU飙升,在生产环境建议禁用或者重命名!

还有哪些危险命令?

Redis的危险命令主要有以下几个:

  • keys

客户端可查询出所有存在的键。

  • flushdb

删除当前所选数据库的所有键。此命令永远不会失败。

删除Redis中当前所在数据库中的所有记录,并且此命令从不会执行失败。

  • flushall

删除所有现有数据库的所有键,而不仅仅是当前选定的数据库。此命令永远不会失败。

删除Redis中所有数据库中的所有记录,不只是当前所在数据库,并且此命令从不会执行失败。

  • config

客户端可修改Redis配置。

怎么禁用或重命名危险命令?

看下redis.conf默认配置文件,找到SECURITY区域,如以下所示。

1)禁用命令

rename-command KEYS     ""

rename-command FLUSHALL ""

rename-command FLUSHDB  ""

rename-command CONFIG   ""

2)重命名命令

rename-command KEYS     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

rename-command FLUSHALL "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

rename-command FLUSHDB  "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

rename-command CONFIG   "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

上面的XX可以定义新命令名称,或者用随机字符代替。

经过以上的设置之后,危险命令就不会被客户端执行了。

实践

修改配置文件,加入限制参数
rename-command KEYS "www.yuchaoit.cn"
rename-command FLUSHALL "FFTRLZL7fmI="
rename-command FLUSHDB "XA4z7FKXag0="
rename-command CONFIG "CIxG1pYpVis="

redis安全篇的更多相关文章

  1. 安全篇:弱密码python检测工具

    安全篇:弱密码python检测工具 https://github.com/penoxcn/PyWeakPwdAudit

  2. 7-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(GPRS模块SSL连接MQTT)

    6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(Wi-Fi模块SSL连接MQTT) 由于GPRS是直接和GPRS基站进行连接,其实对于GPRS而言,即使不加 ...

  3. 6-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(Wi-Fi模块SSL连接MQTT)

    5-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(配置MQTT的SSL证书,验证安全通信) 首先确定自己的固件打开了SSL,升级篇里面的固件我打开了SSL,如 ...

  4. redis安装包下载

    redis linux版安装包下载地址 http://download.redis.io/releases/

  5. 公有云Docker镜像P2P加速之路:安全篇

    一.问题 在使用Docker运行容器化应用时,宿主机通常先要从Registry服务(如Docker Hub)下载相应的镜像(image).这种镜像机制在开发环境中使用还是很有效的,团队成员之间可以很方 ...

  6. API接口之安全篇

    APP.前后端分离项目都采用API接口形式与服务器进行数据通信,传输的数据被偷窥.被抓包.被伪造时有发生,那么如何设计一套比较安全的API接口方案呢? 一般的解决方案如下: 1.Token授权认证,防 ...

  7. 再探.NET的PE文件结构(安全篇)

    一.开篇 首先写在前面,这篇文章源于个人的研究和探索,由于.NET有自己的反射机制,可以清楚的将源码反射出来,这样你的软件就很容易被破解,当然这篇文章不会说怎么样保护你的软件不被破解,相反是借用一个软 ...

  8. Web安全攻防-----TCP/IP安全篇

    知识点: 掌握TCP/IP的体系分层结构 掌握TCP/IP的各一层功能特点 掌握TCP/IP的数据在各层的名称 掌握TCP/IP的体系数据的封装和解封装 1.TCP/IP协议的历史 TCP/IP的起源 ...

  9. http安全篇

    一.app与服务端交互确保来源的安全 作为一个移动互联网App,天生是需要和服务器通信的.那么,服务器如何识别客户端的身份?我们如何保证数据传输过程中的安全性?要靠两个东西:使用AppKey做身份识别 ...

  10. linux安全篇

    笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 1.限制用户su 限制能su到root的用户. 操作步骤 使用命令 vi /etc/pam.d/su修改配置文件, ...

随机推荐

  1. dotnet 使用 IndentedTextWriter 辅助生成代码时生成带缩进的内容

    随着源代码生成的越来越多的应用,自然也遇到了越来越多开发上的坑,例如源代码的缩进是一个绕不过去的问题.如果源代码生成是人类可见的代码,我期望生成的代码最好是比较符合人类编写代码的规范.为了能让人类在阅 ...

  2. JS代码优化小技巧

    下面介绍一种JS代码优化的一个小技巧,通过动态加载引入js外部文件来提高网页加载速度 [基本优化] 将所有需要的<script>标签都放在</body>之前,确保脚本执行之前完 ...

  3. 16.prometheus监控总结

    一.监控流程总结 1.需要在被监控的服务器上安装xx_exporter来收集数据(可以是源码安装,最好用docker.docker-compose) 2.添加Prometheus配置,去收集(xx_e ...

  4. vue的三种组件传值方式

    一.父传子 1.在父组件引入的子组件标签内给需要传递的值自定义名称 <AlertSzs  :abc='gameType'></AlertSzs> 2.在子组件内用props接收 ...

  5. SAP集成技术(十)混合集成平台

    混合集成平台hybrid integration platform (有时缩写为HIP)这个术语近年来被大量使用,但很多人可能不太清楚它的概念. 内容摘录自<SAP Interface Mana ...

  6. 构造照亮世界——快速沃尔什变换 (FWT)

    博客园 我的博客 快速沃尔什变换解决的卷积问题 快速沃尔什变换(FWT)是解决这样一类卷积问题: \[c_i=\sum_{i=j\odot k}a_jb_k \] 其中,\(\odot\) 是位运算的 ...

  7. 不同模式下删除Oracle数据表的三个实例

    首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...

  8. ContextCapture中的模型航拍方法和技巧

    在进行实景建模之前,获取被拍摄物体的照片是很重要的一项工作,因为如果没有按照规则拍摄或者拍摄相片质量不佳,将会直接影响我们后期建模,甚至无法建模. 我们建议使用ContextCapture进行建模,则 ...

  9. BMP图片内部结构

    BMP图片内部结构 ​ BMP文件的数据按照从文件头开始的先后顺序分为四个部分:分别是位图文件头.位图信息头.调色板(24bit位图是没有的).位图数据(RGB). (1)位图文件头(Bitmap-F ...

  10. 物联网平台选型葵花宝典:盘点开源、SaaS及通用型平台的优劣对比

    随着工业物联网领域和智慧物联领域的发展,大大小小的物联项目和物联场景需求层出不穷,物联网平台作为技术底座型软件,是不可或缺的项目地基. 市场需求下,物联网平台提供商越来越多,"打地基&quo ...