[Mongodb] 借mongodb被入侵勒索事件,谈下Linux服务器端口安全问题
一、缘由:
最近几天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服务器端口安全问题的更多相关文章
- 搭建LNAMP环境(六)- PHP7源码安装MongoDB和MongoDB拓展
上一篇:搭建LNAMP环境(五)- PHP7源码安装Redis和Redis拓展 一.安装MongoDB 1.创建mongodb用户组和用户 groupadd mongodb useradd -r -g ...
- 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 ...
- 每篇半小时1天入门MongoDB——2.MongoDB环境变量配置和Shell操作
上一篇:每篇半小时1天入门MongoDB——1.MongoDB介绍和安装 配置环境变量 Win10系统为例 右键单击“此电脑”——属性——高级系统设置——高级——环境变量,添加C:\Program F ...
- PHP7源码安装MongoDB和MongoDB拓展
一.安装MongoDB 1.创建mongodb用户组和用户 groupadd mongodb useradd -r -g mongodb -s /sbin/nologin -M mongodb 2.下 ...
- 阿里云下Linux服务器安装Mysql、mongodb
阿里云下Linux服务器安装Mysql.mongodb 一.MySQL的安装和配置 1.安装rpm包 rpm -Uvh http://dev.mysql.com/get/mysql-community ...
- mongoDB(2)--mongoDB的常用命令
默认设置后台启动: vi mongodb.cfg 创建配置文件,配置启动信息 dbpath=/root/mongodb/data logpath=/root/mongodb/log/mongodb.l ...
- python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战
python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...
- python操作三大主流数据库(9)python操作mongodb数据库③mongodb odm模型mongoengine的使用
python操作mongodb数据库③mongodb odm模型mongoengine的使用 文档:http://mongoengine-odm.readthedocs.io/guide/ 安装pip ...
- python操作三大主流数据库(7)python操作mongodb数据库①mongodb的安装和简单使用
python操作mongodb数据库①mongodb的安装和简单使用 参考文档:中文版:http://www.mongoing.com/docs/crud.html英文版:https://docs.m ...
随机推荐
- LESS详解之变量(@)
变量基本上是每个语言脚本上都会涉及的一个小小知识点,是学好语言脚本的必经之路.LESS中也可以设置变量,然后通过变量可以改变整个网站的设计风格.良好的掌握LESS中变量的用法,是LESS的基础. 变量 ...
- 使用web_url注意Resource的选项
在使用web_url的时候,一定注意Resource的使用,一般最好使用Resource=0,如果使用Resource=1,那么一定要修改配置. Resource Attribute If Resou ...
- GNU与Linux
GNU是自由软件之父 Richard Stallman在1984年组织开发的一个完全基于自由软件的软件体系,与此相应的有一分通用公共许可证(General Public License,简称GPL). ...
- Java学习笔记五(多线程)
1.介绍 线程可以使程序具有两条和两条以上的可运行的路径.尤其对多核CPU特别的重要. 2.创建线程 1.继承Thread类 一个类直接的继承Thread类的话,此类就具有了线程的能力,接下来仅仅须要 ...
- hdu 5055(坑)
题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=5055 Bob and math problem Time Limit: 2000/1000 MS ( ...
- XML 文档结构必须从头至尾包含在同一个实体内
XML 文档结构必须从头至尾包含在同一个实体内 CreateTime--2018年4月2日16:40:58 Author:Marydon 问题还原: <![CDATA[ <?xml v ...
- JDBC实例--JDBC连接池技术解密,连接池对我们不再陌生
一.为什么我们要用连接池技术? 前面的数据库连接的建立及关闭资源的方法有些缺陷.统舱传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开.关闭该物理连接, 系统性能严重受损. 解 ...
- 九度OJ 1183 守形数 (模拟)
题目1183:守形数 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2663 解决:1424 题目描写叙述: 守形数是这样一种整数.它的平方的低位部分等于它本身. 比方25的平方是625. ...
- 【laravel5.4】{{$name}}、{{name}}、@{{$name}} 和 @{{name}} 的区别
1.前面带@符号的,表示不需要laravel的blade引擎进行解析:有@的,则需要blade解析 2.{{$name}} 表示:blade解析 后台php的 name变量 {{name}} 表示:b ...
- PHP-Open Flash Chart学习一(swfobject知识)
首先必须了解下swfobject的知识 在网页里面插入swf再平常不过了, 一般会想到如下代码: <object classid="clsid:D27CDB6E-AE6D-11cf-9 ...