zoukankan      html  css  js  c++  java
  • 绑定内网和安全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在默认的情况下启动时是没有用户名和密码的验证的,如果你需要使用密码验证功能,可以通过下面两种方式打开:

    1.  
      # 启动mongodb时加上--auth
    2.  
      sudo mongod --auth
    3.  
       
    4.  
      # 修改/etc/mongodb.conf配置文件
    5.  
      # 将auth = True这一行的注释去掉,保存文件,重启mongodb即可

    ,而admin.system.users中保存了admin用户的信息。

    MongoDB中的用户分为 超级用户(super user) 和普通的 数据库用户(database user) :超级用户存放在admin数据库中(在MongoDB的初始情况下,admin数据库默认是空的),这种用户拥有最大权限,可以对所有数据库进行任意操作;数据库用户则是存放在另外的数据库中,这种用户只能访问自己的数据库。所有的用户信息都存放在自己数据库的 system.users 表中。在MongoDB中创建用户非常简单,如下:

    1. mongo
    2.  
      use admin
    3.  
      db.addUser('super', '123456')
    4.  
       
    5.  
      # 创建普通用户
    6.  
      mongo
    7.  
      use test
    8.  
      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地址,具体的做法如下:

    1.  
      # 拒绝所有访问27017端口的请求
    2.  
      sudo iptables -I INPUT -p tcp --dport 27017 -j DROP
    3.  
       
    4.  
      # 允许本地访问mongo端口
    5.  
      sudo iptables -I INPUT -s 127.0.0.1 -p tcp --dport 27017 -j ACCEPT
    6.  
       
    7.  sudo iptables-save

    OK,这样就只允许通过本地访问MongoDB服务了

  • 相关阅读:
    WCF服务编程 读书笔记——第1章 WCF基础(2)
    WCF服务编程 读书笔记——第1章 WCF基础(1)
    设计模式17:Iterator 迭代器模式(行为型模式)
    设计模式16:Mediator 中介者模式(行为型模式)
    设计模式23:Visitor 访问者模式(行为型模式)
    设计模式22:Strategy 策略模式(行为型模式)
    设计模式21:State 状态模式(行为型模式)
    Python常用库之二:Pandas
    Python常用库之一:Numpy
    TensorFlow基础(三)激活函数
  • 原文地址:https://www.cnblogs.com/gaoyuechen/p/9237858.html
Copyright © 2011-2022 走看看