⼀、禁⽌使⽤root⽤户启动 | 访问控制
使⽤root权限去运⾏⽹络服务是⽐较有风险的(nginx和apache都是有独⽴的work⽤户,⽽redis没有)。redis crackit 漏洞就是利⽤root⽤户的权限来替换或者增加authorized_keys,来获取root登录权限的
使⽤root切换到redis⽤户启动服务:```
useradd -s /sbin/nolog -M redis
sudo -u redis / ⼆、限制redis 配置⽂件访问权限 | ⽂件权限 因为redis密码明⽂存储在配置⽂件中,禁⽌不相关的⽤户访问改配置⽂件是必要的,设置redis配置⽂件权限为600, 执⾏以下命令修改配置⽂件权限:``` chmod 600 / 三、修改默认6379端⼝ | 服务配置 避免使⽤熟知的端⼝,降低被初级扫描的风险 编辑⽂件redis的配置⽂件redis.conf,找到包含port的⾏,将默认的6379修改为⾃定义的端⼝号,然后重启redis 四、开启redis密码认证,并设置⾼复杂度密码 | ⾝份鉴别 redis在redis.conf配置⽂件中,设置配置项requirepass, 开户密码认证。 redis因查询效率⾼,auth这种命令每秒能处理9w次以上,简单的redis的密码极容易为攻击者暴破。 打开redis.conf,找到requirepass所在的地⽅,修改为指定的密码,密码应符合复杂性要求:``` 1、长度8位以上 2、包含以下四类字符中的三类字符:英⽂⼤写字母(A 到 Z)英⽂⼩写字母(a 到 z)10 个基本数字(0 到 9) ⾮字母字符(例如 !、$、%、@、^、&等,#除外) 3、避免使⽤已公开的弱密码,如:abcd.1234 、admin@123等``` 再去掉前⾯的#号注释符,然后重启redis 五、禁⽤或者重命名危险命令 | ⼊侵防范 Redis中线上使⽤keys *命令,也是⾮常危险的。因此线上的Redis必须考虑禁⽤⼀些危险的命令,或者尽量避免谁都可以使⽤这些命令,Redis没有完整的管理系统,但是也提供了⼀些⽅案。 修改 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` 六、禁⽌监听在公⽹ | 访问控制 Redis监听在0.0.0.0,可能导致服务对外或内⽹横向移动渗透风险,极易被⿊客利⽤⼊侵。 在redis的配置⽂件redis.conf中配置如下:bind 127.0.0.1或者内⽹IP,然后重启redis 七、打开保护模式 | 访问控制 redis默认开启保护模式。要是配置⾥没有指定bind和密码,开启该参数后,redis只能本地访问,拒绝外部访问。 redis.conf安全设置: # 打开保护模式 protected-mode yes 因篇幅问题不能全部显示,请点此查看更多更全内容