綁定內網和安全redis和mongo以及MQ

redis容許局域網訪問其實很簡單。網上一堆都不怎麼靠譜。 
特此記錄一下。 
參考此篇html

假設A B 兩臺機器 
在B(ip:192.168.1.99)機器上修改redis配置文件redis

bind 192.168.1.99
  • 1

關閉防火牆的狀況下 局域網內的機器都能訪問到該redis了。能夠再設置一個密碼。mongodb

requirepass  youpassword
  • 1

再也不累述。數據庫

 

====================================安全

 

MongoDB限制內網訪問的方法


本身的博客中用到了MongoDB做爲數據存儲,服務器用的是阿里雲的,今天阿里雲忽然給我發信息說個人MongoDB數據庫沒有設置用戶名密碼。。我在本身的電腦上試着登錄了一下mongo client,直接連上了。。。。好吧,趕忙設置一下去。。bash

首先查看了一下MongoDB的文檔,發現mongodb在啓動服務後,在默認狀況下,是容許全部IP訪問的,並且沒有密碼。也就是說在任何電腦上,經過如下命令都是能夠直接鏈接個人MongoDB的:服務器

mongo 115.28.143.213
好吧,這個真的好危險,幸好DB中沒有什麼隱私的數據。。因而我趕忙在網上搜索了一下MongoDB限制訪問的方法,總結來講大概有如下三種方法:tcp

 

1、限制訪問IP和端口
MongoDB能夠限制只容許某一特定IP來訪問,只要在啓動時加一個參數bind_ip便可,或者在/etc/mongodb.conf中添加bind_ip配置,以下:ui

# 方法一
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,爲了安全起見,你能夠修改這個監聽端口,避免惡意的鏈接嘗試。修改方法一樣有兩種,以下:

 

2、設置用戶名和密碼

MongoDB在默認的狀況下啓動時是沒有用戶名和密碼的驗證的,若是你須要使用密碼驗證功能,能夠經過下面兩種方式打開:

  1.  
    # 啓動mongodb時加上 --auth
  2.  
    su do 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 進行數據庫操做

3、使用Linux IPtables限制IP範圍

這種方法和MongoDB自己沒有關係,而是借用Linux的iptables功能,限制容許訪問MongoDB端口的IP地址,具體的作法以下:

  1.  
    # 拒絕全部訪問27017端口的請求
  2.  
    su do 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服務了

相關文章
相關標籤/搜索