让Redis和MongoDB安全点

2017 年 8 月 31 日 大数据技术

来自:静觅 » Scrapy分布式的前篇–让redis和MongoDB安全点

链接:http://cuiqingcai.com/4020.html(点击尾部阅读原文前往)


博文开始之前 我们先来看篇文章:

http://www.youxia.org/daily-news-attack-extortion-does-not-delay-a-week-had-27000-mongodb-database.html


关于年前MongoDB由于默认可匿名访问 而导致了一大堆的管理员掉坑里 预估中国有十万数据库被坑。

这是继Redis之后又一个小白式的错误······(Redis也是默认匿名访问)


先写写Redis的一些安全设置:

安装Redis: 请参考这儿;https://redis.io/download

$ wget http://download.redis.io/releases/redis-3.2.7.tar.gz  
$ tar xzf redis-3.2.7.tar.gz   $ cd redis-3.2.7  
$ make  
$ src/redis-server

ps :如果以上有报错,可能是你的服务器没有安装依赖:

CentOS7:

yum install -y gcc-c++ tcl

只写关于Linux的、Windows的很简单,配置文件通用:


安装完成后


在目录 redis-3.2.7中有一个redis.conf的配置文件,按照默认习惯我们将其复制到/etc目录下:

[root@MyCloudServer ~]# cp redis-3.2.7/redis.conf /etc

PS:请使用复制(cp)而不要使用移动(mv);毕竟你要弄错了还可以再拷贝一份儿过去用不是?

 

使用vim编辑刚刚拷贝的redis.conf

vim /etc/redis.conf

PS:使用vim需要先安装:

CentOS7:

yum  install vim

我们需要注意以下几项:


1、注释掉47行的bind 127.0.0.1(这个意思是限制为只能 127.0.0.1 也就是本机登录)PS:个人更建议 将你需要连接Redis数据库的IP地址填写在此处,而不是注释掉。这样做会比直接注释掉更加安全。

2、更改第84行port  6379 为你需要的端口号(这是Redis的默认监听端口)PS:个人建议务必更改

3、更改第128行 daemonize no 为 daemonize yes(这是让Redis后台运行) PS:个人建议更改

4、取消第 480  # requirepass foobared 的#注释符(这是redis的访问密码) 并更改foobared为你需要的密码 比如 我需们需要密码为123456 则改为  requirepass 123456。

PS:密码不可过长否则Python的redis客户端无法连接


以上配置文件更改完毕,需要在防火墙放行:

firewall-cmd --zone=public --add-port=xxxx/tcp --permanent

请将xxxx更改为你自己的redis端口。


重启防火墙生效:

systemctl restart firewalld.service

指定配置文件启动redis:

[root@MyCloudServer ~]# redis-3.2.7/src/redis-server /etc/redis.conf

加入到开机启动:

echo "/root/redis-3.2.6/src/redis-server /etc/redis.conf" >> /etc/rc.local

一个较为安全的redis配置完毕。


redis的桌面客户端我推荐:RedisDesktopManager

去下面这个地址下载就不需要捐助啦!


https://github.com/uglide/RedisDesktopManager/releases

当然还有一些其他配置、我们用不到也就不写啦!


MongoDB:

这次MongoDB挺惨啊!由于默认匿名访问、下面给MongoDB配置一点安全措施:


安装MongoDB:

以CentOS7为例其余发行版请参考官方文档:https://docs.mongodb.com/manual/administrat

ion/install-on-linux/


1、建一个yum源:

[root@MyCloudServer ~]# vim /etc/yum.repos.d/mongodb-org-3.4.repo

写入以下内容:

[mongodb-org-3.4]   name=MongoDB Repository   baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/  
gpgcheck=1   enabled=1   gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

2、安装mongoDB以及相关工具:

sudo yum install -y mongodb-org

3、启动MongoDB:

sudo service mongod start

PS:如果你的服务器在使用SELinux的话,你需要配置SElinux允许MongoDB启动,当然更简单的方法是关掉SElinux。

关闭SElinux:

<span style="color: #ff0000">[root@MyCloudServer ~]# vim /etc/selinux/config </span>

将第7行设置为:SELINUX=disabled


4、停止MongoDB:

sudo service mongod stop

上面安装完按成了MongoDB下面要步入正题了:


1、备份和更改配置文件:

[root@MyCloudServer ~]# cp /etc/mongod.conf  
/etc/mongod_backup.conf  
[root@MyCloudServer ~]# vim /etc/mongod.conf

更改第28行 prot 2701为你需要更改的端口(这是MongoDB默认的监听端口)

更改第29行 bindIp: 127.0.0.1为0.0.0.0(MongoDB默认只能本地访问)PS:个人建议此处添加你需要连接MongoDB服务器的IP地址、而不是改成0.0.0.0。这样做会更安全

启动MongoDB:

mongod --config /etc/mongod.conf

意思是:指定/etc/mongod.conf为配置文件启动MongoDB

好了、配置文件更改完毕,现在可以外网访问我们的MongoDB了!不需要用户名!匿名的!现在我们进行下一步设置。


因为MongoDB默认是匿名访问的、我们需要开启用户认证。

我估摸着很多哥们儿和我一样没补全 啥都不会干、所以直接在服务器上改就不太现实了,需要借助于第三方客户端。我个人推荐:mongobooster 官方地址:https://mongobooster.com/

收费版免费版功能一样 不用在意:


首先我们需要连上MongoDB服务器(别忘了防火墙放行你使用的端口啊!!!)



连上之后大慨是这个样子:


按下Ctrl+T 打开shell界面输入一下内容:

use admin   
db.createUser(     
{
       user: "你的用户名",
       pwd: "你的密码",
       roles: [ {role:"userAdminAnyDatabase", db:"admin"} ]
              /* All build-in Roles
       Database User Roles: read|readWrite
              数据库用户角色:读|读写
                    Database Admion Roles: dbAdmin|dbOwner|userAdmin       数据库管理角色:数据库管理员|数据库所有者|用户管理       Cluster Admin Roles: clusterAdmin|clusterManager|clusterMonitor|hostManager       集群管理角色:       Backup and Restoration Roles: backup|restore       All-Database Roles: readAnyDatabase|readWriteAnyDatabase|userAdminAnyDatabase|dbAdminAnyDatabase       所有数据库角色:读所有数据库|读写所有数据库|所有数据库的用户管理员|所有数据库的管理员       Superuser Roles: root */
     }   )

再点击run运行即可 会在信息栏中提示True 现在断开数据库连接、再打开会发现多出一个admin的数据库。



上面的都做了些什么呢?


首先我们新建了一个admin的数据库(MongoDB的原则哦、有则切换没有就创建)

然后在admin数据中创建了一个用户 和 密码 赋予了这个用户管理admin数据库 所有数据库用户的权限。


至于有那些权限 在注释中都有写哦!常用的我估摸着写了个对应意思·········

OK!搞定这一部分 就可以开启MongoDB的用户认证了!

怎么开启呢?首先关闭正在运行的MongoDB:

ps -e | grep mongod

上面的命令会找出MongoDB的进程号、然后运行kill 进程号即可!

开启MongoDB:

mongod --auth --config /etc/mongod.conf

意思是:以认证模式 指定/etc/mongod.conf启动 MongoDB。

加入开机启动:

echo "mongod --auth --config /etc/mongod.conf" >> /etc/rc.local

好了!现在MongoDB也配置完成 啦!


现在如果你需要新建一个用户让其使用数据库 你该怎么做呢?

像下面这样;首先你需要连接到admin数据库!


在选项Basic中照常配置:


需要额外设置的是Authentication选项:


连接成功后大概是这个样子:

需要注意的一点是:这个用户只能看到所有的数据库和用户、并不能看到数据!因为我们创建的时候只给了所有数据库用户管理的权限哦!


然后打开shell界面按照创建admin的模板执行即可:

use 想要创建的数据库   
db.createUser(
     {
             user: "想要使用的用户名",
             pwd: "想要使用的密码",       
             roles: [ {role:"赋予什么样的权限", db:"创建的数据库"} ]
                   /* All build-in Roles
       Database User Roles: read|readWrite
      数据库用户角色:读|读写
      Database Admion Roles: dbAdmin|dbOwner|userAdmin
       数据库管理角色:数据库管理员|数据库所有者|用户管理
       Cluster Admin Roles: clusterAdmin|clusterManager|clusterMonitor|hostManager
      集群管理角色:
       Backup and Restoration Roles: backup|restore
       All-Database Roles: readAnyDatabase|readWriteAnyDatabase|userAdminAnyDatabase|dbAdminAnyDatabase
       所有数据库角色:读所有数据库|读写所有数据库|所有数据库的用户管理员|所有数据库的管理员
              Superuser Roles: root */

                        }   )
                           创建完成后、就可

创建完成后、就可以用创建好的用户名和密码去链接有权限的数据库啦!!是不是So Easy!!!


其实吧 还是 bindIp安全  哈哈哈!


以上完毕!!



●本文编号398,以后想阅读这篇文章直接输入398即可

●输入m获取到文章目录

推荐↓↓↓
 

数据库开发

更多推荐18个技术类微信公众号

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。

登录查看更多
0

相关内容

Redis 是一个使用 C 语言写成的,开源的 key-value 数据库。
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
Stabilizing Transformers for Reinforcement Learning
专知会员服务
59+阅读 · 2019年10月17日
msf实现linux shell反弹
黑白之道
49+阅读 · 2019年8月16日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
PHP使用Redis实现订阅发布与批量发送短信
安全优佳
7+阅读 · 2019年5月5日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
抖音爬虫
专知
3+阅读 · 2019年2月11日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
浅谈浏览器 http 的缓存机制
前端大全
6+阅读 · 2018年1月21日
Neo4j 和图数据库起步
Linux中国
8+阅读 · 2017年12月20日
Learning to See Through Obstructions
Arxiv
7+阅读 · 2020年4月2日
Arxiv
35+阅读 · 2019年11月7日
Conceptualize and Infer User Needs in E-commerce
Arxiv
3+阅读 · 2019年10月8日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
Stabilizing Transformers for Reinforcement Learning
专知会员服务
59+阅读 · 2019年10月17日
相关资讯
msf实现linux shell反弹
黑白之道
49+阅读 · 2019年8月16日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
PHP使用Redis实现订阅发布与批量发送短信
安全优佳
7+阅读 · 2019年5月5日
百度开源项目OpenRASP快速上手指南
黑客技术与网络安全
5+阅读 · 2019年2月12日
抖音爬虫
专知
3+阅读 · 2019年2月11日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
浅谈浏览器 http 的缓存机制
前端大全
6+阅读 · 2018年1月21日
Neo4j 和图数据库起步
Linux中国
8+阅读 · 2017年12月20日
Top
微信扫码咨询专知VIP会员