一、缘由:

  最近几天Mongodb勒索事件甚嚣尘上:由于对外网开放访问并且没有开启授权机制被删库、远程拖库、勒索。接着又曝出Elasticsearch被勒索事件,缘由一样,Elasticsearch服务暴露在公网上并且

Elasticsearch是没有账号安全体系的。再者联想到前些日子,Redis未授权访问漏洞,同样是因为Redis没有暴露在公网、没有设置授权认证,而引起的。

做为专职运维人员来说,这些漏洞和勒索事件,只要有一件发生就必须引起警觉和漏洞扫描防治措施的启动。

入侵了数据库,会把数据删掉,哪怕不太重要也会多多少少引起一些问题,让你花更多时间去补回数据。利用Redis未授权访问漏洞,入侵了服务器,那你这台机器就危险了,木马,历史操作记录,

数据库操作记录,各种数据会被拿走,如果长期潜伏你确不知道,就很麻烦了。有的木马很难干掉的话,你只能重装系统了,这又是个不小的工作量。

  莫非定律说:会出错的事总会出错;如果你担心某种情况发生,那么它就更有可能发生。所以不要心存侥幸,安全问题重在预防。

二、解决办法:

Mongodb未授权访问漏洞介绍见这里:http://www.freebuf.com/news/59143.html

  Redis未授权访问漏洞介绍见这里:http://blog.knownsec.com/2015/11/analysis-of-redis-unauthorized-of-expolit/

Elasticsearch漏洞介绍见这里:拿什么拯救你,我的 Elasticsearch

对于将后台服务、数据服务的端口暴露在公网解决办法如下(以ES为例,mongodb等类似):

其一,初段开发人员都有一个疑问,我要是把 host 绑到了内网 ip,我在本地开发的时候可改怎么访问服务,测试它呢?总不能每次都登录到服务器,使用 curl 来访问吧,那得多难用?!

直接上答案,推荐力度按次序由小到大:

1)使用 nginx 做反向代理,将一个公网 ip 和端口代理到 es 的服务上,用完就把 nginx 这个代理关掉。当然,nginx 本身是支持基础安全账号机制的。

2)在服务器上部署一个 shadowsocks 服务,本地开一个 client 连过去,然后把 es 的访问地址(比如 10.0.0.10:9200)代理到 shadowsocks client开放的 代理上(比如socks5),就可以自由访问了。

当然,你可以访问其他所有的内网服务哦。

3)最推荐的方案,还是在服务器装一个 openvpn 服务,本地开发人员连接 vpn 后,内网的服务就可以访问了。当然,这个方案成本有些高,需要有一定的运维能力。

其二,有没有啥方法可以防止以后又出现这种傻×行为呢?比如就有一个 es 服务不小心配置成 0.0.0.0 了 

有方案,上防火墙,常见的就是 iptables。简单讲,就是对本地开放的 ip 和端口建立白名单,比如常见的 iptables 配置如下,这个配置开放了 80( http 服务 )、443( https 服务)和 22 ( ssh 端口)这三个端口

*filter
:INPUT ACCEPT [:]
:FORWARD ACCEPT [:]
:OUTPUT ACCEPT [:]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp --dport -j ACCEPT
-A INPUT -p tcp --dport -j ACCEPT
-A INPUT -p tcp --dport -j ACCEPT
-A INPUT -j DROP
COMMIT

其三,一些个人经验总结

1)前端进程和后端进程一定要分别部署在不同的机器上,避免前端因为漏洞等被侵入,造成后端服务和数据不可用,规避风险。

2)后端服务即那些不对直接和用户交互的服务、数据库服务,一定要添加防火墙规则,合理控制访问权限,避免被攻击利用。

3)对于数据库相关服务,要养成定时备份的好习惯,最坏情况下数据丢失被删除也不怕。

4)对于前端服务,要做好某个IP访问频率的限制,避免被人合理利用攻击。

三、附录

推荐一个网站:ZooomEye,钟馗之眼,是一个针对网络空间的搜索引擎。他的爬虫是专门扫描网络上服务器的,比如他拿到一个IP,就开始探测这个IP上有哪些端口开放、利用一些方法获取重要的开放服务的信息。

利用他,可以对自己的服务器做一个简单的漏洞扫描(当然前提是他已经更新过你服务器的信息)。https://www.zoomeye.org/

[Mongodb] 借mongodb被入侵勒索事件,谈下Linux服务器端口安全问题的更多相关文章

  1. 搭建LNAMP环境(六)- PHP7源码安装MongoDB和MongoDB拓展

    上一篇:搭建LNAMP环境(五)- PHP7源码安装Redis和Redis拓展 一.安装MongoDB 1.创建mongodb用户组和用户 groupadd mongodb useradd -r -g ...

  2. Install MongoDB on Red Hat Enterprise, CentOS, Fedora, or Amazon Linux

    Install MongoDB on Red Hat Enterprise, CentOS, Fedora, or Amazon Linux¶ Overview Use this tutorial t ...

  3. 每篇半小时1天入门MongoDB——2.MongoDB环境变量配置和Shell操作

    上一篇:每篇半小时1天入门MongoDB——1.MongoDB介绍和安装 配置环境变量 Win10系统为例 右键单击“此电脑”——属性——高级系统设置——高级——环境变量,添加C:\Program F ...

  4. PHP7源码安装MongoDB和MongoDB拓展

    一.安装MongoDB 1.创建mongodb用户组和用户 groupadd mongodb useradd -r -g mongodb -s /sbin/nologin -M mongodb 2.下 ...

  5. 阿里云下Linux服务器安装Mysql、mongodb

    阿里云下Linux服务器安装Mysql.mongodb 一.MySQL的安装和配置 1.安装rpm包 rpm -Uvh http://dev.mysql.com/get/mysql-community ...

  6. mongoDB(2)--mongoDB的常用命令

    默认设置后台启动: vi mongodb.cfg 创建配置文件,配置启动信息 dbpath=/root/mongodb/data logpath=/root/mongodb/log/mongodb.l ...

  7. python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战

    python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...

  8. python操作三大主流数据库(9)python操作mongodb数据库③mongodb odm模型mongoengine的使用

    python操作mongodb数据库③mongodb odm模型mongoengine的使用 文档:http://mongoengine-odm.readthedocs.io/guide/ 安装pip ...

  9. python操作三大主流数据库(7)python操作mongodb数据库①mongodb的安装和简单使用

    python操作mongodb数据库①mongodb的安装和简单使用 参考文档:中文版:http://www.mongoing.com/docs/crud.html英文版:https://docs.m ...

随机推荐

  1. Javascript高级程序设计-对象

    学习Javascript,最难的地方是什么? Object(对象)最难,初学者不容易掌握. Javascript是一种基于对象(object-based)的语言,它的语法中没有class(类). C# ...

  2. ZH奶酪:Ubuntu启动/重启/停止apache服务

    Start Apache 2 Server /启动apache服务 # /etc/init.d/apache2 start or $ sudo /etc/init.d/apache2 start Re ...

  3. uva 11181 - Probability|Given(概率)

    题目链接:uva 11181 - Probability|Given 题目大意:有n个人去超市买东西,给出r,每个人买东西的概率是p[i],当有r个人买东西的时候,第i个人恰好买东西的概率. 解题思路 ...

  4. Mac和PC在工作中管理的对比(5)

    ACLs, 企业应用必备 Windows: ACLs是Access Control Lists的缩写, 存取控制列表/访问控制列表. 它已经在大多数的现代操作系统中得到支持. 系统安全就是通过ACLs ...

  5. C# Console 运行之后最小化到状态栏

    static void Main(string[] args) { new ConsoleCtrl(); Console.Read(); } class ConsoleCtrl { [DllImpor ...

  6. easyui问题小结

    http://blog.sina.com.cn/s/blog_77cb836301017lrd.html

  7. jsp中的js嵌入Extjs与后台action交互

    近期做前台须要和后台交互数据,直接使用js一直没实现.最后使用extjs实现了,extjs代码直接嵌入到jsp的js代码中就可以(0跟jsp里使用extjs一样,须要载入extjs的几个文件) < ...

  8. zookeeper技术浅析

    Zookeeper是hadoop的一个子项目,尽管源自hadoop,可是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多. 今天我想谈谈zookeeper.本文不谈如何使用z ...

  9. C/C++程序内存分类

    程序中内存分类主要有下面几种: (1)栈存储区:主要存储局部变量.函数參数.函数返回值等. 栈内存由编译器在须要时自己主动分配,使用完后自己主动释放. (2)堆存储区:由new.malloc申请到的空 ...

  10. 二叉搜索树 C语言实现

    1.二叉搜索树基本概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是一棵具有如下特性的非空二叉树: (1)若它的左子树非空,则左子树上所有结点的关键字均小于根结点的关键字: (2)若它的右子树非 ...