使用滴滴雲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部署實戰方面積累了豐富的經驗,敬請關注本系列文章的後續分享。
本文作者:杜文迪