[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 [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-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 22 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -j DROP
COMMIT

其三,一些个人经验总结

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

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

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

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

三、附录

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

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

时间: 2024-08-01 22:46:38

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

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

上一篇:每篇半小时1天入门MongoDB——1.MongoDB介绍和安装 配置环境变量 Win10系统为例 右键单击“此电脑”——属性——高级系统设置——高级——环境变量,添加C:\Program Files\MongoDB\Server\3.0\bin;.注意:要以;隔开各种变量. 这样的话就可以直接在CMD命令窗口中输入mongo 表示环境变量设置成功,并已经连接到默认数据库test中. 我们可以输入mongod --help来查看相关的帮助信息 C:\Users\zouqi>mongod

[MongoDB] 安装MongoDB配置Replica Set

url:http://blog.csdn.net/hf81970/article/details/19643639 MongoDB的环境主要包括StandAlone,Replication和Sharding. StandAlone:单机环境,一般开发测试的时候用. Replication:主从结构,一个Primary,多个Secondary,可能会有Arbitry. Primary挂掉之后,会选举出一个Secondary作为Primary,与zookeeper类似. Arbitry上面不存数据,

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 to install MongoDB on Red Hat Enterprise Linux, CentOS Linux, Fedora Linux, or a related system. The tutorial uses .rpm packages to install. While some

【MongoDB】MongoDB的安装教程

1,MongoDB简介 MongoDB也是一种数据库,只不过它既不是关系型数据库,也不是非关系型数据库(NoSQL),而是一种介于关系型数据库和NoSQL之间的一种数据库.如果说非关系型数据库是轻量级的,具有存取速度快的特点.关系型数据库是重量级的,具有存储数据量大,数据安全,查询统计方便等特点.那么MongoDB就有非关系型数据库存储数据快的特点,又有关系型数据库存储数据量大.安全等特点. MongoDB是基于分布式文件存储的数据库 MongoDB是介于NoSQL和关系型数据库之间的一款产品

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

上一篇:搭建LNAMP环境(五)- PHP7源码安装Redis和Redis拓展 一.安装MongoDB 1.创建mongodb用户组和用户 groupadd mongodb useradd -r -g mongodb -s /sbin/nologin -M mongodb 2.下载mongodb源码包,并将源码包放到/usr/local/src/目录下下载页面:https://www.mongodb.com/download-center?jmp=nav这里用的是 mongodb-linux-x

PHP7源码安装MongoDB和MongoDB拓展

一.安装MongoDB 1.创建mongodb用户组和用户 groupadd mongodb useradd -r -g mongodb -s /sbin/nologin -M mongodb 2.下载mongodb源码包,并将源码包放到/usr/local/src/目录下下载页面:https://www.mongodb.com/download-center?jmp=nav这里用的是 mongodb-linux-x86_64-rhel62-3.2.10.tgz下载地址:https://fast

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

默认设置后台启动: vi mongodb.cfg 创建配置文件,配置启动信息 dbpath=/root/mongodb/data logpath=/root/mongodb/log/mongodb.log fork=true storageEngine=mmapv1指定引擎 [[email protected] mongodb]# mongod -f mongodb.cfg  命令指定配置文件启动 ps -aux | grep mongod 查看一下mongod当前进程 [[email prot

mongoDB(三) mongoDB分片集群

mongoDB分片集群 介绍 解决数据分片,防止数据丢失生产环境需要擦用分片+副本集的部署方式 组成部分 route: 提供入口,不存储数据 configserver: 存储元数据信息,建议使用副本集 shardserver: 数据存储服务,存储真正数据, 也许要使用副本集 依赖关系 当数据插入时,需要从configsrv知道数据要插入哪个shardsrv分片 当用户获取数据时,需要从configsrv知道数据存储在哪个shardsrv分片 集群搭建 使用同一份mongodb二进制文件 修改对应

mongoDB (四) mongoDB认证

mongoDB认证 单节点认证 配置文件: authorization: enable [[email protected] ~]# vim /data/mongodb/27017/mongodb.conf systemLog: destination: file logAppend: true path: /data/mongodb/27017/mongodb.log storage: dbPath: /data/mongodb/27017/ journal: enabled: true pr