Linux

wtf! Redis Crackit,我被黑了 =。=#

先前学redis时候是放在亚马逊的云主机上部署的redis-server,因为亚马逊云的默认安全策略是禁止所有端口的外网访问,要想从外网访问云主机,必须手动在安全策略开启所需端口,这能有效防止无意识的端口暴露。而阿里云的默认安全策略则是允许所有端口的外网访问权限,简直日了狗了,以前从没注意过。 昨天想着要重构下我的betspider爬虫,将一些实时数据放到redis缓存中,所以在阿里云也开了redis-server。redis的默认配置是允许所有远程连接,并且无需密码。 这种情况下:阿里云无安全策略,所有端口暴露给外网;redis-server无需密码登陆、允许远程连接。那么就相当于将我的redis-server暴露在所有人面前,谁都可以访问到。活生生的Redis Crackit肉鸡。 Redis Crackit漏洞: 黑客远程访问redis服务,清空redis数据库后写入他自己的ssh登录公钥,然后将redis数据库备份为/root/.ssh/authotrized_keys。 这就成功地将自己的公钥写入到ssh的authotrized_keys,无需密码直接root登录被黑的主机。大写的SAD.   事情的经过是这样的,应该是今天中午的时候吧大概,正好用phpRedisAdmin查看我的redis-server,发现里面有一个很陌生的key,值为“ssh-ras xxxx”一大串字符串,当时我还没反应过来这是什么玩意,就奇怪了一下怎么莫名其妙多了一个key,然后随手就把他删除了,这个时候,应该就是黑客正在作案的时候,还真巧=。=# 后来,再登录的时候,发下root目录下多了一个奇怪的脚本get.sh,内容是下载xx程序后台执行,然后删除程序文件。想了一会觉得特别不对劲,卧槽难道我被黑了,赶紧history检查历史命令,发现没有什么异常,估计这时候history记录已经被黑客清理干净了,但却忘删get.sh这个脚本文件了。 后来正好看手机短信,发现有条未读的阿里云短信,说我的服务器在荷兰(89.248.162.167)处登录,可能是黑客入侵。what the hell,我居然现在才看到短信!!! 当时想了好一会儿,卧槽怎么回事,怎么会被黑了,赶紧改密码,日了狗了。到底怎么回事。咦,我的redis好像没有做访问控制,可以被所有人访问到呀,是不是redis有漏洞?赶紧百度一下,what the fuck!果然是redis的漏洞,靠!赶紧停redis-server。 处理方法: 修改redis配置文件,打开被注释的bind […]

文件系统使用率du、df二者相差过大的问题

今天在单位遇到一个问题,有一台服务器文件系统的磁盘使用率超过80%,因此打算清理一下没用的文件。 使用df检查发现/home目录占用了105G,而用du命令检查/home目录只占用了64G,整整差了41G!即使df与du命令的检查结果是可能会存在些许不同,但相差了这么多,明显是有问题了。通常导致这个问题的原因,当一个文件被删除后,在目录中已经不可见了,所以du就不会再统计它了。然而如果此时还有进程持有这个已经被删除了的文件的句柄,那么这个文件就不会真正在磁盘中被删除,这样df仍旧会统计这个被删除了的文件。 我们可以使用lsof命令(list open files)来检查被打开的文件,并grep下是否已经deleted(很不幸,检测是否deleted这个,并不是所有系统的lsof都支持的,我的mac就不会。 那样的话只能自己写个脚本一个一个文件去检查是否还在目录中了) 检查结果如上图,这两个pid为8363、8364的jsvc进程打开了已经被删除的日志文件catalina.out.8,而且这个文件有40G之大! =。=#  我怀疑是这个系统的开发人员以为写个定时任务删除了过期日志文件就好了,结果在程序中又没有关闭这个文件句柄,还接着往这个文件里面倒数据。。。 解决办法一是重启对应的进程,释放该文件句柄;二是使用命令清空文件$cat /dev/null > filename。

ssh代理:给系统分配一个无登陆权限的账号来做ssh代理

之前申请了一个免费的亚马逊云服务器作为VPN Server,同时自己电脑使用默认的ubuntu账号进行ssh翻墙:firefox+foxyproxy+ssh简直不要太方便。附上一份本机开启ssh隧道的shell脚本: #! /bin/bash pid=$(ps -ef|grep 'ssh -qTfnN -D 3128'|grep -v grep|awk '{print $2}') if [[ $pid = "" ]]

linux常用系统命令

1. top 检查系统cpu、内存以及进程情况。 按shift+m    可以按内存使用率排序进程 按shift+p     可以按cpu使用率排序进程 按shift+t      可以按cpu使用时间排序进程 按shift+n     可以按pid排序进程 按1                  可以显示cput各核的负载 按u,再输入user name 

CentOS 6.3升级php5.5

在CentOS 6.3 系统下直接yum install php,默认安装的是php 5.3。前几天为了解决php耗尽内存导致宕机的情况,顺便将php 5.3升级成5.5了。 1. 检查系统当前安装过的php程序包 yum list installed | grep php 然后将查到的相关php程序以及扩展库卸载掉 yum remove php php-fpm

CentOS下php-fpm进程cpu占用率100%导致无法访问的情况

最近我的阿里云服务器经常出现网站无法访问的情况,同时也无法ssh登陆,只有服务器ip可以ping通。只能通过阿里云后台重启系统才能恢复。之前也出现过几次,但一直懒得处理,还天真的认为是不是太久没访问系统待机了,=。=#   现在得干点活了。(ง •̀_•́)ง   1. 在阿里云后台添加站点监控,监控hawu.me访问超时的情况。 2015.3.4 18:40 收到监控告警, hawu.me无法访问。赶紧尝试ssh服务器,果然无法登陆了。阿里云监控显示服务器cpu使用率100% 。   2. 重启服务器后查看系统日志(/var/log/messages)与php日志(/var/log/php-fpm/error.log) 这时候的php日志记录如下: [04-Mar-2015 18:32:02] WARNING: [pool www] seems