激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫 - Redis - 淺談Redis安全策略

淺談Redis安全策略

2022-01-20 20:03zx Redis

Redis 提供了諸多安全策略,比如為了保證數(shù)據(jù)安全,提供了設(shè)置密碼的功能。本文就詳細的介紹了一下Redis安全策略,具有一定的參考價值,感興趣的可以了解一下

Redis 提供了諸多安全策略,比如為了保證數(shù)據(jù)安全,提供了設(shè)置密碼的功能。Redis 密碼設(shè)置主要有兩種方式:一種是使用CINFIG命令來設(shè)置密碼;另外一種則是手動修改 Redis 的配置文件。雖然看似前者更為簡單,其實兩種方式各有特點。本節(jié)將對它們進行介紹。

命令配置密碼

通過執(zhí)行以下命令查看是否設(shè)置了密碼驗證:

?
1
2
3
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""

在默認情況下 requirepass 參數(shù)值為空的,表示無需通過密碼驗證就可以連接到 Redis 服務(wù)。

下面執(zhí)行以下命令設(shè)置密碼。如下所示:

?
1
2
3
4
5
6
127.0.0.1:6379> CONFIG set requirepass "www.zmynmublwnt.cn"
 
OK
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) "www.zmynmublwnt.cn"

執(zhí)行完上述操作后,客戶端要連接到 Redis 服務(wù)就需要密碼驗證,如果不驗證就無法操作 Redis 數(shù)據(jù)庫。如下所示:

?
1
2
3
127.0.0.1:6379> set key name www.biancheng.net
#報錯無法操作
(error) NOAUTH Authentication required.

使用AUTH命令驗證密碼:

?
1
2
3
4
5
6
7
127.0.0.1:6379> AUTH www.zmynmublwnt.cn
OK
#執(zhí)行命令成功
127.0.0.1:6379> SET name www.zmynmublwnt.cn
OK
127.0.0.1:6379> GET name
www.zmynmublwnt.cn

注意:通過命令行設(shè)置的密碼并非永久有效,當您重啟服務(wù)后密碼就會失效,所以一般不采用這種方式。下面介紹一種永久有效的修改方式,也就是手動配置密碼。

手動配置密碼

手動修改配置密碼也非常的簡單,首先,您要在 Redis 的安裝目錄中找到 redis.windows.conf 配置文件,然后打開該文件,并使用 Ctrl+F 搜索 requirepass 關(guān)鍵字,找到配置項并配置密碼,如下所示:

?
1
2
# requirepass foobared
requirepass www.zmynmublwnt.cn //配置自己的密碼

然后使用更改后的配置文件重啟服務(wù)器,依次執(zhí)行以下命令:

?
1
2
3
4
5
6
7
8
9
10
11
#首先停止服務(wù):
C:\Users\Administrator>redis-server.exe --service-stop
#重啟服務(wù)器
C:\Users\Administrator>redis-server.exe --service-start
#重新登陸
C:\Users\Administrator>redis-cli.exe -h 127.0.0.1 -p 6379 -a www.zmynmublwnt.cn
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
#命令執(zhí)行成功
127.0.0.1:6379>config get requirepass
1)"requirepass"
2)"www.zmynmublwnt.cn"

手動配置無須驗證密碼,只需要重新啟動 Redis 服務(wù)器。這種配置方式,密碼永遠有效。如果想取消密碼設(shè)置,您需要將配置文件更改回原來的狀態(tài),然后再次重啟服務(wù)器,即可取消。

除了需要為 Redis 配置密碼外,我們在使用 Redis 時也需要注意一些常見的安全風(fēng)險以及防范措施,從而避免數(shù)據(jù)泄露和丟失,以及人為操作失誤等。

指令安全

Redis 有一些非常危險的命令,這些命令會對 Redis 的穩(wěn)定以及數(shù)據(jù)安全造成非常嚴重的影響。比如 keys 指令會導(dǎo)致 Redis 卡頓,而 flushdb 和 flushall 會讓 Redis 的所有數(shù)據(jù)全部清空。那么如何避免這些操作失誤帶來的災(zāi)難性后果呢?

Redis 在配置文件中提供了 rename-command 指令用于將某些危險的指令修改成特別的名稱,用來避免人為誤操作。比如在配置文件的 security 模塊增加以下內(nèi)容:

?
1
rename-command keys 123keys123

如果您還想執(zhí)行 keys 命令,那就需要在命令行輸入123keys123。 當然也可以將指令 rename 成空字符串,這樣就無法通過字符串來執(zhí)行 keys 命令了。

?
1
rename-command flushall ""

端口安全

Redis 默認監(jiān)聽*:6379,如果當前的服務(wù)器主機有外網(wǎng)地址,那么 Redis 的服務(wù)將會直接暴露在公網(wǎng)上,別有用心的人使用適當?shù)奶綔y工具就可以對 IP 地址進行端口掃描,從而威脅您的系統(tǒng)安全。

如果 Redis 的服務(wù)地址一旦可以被外網(wǎng)直接訪問,其內(nèi)部數(shù)據(jù)就徹底喪失了安全性。黑客們可以通過 Redis 執(zhí)行 Lua 腳本拿到服務(wù)器權(quán)限,然后清空您的 Redis 數(shù)據(jù)庫。因此務(wù)必在 Redis 的配置文件中綁定要監(jiān)聽的 IP 地址,避免類似的情況發(fā)生。如下所示:

?
1
bind 193.168.1.1 #綁定外網(wǎng)ip地址

不僅如此,還可以增加 Redis 的密碼訪問限制,客戶端必須使用 auth 命令傳入正確的密碼才可以訪問 Redis。

?
1
requirepass yourspassword

這樣即使地址暴露出去了,普通黑客也無法對 Redis 服務(wù)器進行任何指令操作。

密碼配置也會影響到主從復(fù)制。要求從機必須配置與主服務(wù)相同的密碼才可以進行主從復(fù)制。

?
1
masterauth yourspassword

SSH代理

Redis 不支持 SSL 鏈接,這意味著客戶端和服務(wù)器交互的數(shù)據(jù)不應(yīng)該在公網(wǎng)上傳輸,否則會有被竊聽的風(fēng)險。如果必須要在公網(wǎng)上,可以考慮使用 SSL 代理。SSL 代理比較常見的有 ssh。Redis 官方也推薦了一種代理工具,也就是 spiped (點擊了解)。 其功能雖然單一,但使用起來比較簡單,易于理解。

補充:

1. 開啟redis密碼認證,并設(shè)置高復(fù)雜度密碼

redis在redis.conf配置文件中,設(shè)置配置項requirepass, 開戶密碼認證。

打開redis.conf,找到requirepass所在的地方,修改為指定的密碼,密碼應(yīng)符合復(fù)雜性要求:

1、長度8位以上

2、包含以下四類字符中的三類字符:

英文大寫字母(A 到 Z)

英文小寫字母(a 到 z)

10 個基本數(shù)字(0 到 9)

非字母字符(例如 !、$、#、%、@、^、&)

3、避免使用已公開的弱密碼,如:abcd.1234 、admin@123等

再去掉前面的#號注釋符,然后重啟redis

2. 禁止監(jiān)聽在公網(wǎng)

Redis監(jiān)聽在0.0.0.0,可能導(dǎo)致服務(wù)對外或內(nèi)網(wǎng)橫向移動滲透風(fēng)險,極易被黑客利用入侵。

在redis的配置文件redis.conf中配置如下:

bind 127.0.0.1或者內(nèi)網(wǎng)IP,然后重啟redis

3. 禁止使用root用戶啟動

使用root權(quán)限去運行網(wǎng)絡(luò)服務(wù)是比較有風(fēng)險的(nginx和apache都是有獨立的work用戶,而redis沒有)。redis crackit 漏洞就是利用root用戶的權(quán)限來替換或者增加authorized_keys,來獲取root登錄權(quán)限的

?
1
2
3
使用root切換到redis用戶啟動服務(wù):
useradd -s /sbin/nolog -M redis
sudo -u redis /<redis-server-path>/redis-server /<configpath>/redis.conf

4. 限制redis 配置文件訪問權(quán)限

因為redis密碼明文存儲在配置文件中,禁止不相關(guān)的用戶訪問改配置文件是必要的,設(shè)置redis配置文件權(quán)限為600,

?
1
chmod 600 /<filepath>/redis.conf

5. 修改默認6379端口

避免使用熟知的端口,降低被初級掃描的風(fēng)險

編輯文件redis的配置文件redis.conf,找到包含port的行,將默認的6379修改為自定義的端口號,然后重啟redis

6. 禁用或者重命名危險命令

Redis中線上使用keys *命令,也是非常危險的。因此線上的Redis必須考慮禁用一些危險的命令,或者盡量避免誰都可以使用這些命令,Redis沒有完整的管理系統(tǒng),但是也提供了一些方案。

?
1
2
3
4
5
6
7
8
9
10
11
修改 redis.conf 文件,添加
rename-command FLUSHALL ""
rename-command FLUSHDB  ""
rename-command CONFIG   ""
rename-command KEYS     ""
rename-command SHUTDOWN ""
rename-command DEL ""
rename-command EVAL ""
然后重啟redis。
重命名為"" 代表禁用命令,如想保留命令,可以重命名為不可猜測的字符串,如:
`rename-command FLUSHALL  joYAPNXRPmcarcR4ZDgC`

7. 打開保護模式

redis默認開啟保護模式。要是配置里沒有指定bind和密碼,開啟該參數(shù)后,redis只能本地訪問,拒絕外部訪問。

?
1
redis.conf安全設(shè)置: # 打開保護模式 protected-mode yes

8. redis集群設(shè)置密碼

1,如果是使用redis-trib.rb工具構(gòu)建集群,集群構(gòu)建完成前不要配置密碼,集群構(gòu)建完畢再通過config set + config rewrite命令逐個機器設(shè)置密碼

2,如果對集群設(shè)置密碼,那么requirepass和masterauth都需要設(shè)置,否則發(fā)生主從切換時,就會遇到授權(quán)問題,可以模擬并觀察日志

3,各個節(jié)點的密碼都必須一致,否則Redirected就會失敗

?
1
2
3
4
5
6
7
8
9
10
11
12
13
# redis-cli -c -p 7004
127.0.0.1:7004> config set masterauth frank
OK
127.0.0.1:7004> config set requirepass frank
OK
127.0.0.1:7004> CONFIG REWRITE
(error) NOAUTH Authentication required.
127.0.0.1:7004> auth frank
OK
127.0.0.1:7004> config rewrite
OK
127.0.0.1:7004> exit
[root@iZj6c7eeosj2t5vjw8rf4xZ redis_cluster]# redis-cli -c -p 7004 -a frank

4,設(shè)置密碼之后如果需要使用redis-trib.rb的各種命令報錯問題

如:

?
1
2
# redis-trib.rb check 47.52.41.245:7003
[ERR] Sorry, can't connect to node 47.52.41.245:7003

解決辦法:

找到建立集群時執(zhí)行g(shù)em install redis命令生成的client.rb文件,如果不知道該文件在哪可以通過下面命令查找

?
1
2
3
4
# find / -name client.rb -print
/tmp/frank/ruby/ruby-2.2.8/lib/xmlrpc/client.rb
/usr/local/lib/ruby/gems/2.2.0/gems/redis-4.0.0/lib/redis/client.rb
/usr/local/lib/ruby/2.2.0/xmlrpc/client.rb

我這邊的那個文件是/usr/local/lib/ruby/gems/2.2.0/gems/redis-4.0.0/lib/redis/client.rb

然后修改該文件

?
1
# vim /usr/local/lib/ruby/gems/2.2.0/gems/redis-4.0.0/lib/redis/client.rb

修改password對應(yīng)的值然后保存,就可以了

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
require_relative "errors"
require "socket"
require "cgi"
 
class Redis
  class Client
 
    DEFAULTS = {
      :url => lambda { ENV["REDIS_URL"] },
      :scheme => "redis",
      :host => "127.0.0.1",
      :port => 6379,
      :path => nil,
      :timeout => 5.0,
      :password => "frank",
      :db => 0,
      :driver => nil,
      :id => nil,
      :tcp_keepalive => 0,
      :reconnect_attempts => 1,
      :inherit_socket => false
    }
 
    attr_reader :options

重新運行redis-trib.rb命令

?
1
2
3
4
5
6
redis-trib.rb check 47.52.41.245:7003
>>> Performing Cluster Check (using node 47.52.41.245:7003)
S: cc86a24f3896ad7530e2687cf52582912f74b661 47.52.41.245:7003
   slots: (0 slots) slave
   replicates 908430b2bf63669898e9eaef79dd6c1b33c8c57a
M: 668397aba571ece85532b1eb1fccb42e4e33b1f2 116.196.65.198:7001

9. 使用Redis5.0版本創(chuàng)建的集群設(shè)置密碼

直接一步到位,在創(chuàng)建集群前,在配置文件中設(shè)置好密碼(所有配置文件的密碼保持一致),然后使用命令創(chuàng)建集群時在后面加上-a password參數(shù)。

這樣一來,生成的集群進行訪問時已經(jīng)包含訪問密碼了,不用再事后設(shè)置了。

到此這篇關(guān)于淺談Redis安全策略的文章就介紹到這了,更多相關(guān)Redis安全策略內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:http://c.biancheng.net/redis/security.html

延伸 · 閱讀

精彩推薦
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友...

    xiaojin21cen10152021-07-27
  • RedisRedis如何實現(xiàn)數(shù)據(jù)庫讀寫分離詳解

    Redis如何實現(xiàn)數(shù)據(jù)庫讀寫分離詳解

    Redis的主從架構(gòu),能幫助我們實現(xiàn)讀多,寫少的情況,下面這篇文章主要給大家介紹了關(guān)于Redis如何實現(xiàn)數(shù)據(jù)庫讀寫分離的相關(guān)資料,文中通過示例代碼介紹...

    羅兵漂流記6092019-11-11
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    這篇文章主要給大家介紹了關(guān)于redis中如何使用lua腳本讓你的靈活性提高5個逼格的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具...

    一線碼農(nóng)5812019-11-18
  • Redis詳解Redis復(fù)制原理

    詳解Redis復(fù)制原理

    與大多數(shù)db一樣,Redis也提供了復(fù)制機制,以滿足故障恢復(fù)和負載均衡等需求。復(fù)制也是Redis高可用的基礎(chǔ),哨兵和集群都是建立在復(fù)制基礎(chǔ)上實現(xiàn)高可用的...

    李留廣10222021-08-09
  • RedisRedis 事務(wù)知識點相關(guān)總結(jié)

    Redis 事務(wù)知識點相關(guān)總結(jié)

    這篇文章主要介紹了Redis 事務(wù)相關(guān)總結(jié),幫助大家更好的理解和學(xué)習(xí)使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
  • RedisRedis的配置、啟動、操作和關(guān)閉方法

    Redis的配置、啟動、操作和關(guān)閉方法

    今天小編就為大家分享一篇Redis的配置、啟動、操作和關(guān)閉方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    大道化簡5312019-11-14
  • Redisredis實現(xiàn)排行榜功能

    redis實現(xiàn)排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來實現(xiàn)排行榜功能,本文就來簡單的介紹一下如何使用,具有一定的參考價值,感興趣的小伙伴們...

    乘月歸5022021-08-05
  • RedisRedis全量復(fù)制與部分復(fù)制示例詳解

    Redis全量復(fù)制與部分復(fù)制示例詳解

    這篇文章主要給大家介紹了關(guān)于Redis全量復(fù)制與部分復(fù)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Redis爬蟲具有一定的參考學(xué)習(xí)...

    豆子先生5052019-11-27
主站蜘蛛池模板: 99精品视频在线观看免费 | 欧美综合日韩 | 免费黄色在线观看网站 | 国产99久久精品一区二区 | 国产精品aⅴ| 91在线视频精品 | 亚洲国产精品久久久久 | 亚洲91在线| 久色精品视频 | 日本不卡视频在线观看 | 黑人三级毛片 | 国产精品久久久久久久av三级 | 黄色片免费看看 | 噜噜噜在线 | 亚洲天堂午夜 | 毛片免费观看视频 | 日本不卡视频在线观看 | 精品999www | 4399一级成人毛片 | 亚洲免费视 | 欧美成人午夜 | 免费黄色免费 | 一级毛片看 | 久久综合艹 | 色人阁在线视频 | 蝌蚪久久窝 | 色网站在线免费观看 | 99re66热这里只有精品8 | 久久国产成人午夜av浪潮 | av免费不卡国产观看 | 免费观看国产视频 | 一及毛片视频 | 久久亚洲网 | 黄色的视频免费看 | 亚洲精品欧美 | 欧美性生活视频免费 | 成人在线观看地址 | 黄色1级视频 | 国产激情精品一区二区三区 | 一区二区三区欧美在线观看 | 精品久久久一二三区播放播放播放视频 |