自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

守護(hù) Redis 安全的幾個(gè)策略,你了解過幾個(gè)呢?

新聞 Redis
Redis 被設(shè)計(jì)成僅有可信環(huán)境下的可信用戶才可以訪問。這意味著將 Redis 實(shí)例直接暴露在網(wǎng)絡(luò)上或者讓不可信用戶可以直接訪問 Redi s的 tcp 端口或 Unix 套接字,是不安全的。

 Redis常規(guī)安全模式

Redis 被設(shè)計(jì)成僅有可信環(huán)境下的可信用戶才可以訪問。這意味著將 Redis 實(shí)例直接暴露在網(wǎng)絡(luò)上或者讓不可信用戶可以直接訪問 Redi s的 tcp 端口或 Unix 套接字,是不安全的。 

[[270264]]

正常情況下,使用Redis的web應(yīng)用程序是將Redis作為數(shù)據(jù)庫,緩存,消息系統(tǒng),網(wǎng)站的前端用戶將會(huì)查詢Redis來生成頁面,或者執(zhí)行所請(qǐng)求的操作,或者被web應(yīng)用程序用戶所觸發(fā)。這種情況下,web應(yīng)用程序需要對(duì)不可信的用戶(訪問web應(yīng)用程序的用戶瀏覽器)訪問Redis進(jìn)行處理。這是個(gè)特殊的例子,但是,正常情況下,對(duì) Redis 的非法訪問需要通過實(shí)現(xiàn) ACLs,驗(yàn)證用戶輸入和決定 Redis 實(shí)例上可以執(zhí)行哪些操作這些方式來控制。

總而言之,Redis 并沒有最大地去優(yōu)化安全方面,而是盡最大可能去優(yōu)化高性能和易用性。

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

僅有可信的網(wǎng)絡(luò)用戶才可以訪問 Redis 的端口,因此運(yùn)行 Redis 的服務(wù)器應(yīng)該只能被用 Redis 實(shí)現(xiàn)的應(yīng)用程序的計(jì)算機(jī)直接訪問。

一般情況下一臺(tái)直接暴露在 Internet 的計(jì)算機(jī),例如一個(gè)虛擬化 Linux 實(shí)例(Linode, EC2,…),防火墻應(yīng)該防止外部用戶訪問它的redis端口。用戶仍可以通過本地接口來訪問 Redis。

記住在redis.conf 文件中增加下面這一行配置就可以把 Redis 綁定在單個(gè)接口上。

  1. bind 127.0.0.1 

不禁止外部訪問 Redis 的話,將會(huì)產(chǎn)生非常嚴(yán)重的后果。比如,一個(gè) FLUSHALL 操作就可以當(dāng)做外部攻擊來刪除 Redis 上的所有數(shù)據(jù)。

認(rèn)證的特性

雖然 Redis 沒有嘗試去實(shí)現(xiàn)訪問控制,但是提供了一個(gè)輕量級(jí)的認(rèn)證方式,可以編輯redis.conf 文件來啟用。當(dāng)認(rèn)證授權(quán)方式啟用后,Redis 將會(huì)拒絕來自沒有認(rèn)證的用戶的任何查詢。一個(gè)客戶端可以通過發(fā)送 AUTH 命令并帶上密碼來給自己授權(quán)。

這個(gè)密碼由系統(tǒng)管理員在redis.conf 文件里面用明文設(shè)置,它需要足夠長(zhǎng)以應(yīng)對(duì)暴力攻擊,這樣子設(shè)置有以下兩個(gè)原因:

  1. redis.conf 

但同時(shí)密碼控制也會(huì)影響到從庫復(fù)制,從庫必須在配置文件里使用masterauth 指令配置相應(yīng)的密碼才可以進(jìn)行復(fù)制操作。

  1. masterauth yoursecurepasswordhereplease 

認(rèn)證層的目標(biāo)是提供多一層的保護(hù)。假如防火墻或者其它任何系統(tǒng)防護(hù)攻擊失敗的話,外部客戶端如果沒有認(rèn)證密碼的話將依然無法訪問 Redis 實(shí)例。AUTH 命令就像其它Redis命令一樣,是通過非加密方式發(fā)送的,因此無法防止擁有足夠的訪問網(wǎng)絡(luò)權(quán)限的攻擊者進(jìn)行竊聽。

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

Redis并不支持加密。為了實(shí)現(xiàn)在網(wǎng)絡(luò)上或者其它非可信網(wǎng)絡(luò)訪問 Redis 實(shí)例,需要實(shí)現(xiàn)新增的保護(hù)層,例如 SSL 代理。

官方推薦的SSL 代理:spiped

禁用的特殊命令

在 Redis 中可以禁用命令或者將它們重命名成難以推測(cè)的名稱,這樣子普通用戶就只能使用部分命令了。例如,一個(gè)虛擬化的服務(wù)器提供商可能提供管理Redis實(shí)例的服務(wù)。在這種情況下,普通用戶可能不被允許調(diào)用 CONFIG 命令去修改實(shí)例的配置,但是能夠提供刪除實(shí)例的系統(tǒng)需要支持修改配置。

在這種情況下,你可以從命令表中重命名命令或者禁用命令。這個(gè)特性可以在redis.conf 文件中進(jìn)行配置。例如:

  1. rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 

在上面這個(gè)例子中,CONFIG 命令被重命名成一個(gè)不好猜測(cè)的名稱。把命令重命名成一個(gè)空字符串可以禁用掉該命令,例如下面這個(gè)例子:

  1. rename-command CONFIG "" 

外部客戶端通過仔細(xì)構(gòu)造的輸入觸發(fā)的攻擊

即便沒有外部訪問權(quán)限,也有種攻擊可以讓攻擊者從外部觸發(fā)。例如一些攻擊者有能力向 Redis 中插入數(shù)據(jù),觸發(fā) Redis 內(nèi)部數(shù)據(jù)結(jié)構(gòu)中最差的算法復(fù)雜度,例如一個(gè)攻擊者可以通過提交表單提交大量一樣的字符串到哈希表里,使得 O(1) 的算法復(fù)雜度(平均時(shí)間)達(dá)到最差的O(N) ,Redis 將需要更多的CPU來處理,到最后會(huì)導(dǎo)致無法提供服務(wù)為了防范這類特殊的攻擊,Redis 的哈希函數(shù)使用per-excution 的偽隨機(jī)種子。

Redis 用qsort 算法來實(shí)現(xiàn) SORT 命令。當(dāng)前這個(gè)算法還不算隨機(jī)的,所以通過有意構(gòu)造輸入可能引發(fā)最糟糕情況的算法復(fù)雜度。

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

Redis 的協(xié)議沒有字符串轉(zhuǎn)移的概念,因此一般情況下普通客戶端無法實(shí)現(xiàn)注入的。該協(xié)議采用二進(jìn)制安全的前綴長(zhǎng)度字符串。通過 EVAL 和 EVALSHA 命令運(yùn)行 Lua 腳本也是安全的。雖然這是個(gè)很奇怪的用法,應(yīng)用程序應(yīng)避免使用不明來源的字符串來寫Lua 腳本。

代碼安全

在傳統(tǒng)架構(gòu)的 Redis 中,客戶端是可以使用全部命令的,但是訪問 Redis 實(shí)例時(shí)是沒有能力控制運(yùn)行著 Redis 的系統(tǒng)的。本質(zhì)上,Redis 使用一直的最好的編程方法來寫安全的代碼,防止出現(xiàn)緩存溢出,格式錯(cuò)誤和其他內(nèi)存損壞問題。但是,使用 CONFIG 命令修改服務(wù)器配置的能力使得用戶可以改變程序的工作目錄和備份文件的名字。這讓用戶可以將 RDB 文件寫在任意路徑,這個(gè)安全問題容易引起不受信任的代碼在 Redis 上運(yùn)行。

Redis 不需要 root 權(quán)限來運(yùn)行,建議使用僅能運(yùn)行 Redis 的用戶運(yùn)行。Redis 的作者正在調(diào)查給 Redis 增加一個(gè)新參數(shù)來防止 CONFIG SET/GET dir 和其它命令運(yùn)行時(shí)配置指令的可能。這可以防止客戶端強(qiáng)制要求服務(wù)器在任意位置寫文件。

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2019-07-11 08:54:24

Redis安全策略

2018-04-26 09:03:48

ApacheWeb服務(wù)器

2024-04-01 08:05:27

Go開發(fā)Java

2021-06-11 13:59:22

CSS原子類

2024-09-05 14:50:31

2018-09-11 09:14:52

面試公司缺點(diǎn)

2020-03-15 17:35:34

Linux工具操作系統(tǒng)

2022-04-06 07:32:41

Java運(yùn)算符變量

2025-03-25 10:49:13

2015-07-15 17:39:18

2025-02-10 00:27:54

2017-04-07 16:30:51

Androidstrings.xml原則

2017-01-17 11:09:33

大數(shù)據(jù)關(guān)鍵詞工具

2020-02-17 11:54:18

網(wǎng)絡(luò)路由器命令

2022-11-16 09:04:36

SQL查詢SELECT

2021-11-04 11:54:30

Linux內(nèi)存系統(tǒng)

2019-10-30 16:03:48

JavaJava虛擬機(jī)數(shù)據(jù)庫

2018-11-04 05:00:36

組網(wǎng)技術(shù)二層網(wǎng)絡(luò)數(shù)據(jù)中心

2025-04-29 10:17:42

2019-10-14 09:52:41

ELFLinux文件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)