高性能Redis數(shù)據(jù)庫安全手冊(1)
來源:易賢網(wǎng) 閱讀:1515 次 日期:2015-08-20 14:56:32
溫馨提示:易賢網(wǎng)小編為您整理了“高性能Redis數(shù)據(jù)庫安全手冊(1)”,方便廣大網(wǎng)友查閱!

Redis是一個(gè)高性能的key-value數(shù)據(jù)庫,這兩年可謂火的不行。而Redis的流行也帶來一系列安全問題,不少攻擊者都通過Redis發(fā)起攻擊。本文將講解這方面的內(nèi)容,包括Redis提供的訪問控制和代碼安全問題,以及可以由惡意輸入和其他類似的手段觸發(fā)的攻擊。

Redis數(shù)據(jù)庫安全手冊

Redis通用安全模塊

Redis被設(shè)計(jì)成只能由可信環(huán)境的可信機(jī)器訪問。這意味著將它直接暴露在互聯(lián)網(wǎng)或者其他可以由不可信機(jī)器通過TCP或者UNIX SCOKET直接連接的環(huán)境中。

例如,在通常的WEB應(yīng)用程序使用Redis作為數(shù)據(jù)庫,cache,或者消息系統(tǒng)。WEB應(yīng)用程序的客戶端將查詢Redis生成頁面或執(zhí)行請求或由用戶觸發(fā)。在這個(gè)例子中,WEB應(yīng)用鏈接了Redis和不可信的客戶端。

這是一個(gè)特定的例子,但是一般來說,不授信的Redis鏈接應(yīng)該被監(jiān)控,驗(yàn)證用戶輸入,再決定執(zhí)行什么樣的操作。因?yàn)椋琑edis追求的不是最大的安全性,而是簡潔與高效。

網(wǎng)絡(luò)安全

Redis鏈接應(yīng)該對每個(gè)受信的客戶端開放。所以,服務(wù)器運(yùn)行的Redis應(yīng)該只被使用Redis應(yīng)用的計(jì)算機(jī)連接。在大多數(shù)直接暴露在互聯(lián)網(wǎng)的單個(gè)計(jì)算機(jī),例如,虛擬化的LINUX實(shí)例(LINODE,EC2,…..)

Redis端口應(yīng)該被防火墻阻止來自外部的訪問。客戶端應(yīng)該仍然能通過服務(wù)器的本地回環(huán)接口訪問Redis。注意,通過在Redis.CONF添加下面一句就可以綁定本地回環(huán),阻止外網(wǎng)訪問了。

bind 127.0.0.1

因?yàn)镽edis的特性,沒有對外網(wǎng)訪問進(jìn)行限制會是一個(gè)很重大的安全問題。例如一條簡單的FLUSHALL命令就能被攻擊者用來刪除整個(gè)數(shù)據(jù)設(shè)置。

身份驗(yàn)證機(jī)制

如果你們不想使用訪問限制的話,Redis提供了一個(gè)身份驗(yàn)證功能,可以通過編輯Redis.CONF文件來實(shí)現(xiàn)它。

如果開啟了身份驗(yàn)證功能,Redis將拒絕所有的未身份驗(yàn)證的客戶端的所有操作??蛻舳丝梢园l(fā)送AUTH命令+密碼來驗(yàn)證自己。

密碼是由系統(tǒng)管理員在Redis。CONFIG文件中設(shè)置的明文密碼,為了防止暴力破解攻擊他應(yīng)該足夠長。原因有兩個(gè):

Redis的執(zhí)行效率非???,外部設(shè)備每秒可以測試相當(dāng)數(shù)量的密碼

Redis的密碼是存儲在Redis.conf文件和內(nèi)部客戶端的配置中的,因此不需要管理員記住。所以可以使用相當(dāng)長的密碼。

身份驗(yàn)證的目標(biāo)是提供第二層的安全保障。這樣當(dāng)防火墻或者其他第一層的系統(tǒng)安全設(shè)置失效的話,一個(gè)外部設(shè)備在沒有密碼的情況下仍然不能訪問redia。

AUTH命令像其他的redia命令一樣是不加密傳輸?shù)?,所以他不能阻止攻擊者在?nèi)網(wǎng)的竊聽。

數(shù)據(jù)加密支持

Redis不支持加密。為了受信的客戶端可以以加密形式通過互聯(lián)網(wǎng)可以采用加密協(xié)議(SSL)傳輸數(shù)據(jù)。

禁用特定的命令

禁用Redis的一些命令是可行的,或者將他們改名。這樣來自客戶端的請求就只能執(zhí)行有限的命令。

例如,虛擬的服務(wù)器提供商可能提供托管的Redis服務(wù)。在這種情況下,普通用戶不應(yīng)該能夠調(diào)用Redis的配置命令來修改該配置實(shí)例,但提供和刪除服務(wù)的系統(tǒng)能夠有這樣的權(quán)限。

在這種情況下,從命令表中重命名命令或者完全隱藏命令是可能的。這個(gè)功能可用在Redis.conf配置文件里做為一個(gè)聲明。例如:

rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

在上面的例子里,CONFIG命令被更名為一個(gè)更為陌生的名字。它也完全可以被重命名成空字符串,例如:

rename-command CONFIG ""

由精密的輸入觸發(fā)的攻擊

還有一類攻擊,攻擊者即使沒有獲得數(shù)據(jù)庫的訪問權(quán)限也可以從外部發(fā)起攻擊。一個(gè)此類攻擊的例子是通過Redis的內(nèi)部函數(shù)向Redis里插入數(shù)據(jù)。

攻擊者可以通過一個(gè)web表單將一組字符串提交到一個(gè)hash的同一個(gè)堆棧,引起時(shí)間復(fù)雜度從O(1)到O(n) ,消耗更多的CPU資源,最終導(dǎo)致DOS攻擊。為了防止這種特定的攻擊方式,Redis為每個(gè)執(zhí)行請求隨機(jī)分配hash。

Redis使用快速排序算法來執(zhí)行SORT命令。目前,這個(gè)算法不是隨機(jī)的,所以通過對輸入的精細(xì)控制可能觸發(fā)命令的二次執(zhí)行。

字符串轉(zhuǎn)義和NOSQL注入

Redis協(xié)議里面沒有字符串轉(zhuǎn)義相關(guān)的內(nèi)容,所以在通常情況下是不存在注入的。Redis協(xié)議使用的是前綴長度的字符串,完全二進(jìn)制,保證安全性。LUA腳本執(zhí)行EVAL和EVALSHA命令時(shí)遵循相同的規(guī)則,因此這些命令也是安全的。

然而這回事一個(gè)非常奇怪的用例,應(yīng)用程序應(yīng)該避免使用LUA腳本獲取來自非信任源的字符串。

代碼安全性

在經(jīng)典的Redis 設(shè)置里,客戶端可以執(zhí)行所有的命令集,但是獲得的用例應(yīng)該永遠(yuǎn)不能導(dǎo)致有控制Redis所在系統(tǒng)的能力。內(nèi)在的,Redis使用眾所周知的安全代碼規(guī)范來防止緩沖區(qū)溢出,格式錯(cuò)誤和其它內(nèi)存損壞問題。然而,客戶端擁有控制使用服務(wù)器配置命令CONFIG的能力使得其能夠改變程序的工作目錄和轉(zhuǎn)儲文件的名稱。這允許客戶端寫RDB Redis在隨機(jī)路徑寫文件。這是一個(gè)安全問題,容易導(dǎo)致客戶端有Redis運(yùn)行非法代碼的能力。

Redis不需要root權(quán)限運(yùn)行,也不建議以root權(quán)限運(yùn)行。Redis的作者正在調(diào)查添加一條新的配置參數(shù)來防止CONFIG SET/GET 目錄和其他類似的運(yùn)行時(shí)配置的指令的可能性。這會阻止客戶端強(qiáng)制服務(wù)器在任意位置寫Redis轉(zhuǎn)儲文件。

GPG key

安全研究人員可以在Github提交問題,當(dāng)你感覺這個(gè)安全問題真的很重要,在文檔的末尾加上GPG標(biāo)識。

-----BEGIN PGP PUBLIC KEY BLOCK-----

Version: GnuPG v1.4.13 (Darwin)

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

vI1sAEeV6ZM/uc4CDI3E2TxEbQ==

Key fingerprint

pub 4096R/0E5C88D6 2013-11-07 [expires: 2063-10-26]

Key fingerprint = E5F3 DA80 35F0 2EC1 47F9 020F 3181 3728 0E5C 88D6

uid Salvatore Sanfilippo <antirez@gmail.com>

sub 4096R/3B34D15F 2013-11-07 [expires: 2063-10-26]

更多信息請查看IT技術(shù)專欄

更多信息請查看數(shù)據(jù)庫
易賢網(wǎng)手機(jī)網(wǎng)站地址:高性能Redis數(shù)據(jù)庫安全手冊(1)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)