绑定内网和安全redis和mongo以及MQ
redis允许局域网访问其实很简单。网上一堆都不怎么靠谱。
特此记录一下。
可参考此篇
假设A B 两台机器
在B(ip:192.168.1.99)机器上修改redis配置文件
bind 192.168.1.99
- 1
关闭防火墙的情况下 局域网内的机器都能访问到该redis了。可以再设置一个密码。
requirepass youpassword
- 1
不再累述。
====================================
MongoDB限制内网访问的方法
自己的博客中用到了MongoDB作为数据存储,服务器用的是阿里云的,今天阿里云突然给我发信息说我的MongoDB数据库没有设置用户名密码。。我在自己的电脑上试着登陆了一下mongo client,直接连上了。。。。好吧,赶紧设置一下去。。
首先查看了一下MongoDB的文档,发现mongodb在启动服务后,在默认情况下,是允许所有IP访问的,而且没有密码。也就是说在任何电脑上,通过以下命令都是可以直接连接我的MongoDB的:
mongo 115.28.143.213
好吧,这个真的好危险,幸亏DB中没有什么隐私的数据。。于是我赶紧在网上搜索了一下MongoDB限制访问的方法,总结来说大概有以下三种方法:
一、限制访问IP和端口
MongoDB可以限制只允许某一特定IP来访问,只要在启动时加一个参数bind_ip即可,或者在/etc/mongodb.conf中添加bind_ip配置,如下:
# 方法一
mongod --bind_ip 127.0.0.1,10.0.133.14
# 方法二
在/etc/mongodb.conf文件中添加以下内容:
bind_ip = 127.0.0.1,10.0.133.14
这样之后,MongoDB服务端只有127.0.0.1和10.0.133.14这两个 IP 可以访问了。
MongoDB默认的监听端口是27017,为了安全起见,你可以修改这个监听端口,避免恶意的连接尝试。修改方法同样有两种,如下:
二、设置用户名和密码
MongoDB在默认的情况下启动时是没有用户名和密码的验证的,如果你需要使用密码验证功能,可以通过下面两种方式打开:
- # 启动mongodb时加上--auth
- sudo mongod --auth
- # 修改/etc/mongodb.conf配置文件
- # 将auth = True这一行的注释去掉,保存文件,重启mongodb即可
,而admin.system.users中保存了admin用户的信息。
MongoDB中的用户分为 超级用户(super user) 和普通的 数据库用户(database user) :超级用户存放在admin数据库中(在MongoDB的初始情况下,admin数据库默认是空的),这种用户拥有最大权限,可以对所有数据库进行任意操作;数据库用户则是存放在另外的数据库中,这种用户只能访问自己的数据库。所有的用户信息都存放在自己数据库的 system.users 表中。在MongoDB中创建用户非常简单,如下:
- mongo
- use admin
- db.addUser('super', '123456')
- # 创建普通用户
- mongo
- use test
- db.addUser('test_user', '123456')
以上的创建方式是 基于MongoDB 2.4.x版本 ,最新版的2.6.x中创建用户的方法会有所不同,具体的方法见MongoDB官方文档: add mongodb user
在MongoDB中,用户和权限有以下特性:
1. 数据库是由超级用户来创建的,一个数据库可以包含多个用户,一个用户只能在一个数据库下,不同数据库中的用户可以同名;
2. 如果在 admin 数据库中不存在用户,即使 mongod 启动时添加了 --auth参数,此时不进行任何认证还是可以做任何操作;
3. 在 admin 数据库创建的用户具有超级权限,可以对 MongoDB 系统内的任何数据库的数据对象进行操作;
4. 特定数据库比如 test1 下的用户 test_user1,不能够访问其他数据库 test2,但是可以访问本数据库下其他用户创建的数据;
5. 不同数据库中同名的用户不能够登录其他数据库。比如数据库 test1 和 test2 都有用户 test_user,以 test_user 登录 test1 后,不能够登录到 test2 进行数据库操作
三、使用Linux IPtables限制IP范围
这种方法和MongoDB本身没有关系,而是借用Linux的iptables功能,限制允许访问MongoDB端口的IP地址,具体的做法如下:
- # 拒绝所有访问27017端口的请求
- sudo iptables -I INPUT -p tcp --dport 27017 -j DROP
- # 允许本地访问mongo端口
- sudo iptables -I INPUT -s 127.0.0.1 -p tcp --dport 27017 -j ACCEPT
- sudo iptables-save
OK,这样就只允许通过本地访问MongoDB服务了
绑定内网和安全redis和mongo以及MQ的更多相关文章
- Azure 公网及内网ip绑定方法
此文章为我的云服务绑定情况,仅供参考,适用于已经创建vm,但开始未绑定vip,后期进行vip的绑定,注意:绑定ip会造成虚拟机暂时离线. -Location(vm所在地) 注意区分 北部和东部: Ch ...
- SSRF——weblogic vulhub 漏洞复现及攻击内网redis(一)(附批量检测脚本)
0X01 概述 SSRF(Server-Side Request Forgery, 服务端请求伪造)利用漏洞可以发起网络请求来攻击内网服务.利用SSRF能实现以下效果:1) 扫描内网(主 ...
- ssrf漏洞利用(内网探测、打redis)
摘要:存在ssrf漏洞的站点主要利用四个协议,分别是http.file.gopher.dict协议. file协议拿来进行本地文件的读取,http协议拿来进行内网的ip扫描.端口探测,如果探测到637 ...
- 解决外网与内网或内网之间的通信,NAT穿透
在网络编码中会发现程序在局域网中是可以适用的,但是在外网与内网之间和内网与内网之间就不可行.问题就在于NAT.首先介绍下NAT. NAT的作用NAT(Network Address Translato ...
- 解决网络通信中外网和内网之间的通信问题(NAT转换)
本文原址 http://www.cnblogs.com/lidabo/p/3828846.html 在网络编码中会发现程序在局域网中是可以适用的,但是在外网与内网之间和内网与内网之间就不可行.问题就在 ...
- C#:使用UPnP来穿透NAT使内网接口对外网可见
在写完Object 672后,软件的一个致命问题暴露出来,如果服务器和客户端都在内网环境下,即双方都通过NAT来接触外网,那么此时客户端是无法直接和服务器交流的. 解决方案可以是: 1:把服务器部署在 ...
- php+redis实现多台服务器内网存储session并读取
大型网站由于大并发的问题会导致系统出现诡异的崩溃性问题这着实让人很是蛋疼,首先考虑的就是负载均衡服务器来处理这个,当然数据库的性能也是非常非常重要的,今天就说下在负载均衡情况下对于session这个问 ...
- Linux通过端口转发来访问内网服务(端口转发访问阿里云Redis数据库等服务)
# 安装rinetd wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz& ...
- linux下搭建redis内网端口映射工具-rinetd
最近在工作中使用到了redis缓存,用来提某些业务场景的计算速度和某些情况下的操作频率限制,客户端工具使用了redisDesktopmanager来管理,在本机操作测试的时候,是没有问题的.但是将系统 ...
随机推荐
- 怎样更爽地看PDF杂志
下载了一些PDF的杂志,想着要是全屏双页显示,应该是很爽的,但是,下载了应该foxit reader,还是遇到一些问题: 1.全屏:F11即可 2.全屏后不双页:在选项中,"全屏" ...
- [88221008]调用新下单接口失败,result:162020004,resInfo
[88221008]调用新下单接口失败,result:162020004,resInfo
- 自用封装javascript函数
(function(){ var JHRZ_IMG_Arr = JHRZ_IMG_Arr || {}; JHRZ_IMG_Arr.loading = ["/static/images/loa ...
- 理解GC
首先看日志内容: [Full GC 23.32: [ParNew: 2356K->2310K(3251K), 0.000288sec] [Full GC 是名称. [ParNew:是表示收集器 ...
- es5 - array - concat
/** * 描述:数组元素合并 * 使用:arr1.concat(arr2) * 参数:arr1.concat(arr2,arr3,arr...) * 说明: * 该concat方法创建一个新数组,该 ...
- vue - 详细路由配置
1. 路由可配置多个 2. 路由包含嵌套子路由 3. 路由可以别名 4. 路由单独钩子 5. vue2.6.0(可以直接匹配大小写) export default new Router({ mode: ...
- jQuery如何获得select选中的值?input单选radio选中的值
jQuery取得select选中的值 本来以为jQuery("#select1").val();是取得选中的值, 那么jQuery("#select1").te ...
- 递归方式 DOM 解析(parse) XML
friends.xml <span style="font-size:16px;"><?xml version="1.0" encoding= ...
- react 调用项目中的 .html 文件
(1)将 html 文件 放于 public 文件夹下 (2)window.open('about:blank').location.href="http://localhost:3000/ ...
- 【LeetCode】114. Flatten Binary Tree to Linked List
Flatten Binary Tree to Linked List Given a binary tree, flatten it to a linked list in-place. For ex ...