绑定内网和安全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来管理,在本机操作测试的时候,是没有问题的.但是将系统 ...
随机推荐
- 配置文件格式用哪个?文件夹+纯文本文件,XML,SQLite
稍具规模的软件都会须要一个配置文件来支持软件的执行.眼下常见的配置文件格式有纯文本.XML.SQLite.自己定义二进制格式,怎样进行选择呢? 1 纯文本--永远不会失效的文件格式 文本化是传统Uni ...
- POI生成EXCEL文件(字体、样式、单元格合并、计算公式)
创建一个封装类: package com.jason.excel; import java.io.FileNotFoundException; import java.io.FileOutputStr ...
- Python 小程序,对文件操作及其它
以下是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等.比方说,从文件里读取一行数据.分别存放于列表中,再对列表进行操作.如去掉里面的反复项.排序等操作. 常见对文件里行 ...
- Android--全局变量 很好很强大
As you know, each Activity is also a Context, which is information about its execution environment i ...
- Android4.0源码Launcher启动流程分析【android源码Launcher系列一】
最近研究ICS4.0的Launcher,发现4.0和2.3有稍微点区别,但是区别不是特别大,所以我就先整理一下Launcher启动的大致流程. Launcher其实是贯彻于手机的整个系统的,时时刻刻都 ...
- Linux命令-权限管理命令:umask
umask -S 显示用户创建目录或文件时的默认权限 mkdir shuaige 创建一个shuaige目录 ls -ld shuaige 查看shuaige目录当前的权限(和上面默认的权限是一样的) ...
- 转:Mosquitto用户认证配置
转自:https://blog.csdn.net/u012377333/article/details/69397124?utm_source=blogxgwz1 前言:基于Mosquitto服务器已 ...
- python 读取文件时报错: UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 127: illegal multibyte sequence
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 127: illegal multibyte sequence p ...
- Facebook Oauth2.0 API调用方法
这些天搞了下Facebook API的东东,在官方网站下弄了一些接口,下面简单的把facebook的调用流程以及常用接口书序一下 :-) 当然在使用facebook api之前要有facebook账 ...
- linux Nginx 日志脚本
这篇文章主要介绍了nginx日志切割脚本.nginx日志分析脚本等,需要的朋友可以参考下. 参考自:http://www.jbxue.com/article/13927.html 任务计划 cront ...