1、下载redis
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
2、解压并安装
tar xzf redis-2.8.17.tar.gz
cd redis-2.8.17
make
安装后会在redis-2.8.17目录下生成src目录,可通过src目录下的redis-server来启动redis
3、修改redis安全相关
①禁止监听在公网 | 访问控制
Redis监听在0.0.0.0,可能导致服务对外或内网横向移动渗透风险,极易被黑客利用入侵。
在redis的配置文件redis.conf中配置如下:
bind 127.0.0.1或者内网IP
②限制redis 配置文件访问权限 | 文件权限
因为redis密码明文存储在配置文件中,禁止不相关的用户访问改配置文件是必要的,设置redis配置文件权限为600,
执行以下命令修改配置文件权限:
chmod 600 /<filepath>/redis.conf
③修改默认6379端口 | 服务配置
避免使用熟知的端口,降低被初级扫描的风险
编辑文件redis的配置文件redis.conf,找到包含port的行,将默认的6379修改为自定义的端口号
④开启redis密码认证,并设置高复杂度密码 | 身份鉴别
redis在redis.conf配置文件中,设置配置项requirepass, 开户密码认证。 redis因查询效率高,auth这种命令每秒能处理9w次以上,简单的redis的密码极容易为攻击者暴破。
打开redis.conf,找到requirepass所在的地方,修改为指定的密码,密码尽量复杂。
⑤redis默认开启保护模式。要是配置里没有指定bind和密码,开启该参数后,redis只能本地访问,拒绝外部访问。
redis.conf安全设置: # 打开保护模式 protected-mode yes
⑥禁用或者重命名危险命令 | 入侵防范
修改 redis.conf 文件,添加
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command KEYS ""
rename-command SHUTDOWN ""
rename-command DEL ""
rename-command EVAL ""
重命名为"" 代表禁用命令,如想保留命令,可以重命名为不可猜测的字符串,如:
`rename-command FLUSHDB aodtebDskaq`
⑦禁止使用root用户启动 | 访问控制
使用root权限去运行网络服务是比较有风险的(nginx和apache都是有独立的work用户,而redis没有)。redis crackit 漏洞就是利用root用户的权限来替换或者增加authorized_keys,来获取root登录权限的
使用root切换到redis用户启动服务:
useradd -s /sbin/nolog -M redis
sudo -u redis /<redis-server-path>/redis-server /<configpath>/redis.conf
记得将 config和log日志的权限赋给redis用户。
4、启动redis
参考第3节中⑦用非root用户启动redis。