自己怎样建设淘宝返现网站,嘉兴网站如何制作,请问做网站需要什么,网站制作免费前言
最近华为云云耀云服务器L实例上新#xff0c;也搞了一台来玩#xff0c;期间遇到过MySQL数据库被攻击的情况#xff0c;数据丢失#xff0c;还好我有几份备份#xff0c;没有造成太大的损失。昨天收到华为云的邮箱提醒#xff0c;我的redis数据库没有设置密码…
前言
最近华为云云耀云服务器L实例上新也搞了一台来玩期间遇到过MySQL数据库被攻击的情况数据丢失还好我有几份备份没有造成太大的损失。昨天收到华为云的邮箱提醒我的redis数据库没有设置密码也就是说只要知道我服务器的ip以及redis的端口就能连上我的redis数据库。我说怎么我的redis里面的数据总是会莫名消失。。。
本篇博客介绍redis连接密码设置以保证redis缓存数据库的安全性以及查看redis数据库相关情况的命令。 其他相关的华为云云耀云服务器L实例评测文章列表如下 初始化配置SSH连接 安装MySQL的docker镜像 安装redis以及主从搭建 7.2版本redis.conf配置文件 安装Java8环境 配置环境变量 spring项目部署 【!】存在问题未解决 部署spring项目端口开放问题的解决 服务器项目环境搭建MySQLRedisMinio…指南 由于自己原因导致MySQL数据库被攻击 MySQL的binlog日志文件的理解 拉取创建canal镜像配置相关参数 搭建canal连接MySQL数据库 spring项目应用canal初步 文章目录 前言引出一、redis允许任何人访问的风险1.认识redis未授权访问漏洞2.漏洞的危害 二、漏洞的复现1.数据泄密flush删库跑路 三、漏洞的解决1.数据泄密的初步解决---加连接密码 四、redis的其他命令学习1.database的设置和切换2.client 相关命令 总结 引出 1.redis漏洞—轻微攻击者知道ip端口就可以访问redis所以redis的数据会被泄露另外攻击者可以执行flushall命令来清空所有数据 2.redis漏洞—严重通过eval命令来执行lua脚本 3.redis漏洞—危险如果redis以root身份运行黑客可以给root账户写入SSH公钥文件直接通过SSH登陆受害服务器 一、redis允许任何人访问的风险
1.认识redis未授权访问漏洞
Redis未授权访问漏洞是指如果Redis服务器没有采取相应的安全策略如添加防火墙规则阻止非信任来源的IP访问那么未经授权的用户就可以直接访问和操作Redis服务。
这个漏洞产生的原因主要是Redis默认绑定在0.0.0.0:6379并未开启认证。所以如果攻击者可以访问目标服务器那么他们无需授权就可以访问Redis服务甚至可以读取Redis的数据。
如果一个系统存在这个漏洞攻击者可能会利用该漏洞进行恶意操作。比如攻击者可以利用Redis提供的config命令进行写文件操作将ssh公钥写入目标服务器的/root/.ssh文件夹中的authorized_keys文件从而利用ssh服务登录目标服务器。
在我之前的redis设置中1允许任何ip访问2免密码登陆redis服务因此存在较大风险。 bind 允许任何ip访问 保护模式关闭 2.漏洞的危害
1轻微攻击者知道ip端口就可以访问redis所以redis的数据会被泄露另外攻击者可以执行flushall命令来清空所有数据
* FLUSHALL [ASYNC | SYNC]
* 功能删除所有数据
* Delete all the keys of all the existing databases2严重通过eval命令来执行lua脚本
* EVAL script numkeys [key [key ...]] [arg [arg ...]]
* 功能执行lua脚本
* Invoke the execution of a server-side Lua script.3危险如果redis以root身份运行黑客可以给root账户写入SSH公钥文件直接通过SSH登陆受害服务器 https://www.zoomeye.org/ 用这个网址搜索结果如下 redis漏洞 二、漏洞的复现
1.数据泄密flush删库跑路 在windows中安装redis的以cmd的方式运行redis-cli客户端 redis通过监听一个TCP端口或socket的方式接收来自客户端的连接 当与客户端建立连接后redis内部会进行如下操作
1客户端socket会被设置为非阻塞模式因为redis在网络时间处理上采用的是非阻塞多路复用模型2然后为这个socket设置TCP_NODELAY属性禁用Nagle算法3然后创建一个可读的文件事件用于监听这个客户端socket的数据发送。 启动一下之前搭的从端口6380在windows上连接数据泄密然后flushall删库跑路 D:\Myprogram\redisredis-cli -h 124.70.138.34 -p 6380
124.70.138.34:6380 keys *
1) backup3
2) backup4
3) backup2
4) backup1
124.70.138.34:6380 flushall
(error) READONLY You cant write against a read only replica.
124.70.138.34:6380 slaveof no one
OK
124.70.138.34:6380 flushall
OK
124.70.138.34:6380 keys *
(empty list or set)
124.70.138.34:6380 set pet 123
OK
124.70.138.34:6380 keys *
1) pet通过上述操作从变成了主黑白颠倒 三、漏洞的解决
1.数据泄密的初步解决—加连接密码 在redis.cnf中设置连接redis数据库的密码 roothcss-ecs-52b8:~# docker exec -it redis_6379 bash
root706d04b2ea4d:/data# redis-cli
127.0.0.1:6379 keys *
(error) NOAUTH Authentication required.
127.0.0.1:6379 auth 设置的密码
OK
127.0.0.1:6379 keys *
1) backup1
2) backup3
3) jwt1
4) backup4
5) backup2
127.0.0.1:6379 config get requirepass
1) requirepass
2) 设置的密码
127.0.0.1:6379 四、redis的其他命令学习
1.database的设置和切换 在redis.cnf中设置databases参数默认是16个数据库 进入redis-cli客户端后利用select 3进行数据库切换 用config get databases可以获得配置的参数 [rootlocalhost ~]# docker exec -it redis_6379 bash
root5d04e3abf91f:/data# redis-cli
127.0.0.1:6379 keys *1) book2) weather3) stu4) usernames5) tom_bank6) dress7) peter8) username9) goods
10) mycar
127.0.0.1:6379 select 3
OK
127.0.0.1:6379[3] keys *
(empty array)
127.0.0.1:6379[3] config get databases
1) databases
2) 16RedisDesktopManager软件连接时在超出索引自动退出 2.client 相关命令
CLIENT LIST获取客户端列表CLIENT SETNAME 设置当前连接点redis的名称CLIENT GETNAME 查看当前连接的名称CLIENT KILL ip:port 杀死指定连接 127.0.0.1:6379 info clients
# Clients
connected_clients:1
cluster_connections:0
maxclients:10000
client_recent_max_input_buffer:8
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0
total_blocking_keys:0
total_blocking_keys_on_nokey:0
127.0.0.1:6379 config get maxclients
1) maxclients
2) 10000
127.0.0.1:6379 CLIENT LIST
id12 addr127.0.0.1:44442 laddr127.0.0.1:6379 fd8 name age1123 idle0 flagsN db0 sub0 psub0 ssub0 multi-1 qbuf26 qbuf-free20448 argv-mem10 multi-mem0 rbs1024 rbp0 obl0 oll0 omem0 tot-mem22426 eventsr cmdclient|list userdefault redir-1 resp2 lib-name lib-ver
127.0.0.1:6379 CLIENT LIST
id12 addr127.0.0.1:44442 laddr127.0.0.1:6379 fd8 name age2903 idle0 flagsN db0 sub0 psub0 ssub0 multi-1 qbuf26 qbuf-free20448 argv-mem10 multi-mem0 rbs1024 rbp0 obl0 oll0 omem0 tot-mem22426 eventsr cmdclient|list userdefault redir-1 resp2 lib-name lib-ver
id47 addr112.21.24.25:19880 laddr172.18.12.79:6379 fd9 name age604 idle447 flagsN db0 sub0 psub0 ssub0 multi-1 qbuf0 qbuf-free0 argv-mem0 multi-mem0 rbs1024 rbp0 obl0 oll0 omem0 tot-mem1928 eventsr cmdsetex userdefault redir-1 resp3 lib-name lib-ver
127.0.0.1:6379 总结
1.redis漏洞—轻微攻击者知道ip端口就可以访问redis所以redis的数据会被泄露另外攻击者可以执行flushall命令来清空所有数据 2.redis漏洞—严重通过eval命令来执行lua脚本 3.redis漏洞—危险如果redis以root身份运行黑客可以给root账户写入SSH公钥文件直接通过SSH登陆受害服务器