Redis服務安全加固的說明
Redis(全稱:Remote Dictionary Server 遠端字典服務)是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。 |
Redis 因配置不當存在未授權訪問漏洞,可以被攻擊者惡意利用。
在特定條件下,如果 Redis 以 root 身份執行,駭客可以給 root 賬號寫入 SSH 公鑰檔案,直接透過 SSH 登入受害伺服器,從而獲取伺服器許可權和資料。一旦入侵成功,攻擊者可直接新增賬號用於 SSH 遠端登入控制伺服器,給使用者的 Redis 執行環境以及 主機帶來安全風險,如刪除、洩露或加密重要資料,引發勒索事件等。
在 Redis 客戶端,測試Redis是否設定密碼:
root@kali:~# redis-cli -h 10.16.10.2 redis 10.16.10.2:6379> keys * 1) "1"`
從登入結果可以看出,該 Redis 服務對公網開放,且未啟用認證。
指定 Redis 服務使用的網路卡
預設情況下,Redis 監聽 127.0.0.1。如果僅僅是本地通訊,請確保監聽在本地。
這種方式可以在一定程度上緩解 Redis 未授權訪問的風險(例外情況下,如果 Redis 以 root 使用者執行,攻擊者藉助已有的 web ,就可以利用該 Redis 來反彈 shell 以實現提權)。
在redis.conf檔案中找到 # bind 127.0.0.1,將前面的 # 去掉,然後儲存。
該操作需要重啟Redis 才能生效。
修改後只有本機才能訪問 Redis,也可以指定訪問源 IP 來訪問 Redis。
bind 192.168.1.100 10.0.0.1
port 6377
編輯檔案redis的配置檔案redis.conf,找到包含port的行,將預設的6379修改為自定義的埠號,重啟`redis生效`
如果正常業務中 Redis 服務需要被其他伺服器來訪問,可以透過 iptables 策略,僅允許指定的 IP 來訪問 Redis 服務。
iptables -A INPUT -s x.x.x.x -p tcp --dport 6379 -j ACCEPT
設定訪問密碼:在 redis.conf中找到 requirepass欄位,去掉其註釋,並在後面填上需要的密碼。Redis 客戶端也需要使用此密碼來訪問 Redis 服務。
開啟 /etc/redis/redis.conf配置檔案:
requirepass %@!%
確保密碼的複雜度,配置完畢後重啟服務即可生效。
使用root切換到redis使用者啟動服務:
useradd -s /sbin/nolog -M redis sudo -u redis //redis-server //redis.conf
注意:該操作需要重啟 Redis 才能生效。
隱藏重要 :Redis 無許可權分離,其管理員賬號和普通賬號無明顯區分。攻擊者登入後可執行任意操作,因此需要隱藏以下重要命令:FLUSHDB, FLUSHALL, KEYS,PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME,DEBUG, 。
另外,在 Redis 2.8.1 及 Redis 3.x (低於 3.0.2) 版本下存在 沙箱逃逸漏洞,攻擊者可透過該漏洞執行任意 Lua 程式碼。
下述配置將 config/flushdb/flushall 設定為空,即禁用該命令;也可設定為一些複雜的、難以猜測的名字。
rename-command FLUSHALL "" rename-command FLUSHDB "" rename-command CONFIG "" rename-command KEYS "" rename-command SHUTDOWN "" rename-command DEL "" rename-command ""
然後重啟redis。
重新命名為"" 代表禁用命令,如想保留命令,可以重新命名為不可猜測的字串,如:
rename-command FLUSHALL joYAPNXRPmcarcR4ZDgC
redis預設開啟保護模式。要是配置裡沒有指定bind和密碼,開啟該引數後,redis只能本地訪問,拒絕外部訪問。
redis.conf安全設定: # 開啟保護模式 protected-mode yes
定期關注最新軟體版本,並及時升級 Redis 到最新版,防止新漏洞被惡意利用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2675423/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Redis服務之Redis5叢集相關命令說明Redis
- centos下部署redis服務環境及其配置說明CentOSRedis
- Linux系統下對NFS服務安全加固的方法LinuxNFS
- Win32系統服務說明Win32
- redis 3.0 引數說明Redis
- Redis 叢集功能說明Redis
- 15、資料庫加固-redis 加固資料庫Redis
- Redis應用配置項說明Redis
- redis info命令詳細說明Redis
- ios安全加固 ios 加固方案iOS
- Nginx部署前後端分離服務以及配置說明Nginx後端
- 幫幫派線上服務平臺專案說明書
- Redis服務之Redis ClusterRedis
- Redis 複製、Sentinel的搭建和原理說明Redis
- Redis Sentinel 高可用實現說明Redis
- Redis配置檔案引數說明Redis
- nginx安全加固Nginx
- centos7 下參考 官方說明 搭建gitlab服務CentOSGitlab
- redis:新增redis到服務列表Redis
- redis配置檔案redis.conf詳細說明Redis
- Istio Mixer元件和服務的重要說明元件
- Oracle PL/SQL 自治事務的說明OracleSQL
- Redis 6.0 訪問控制列表ACL說明Redis
- Python下操作Memcache/Redis/RabbitMQ說明PythonRedisMQ
- Redis 3.0介紹及叢集說明Redis
- Docker 關鍵字說明及一鍵構建相關服務Docker
- RHEL 7特性說明(九):Web伺服器和相關服務Web伺服器
- 帝國cms資料庫在哪_CMS釋出服務配置說明資料庫
- 系統安全加固
- JavaScript混淆安全加固JavaScript
- 密碼安全加固密碼
- open Euler安全加固
- 保障Web服務的安全Web
- 說說面向服務的體系架構SOA架構
- 關於事務的英文說明 Transaction OverviewView
- 基於 Redis3.2.4 叢集搭建說明RedisS3
- 誰說Redis不支援事務?Redis
- MySQL安全加固方法分享MySql