Redis Safety Init Configuration

"redis safety init configuration"

Posted by Stephen on January 28, 2020

前言

针对database hacker attack,redis安装完之后,要有几个初始化安全配置。

环境

系统环境

version 
    No LSB modules are available.
    Distributor ID:	Deepin
    Description:	Deepin 20 Beta
    Release:	20 Beta
    Codename:	n/a

软件信息

version:
    Redis server v=3.2.6 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 

正文

默认知道redis.xx.conf的相关配置的!如果不知道,请看: redis_common_config

配置redis防范攻击措施

一、 redis版本升级

redis官网查看版本情况,注意redis 偶数为稳定版本,奇数为开发版本。

1. 初始化升级

直接删除旧的版本,安装新的版本,这里就不再叙述,自行google和百度。

2. 大版本平滑升级(保存已有的key)

大版本注释:例如从Redis 2.8升级到Redis 4.0。 设置主从模式,备份主库到从库,再卸载主库安装新版本再同步到主库,详情请看redis主从设置

二、设置高强度密码(重启生效)

修改 redis.conf 文件,添加

requirepass mypassword

(注意redis不要用-a参数,明文输入密码,连接后使用auth认证)

三、禁止一些高危命令(重启生效)

修改 redis.conf 文件,禁用远程修改 DB 文件地址

rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command EVAL ""

设置为空即为禁用该命令

或者通过修改redis.conf文件,改变这些高危命令的名称

rename-command FLUSHALL "name1"
rename-command CONFIG "name2"
rename-command EVAL "name3"

四、以低权限运行redis服务(重启生效)

为 Redis 服务创建单独的用户和家目录,并且配置禁止登陆

groupadd -r redis && useradd -r -g redis redis

五、修改默认端口(重启生效)

修改配置文件redis.conf文件

Port 6379

默认端口是6379,可以改变成其他端口(不要冲突就好)

六、保证authorized_keys文件的安全

为了保证安全,您应该阻止其他用户添加新的公钥。

  • 将 authorized_keys 的权限设置为对拥有者只读,其他用户没有任何权限:

      chmod 400 ~/.ssh/authorized_keys
    
  • 为保证 authorized_keys 的权限不会被改掉,您还需要设置该文件的 immutable 位权限:
      chattr +i ~/.ssh/authorized_keys
    
  • 然而,用户还可以重命名 ~/.ssh,然后新建新的 ~/.ssh 目录和 authorized_keys 文件。要避免这种情况,需要设置 ~./ssh 的 immutable 权限:
     chattr +i ~/.ssh
    

    七、设置防火墙策略 开放外网访问,限制已知ip访问

如果正常业务中Redis服务需要被其他服务器来访问,可以设置iptables策略仅允许指定的IP来访问Redis服务。

修改redis的配置文件,将所有bind信息全部屏蔽。

# bind 192.168.1.8
# bind 127.0.0.1

屏蔽掉 bind,即允许本机以外的机器访问它 修改完成后,需要重新启动redis服务。

redis-server redis.conf

如果iptables 没有开启6379端口,用这个方法开启端口

/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
/etc/rc.d/init.d/iptables save

通过iptables 允许指定的外网ip访问

修改 Linux 的防火墙(iptables),开启你的redis服务端口,默认是6379。

# 只允许112.122.13.39访问6379
iptables -A INPUT -s 112.122.13.39 -p tcp --dport 6379 -j ACCEPT
# 其他ip访问全部拒绝
iptables -A INPUT -p TCP --dport 6379 -j REJECT

后记

@TOC