一、缘由:

  最近几天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. 上传app store 应用指南链接--2

    http://www.docin.com/p-166876874.html http://jamesli.cn/blog/?p=955 http://www.adobe.com/devnet/flas ...

  2. The platform of the target `Pods` (iOS 4.3) is not compatible 错误

    一:使用 cocoaPod错误 The platform of the target `Pods` (iOS 4.3) is not compatible with `AFNetworking (1. ...

  3. windows下npm默认的全局路径

    C:\Users\用户名\AppData\Roaming\npm\node_modules

  4. 解决 maven 项目启动 提示 class not find

    第一种方法: 项目 --> .classpath <classpathentry exported="true" kind="con" path=& ...

  5. 去除DataTable重复数据的三种方法(转)

    转自:https://www.cnblogs.com/sunxi/p/4767577.html 业务需求 最近做一个把源数据库的数据批次导出到目标数据库.源数据库是采集程序采集而来的原始数据库,所以需 ...

  6. windows登陆密码破解方法之一

    网上的一些人让别人进入命令提示符安全模式,我比较奇怪如果没有密码怎么进去?能进去干嘛还要进去? 本笨方法的原理主要是利用登陆界面的一些程序入口,把它当成后门来使用,比如win7登陆界面上除了输密码的地 ...

  7. JProfiler 解决 Java 服务器的性能跟踪

    作者:徐建祥(netpirate@gmail.com) 时间: 2006/01/05 来自:http://www.anymobile.org 1.摘要......................... ...

  8. LR杂记 - 性能測试指标及经常使用的监控工具

    监控指标 性能測试通常须要监控的指标包含: 1.serverLinux(包含CPU.Memory.Load.I/O). 2.数据库:1.Mysql 2.Oracle(缓存命中.索引.单条SQL性能.数 ...

  9. 2016年度GitHub上Stars最多的10个项目

    来源于:https://zhuanlan.zhihu.com/p/24627923 2016年接近尾声,在最近的几篇文章中,会整理总结一些2016年度开源项目.今天整理的是:2016年度GitHub最 ...

  10. logback+slf4j作为日志系统

    一.logback简介 log4j和logback作者是同一人:CekiGülcü.log4j和logback都是实打实的日志系统. commons-logging,slf4j这两者是日志大管家.sl ...