MongoDB中怎么實(shí)現(xiàn)安全管理,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、做網(wǎng)站、潮州網(wǎng)絡(luò)推廣、微信平臺(tái)小程序開發(fā)、潮州網(wǎng)絡(luò)營(yíng)銷、潮州企業(yè)策劃、潮州品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供潮州建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
方式一 iptables設(shè)置
Linux防火墻設(shè)置只有應(yīng)用程序所在的服務(wù)器ip才能訪問MongoDB所在的服務(wù)器。
Linux禁止某個(gè)IP地址訪問其實(shí)非常的簡(jiǎn)單,最常用的辦法就是使用iptalbes來操作。這個(gè)方法跟MongoDB本身沒有關(guān)系,而是借用Linux的iptalbes功能,限制允許訪問MongoDB端口的ip地址,具體做法(ip和端口需要讀者自己對(duì)應(yīng))如下:
# 拒絕所有訪問27017端口的請(qǐng)求
sudo iptables -I INPUT -p tcp --dport 27017 -j DROP
# 允許192.168.1.1服務(wù)器訪問mongo端口
sudo iptables -I INPUT -s 192.168.1.1 -p tcp --dport 27017 -j ACCEPT
sudo iptables-save
或者
vi /etc/sysconfig/iptables
把
iptables -I INPUT -p tcp --dport 27017 -j DROP
iptables -I INPUT -s 192.168.1.1 -p tcp --dport 27017 -j ACCEPT
這兩句加在
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
的前面。
然后重啟防火墻
service iptables restart
查看防火墻狀態(tài)
service iptables status
這樣就只允許192.168.1.1服務(wù)器訪問MongoDB服務(wù)了。
注意命令的順序不能反了。如果不只限制一個(gè)端口而是限制所有端口的訪問把--dport 27017去掉即可。
方式二 hosts.allow和hosts.deny
Linux中的配置文件/etc/hosts.allow控制可以訪問本機(jī)的IP地址,/etc/hosts.deny控制禁止訪問本機(jī)的IP。執(zhí)行的順序是先deny再allow,所以如果兩個(gè)文件的配置有沖突,以/etc/hosts.allow為準(zhǔn)。
/etc/hosts.allow和/etc/hosts.deny兩個(gè)文件是控制遠(yuǎn)程訪問設(shè)置的,通過它們可以允許或者拒絕某個(gè)ip或者ip段的客戶訪問linux的某項(xiàng)服務(wù)。服務(wù)用進(jìn)程名來識(shí)別,比如MongoDB的服務(wù)進(jìn)程名是mongod,我們限制所有ip訪問,除非ip是192.168.1.1。
編輯hosts.deny:
vi /etc/hosts.deny
拒絕一切ip訪問MongoDB服務(wù)輸入內(nèi)容:
# no mongod
mongod:all:deny
Esc輸入:wq保存離開。
mongod:all:deny表示拒絕所有ip訪問mongod服務(wù)。:deny可以省略寫成mongod:all。
編輯hosts.allow:
vi /etc/hosts.allow
允許192.168.1.1訪問MongoDB服務(wù)輸入內(nèi)容:
mongod:192.168.1.1
Esc輸入:wq保存離開。
修改完后重啟攔截器讓剛才的更改生效:
service xinetd restart
經(jīng)過設(shè)置之后需要進(jìn)行校驗(yàn),測(cè)試限制是否生效,如果是比較重要的數(shù)據(jù),不滿足于限制ip訪問,那就把用戶認(rèn)證加上,這個(gè)需要讀者自己權(quán)衡。
對(duì)于安全度要求高的數(shù)據(jù)庫,還可以啟用SSL。
如果你沒有使用SSL,那么你在MongoDB客戶端和MongoDB服務(wù)器之間的傳輸?shù)臄?shù)據(jù)就是明文的,容易受到竊聽、篡改和“中間人”攻擊。如果你是通過公網(wǎng)這樣的非安全網(wǎng)絡(luò)連接到MongoDB服務(wù)器,那么啟用SSL就顯得非常重要。
詳細(xì)的SSL配置可以查看官網(wǎng):
https://docs.mongodb.com/manual/tutorial/configure-ssl/ 。
方式三 不要將MongoDB與其他服務(wù)部署到同一機(jī)器上
請(qǐng)?jiān)趩?dòng)MongoDB時(shí)關(guān)閉NUMA功能,按照提示在啟動(dòng)命令前加上 numactl --interleave選項(xiàng),啟動(dòng)時(shí)使用命令如下:
numactl --interleave=all mongod --dbpath=/data/db/ --fork --logpath=/data/logs/db.log
如果系統(tǒng)中沒有numactl命令,使用yum安裝
yum install -y numactl
再使用命令
echo 0 > /proc/sys/vm/zone_reclaim_mode
vi /proc/sys/vm/zone_reclaim_mode
sysctl -w vm.zone_reclaim_mode=0
關(guān)于MongoDB中怎么實(shí)現(xiàn)安全管理問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。