1. 程式人生 > >使用滴滴雲DC2,在CentOS7安裝Redis並進行安全加固

使用滴滴雲DC2,在CentOS7安裝Redis並進行安全加固

簡介

Redis是開源的記憶體資料庫,並以其良好的靈活性、效能、可擴充套件性與相容性著稱。

Redis本身被設計成客戶端授信的環境下進行訪問,服務本身並沒有強大的安全功能。但是也具有一些關於安全的基本功能,包括訪問密碼、命令的重新命名與遮蔽等能力。本教程提供瞭如何配置這些安全功能的說明,並且包含CentOS7上能夠為Redis提供的安全特性。

請注意,本文件不涉及分散式與跨地域的Redis叢集。

環境準備

本教程使用滴滴雲DC2環境進行部署,不同環境部署可能略有不同。

安裝Redis

以yum方式安裝CentOS7支援的Redis預設版本(如需其他版本則需要從redis.io進行下載):

$ sudo yum install redis -y

整個操作過程使用預設使用者即dc2-user進行操作

完成安裝後,啟動Redis服務:

$ sudo systemctl enable redis

如需在系統啟動時啟動Redis服務,可執行如下命令:

$ sudo systemctl enable redis

執行如下命令,檢視Redis服務狀態:

$ sudo systemctl status redis.service

輸出內容如下:

● redis.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/redis.service.d
           └─limit.conf
   Active: active (running) since Thu 2018-11-08 17:20:58 CST; 15s ago
 Main PID: 21637 (redis-server)
   CGroup: /system.slice/redis.service
           └─21637 /usr/bin/redis-server 127.0.0.1:6379

Nov 08 17:20:58 10-255-20-202 systemd[1]: Starting Redis persistent key-value database...
Nov 08 17:20:58 10-255-20-202 systemd[1]: Started Redis persistent key-value database.

一旦確認服務已啟動,可使用如下命令進行測試:

$ redis-cli ping

螢幕中會輸出 PONG ,表示服務已執行,接下來我們就可以配置安全選項了。

繫結Redis訪問地址

開啟Redis配置檔案並進行編輯:

$ sudo vi /etc/redis.conf

找到以bind開頭的行,並在下面加入如下內容:

bind 127.0.0.1

強烈建議此處只新增私有地址,新增共有地址會增加額外的風險。如果你需要繫結其他地址,可在IP後加空格和其他IP地址。

配置Redis密碼

再次開啟Redis配置檔案:

$ sudo vi /etc/redis.conf

游標移動到SECURITY章節,找到如下注釋內容:

# requirepass foobared

通過移除‘#’,並將foobared修改成更為安全的密碼,比如使用sha256sum對簡單密碼進行加密:

$ echo "didicloud" | sha256sum

將輸出結果修改到配置檔案中並重啟服務:

$ sudo systemctl restart redis.service

現在來測試下是否需要密碼進行登入:

$ redis-cli
127.0.0.1:6379> set key1 10

顯然,這時候需要密碼才能夠正常操作了,那麼首先需要進行認證:

127.0.0.1:6379> auth your_redis_password

Redis會返回 OK,此時表示已經認證成功,可繼續上面的資料操作:

127.0.0.1:6379> set key1 10
OK

127.0.0.1:6379> get key1
"10"

退出Redis命令列,可執行如下命令:

127.0.0.1:6379> quit

對危險命令進行重新命名

Redis的另一個內建的安全機制,允許將危險命令進行重新命名或者完全禁用,已防止未授權使用者使用命令擦除或銷燬資料。

危險命令包含如下:

  • FLUSHDB
  • FLUSHALL
  • KEYS
  • PEXPIRE
  • DEL
  • CONFIG
  • SHUTDOWN
  • BGREWRITEAOF
  • BGSAVE
  • SAVE
  • SPOP
  • SREM
  • RENAME
  • DEBUG

以上並不是一個完善的清單,但是從如上命令進行重新命名或禁用是一個很好的開始。

重新開啟Redis的配置檔案

sudo vi  /etc/redis.conf

通過配置一個重新命名空值來禁用命令

rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command DEBUG ""

通過配置一個新的名稱來給命令重新命名:

rename-command SHUTDOWN SHUTDOWN_MENOT
rename-command CONFIG ASC12_CONFIG

配置好之後重啟服務:

$ sudo service redis-server restart

滴滴雲技術團隊在Redis部署實戰方面積累了豐富的經驗,敬請關注本系列文章的後續分享。

本文作者:杜文迪