• Redis 配置密码认证


    在上一篇文章《Redis 部署》中介绍了Redis的基础安装,其中简单介绍了Redis配置文件redis.conf里面的参数,Redis在市场上应用越来越普及这样有好处也里弊端,例如好处有:大量的使用会使用Redis越来越稳定(BUG快速解决)、解决方案越来越多也越来越稳定、相关资料也越来越多等等好处,然后问题也越来越明显,例如:Redis的安全问题日益提升,安全包括两个方面:①外部的安全,包含:攻击、入侵、挂毒(例如:Redis的挖矿病毒已经不在是个例)等,②内部的安全:离职人员的恶意删除数据或者无意误删等操作。

      来自外部的安全风险,我们可以通过两个方面来解决:首先通过防火墙来指定IP访问Redis(Redis一般都是被服务直接调用,而不是客户直接调用,那么服务基本都是固定IP,因此这是一个可行的方案),然后修改默认的Redis端口(强行推荐,由于对Redis进行Telnet操作不会有任何提示符,所以黑客如果通过nmap扫描+Telnet试探等都很难准确定位该端口具体运行的服务)。如果这两个手段基本可以防御80%以上的恶意攻击或者扫描。

      最后来自内部(也有可能是外部)的安全风险就是:直接连接Redis就登录,可以进行删除数据操作(一个flushall命令,干掉半年的辛苦)。该解决方案是给Redis配置访问密码。Redis配置访问密码有两种方式:①、修改Redis的配置文件redis.conf。②、在Redis中直接运行配置密码命令。下面将详细讲解这两种方法。

      通过Redis命令进行设置密码(注意:该方法在重启Redis后密码将失效):

      首先观察设置密码前,只要使用客户端连接Redis就可以进行所有操作。如下:

    复制代码
    #连接Redis命令
    /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379
    127.0.0.1:6379> KEYS *
    (empty list or set)
    127.0.0.1:6379> set user ray
    OK
    127.0.0.1:6379> KEYS *
    1) "user"
    127.0.0.1:6379> 
    复制代码

      然后,通过命令进行设置密码。如下:

    复制代码
    #首先连接Redis,然后执行CONFIG SET requirepass userpassword
    /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379
    127.0.0.1:6379> KEYS *
    1) "user"
    127.0.0.1:6379> CONFIG SET requirepass 123.com
    OK
    127.0.0.1:6379> KEYS *
    (error) NOAUTH Authentication required.
    127.0.0.1:6379> quit
    #从上面可以看到密码设置成功,同时一旦密码设置成功,刚刚建立的连接将不能进行任何权限操作
    
    #使用-a userpassword 登录Redis
    /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a 123.com
    127.0.0.1:6379> KEYS *
    1) "user"
    127.0.0.1:6379> set job it
    OK
    127.0.0.1:6379> KEYS *
    1) "job"
    2) "user"
    127.0.0.1:6379> 
    #通过Redis登录后可以看到可以进行任何操作
    复制代码

      通过Redis配置文件redis.conf进行设置密码(注意:该方法设置密码后需要重启Redis才生效):

      首先,编辑redis.conf文件,找到下来内容:

    # requirepass foobared

      然后,把注释(#)去掉,并把foobared修改为直接的密码字段。如下:

    requirepass ray.com

      最后,重启Redis,登录连接。如下:

    复制代码
    #重启Redis服务
    service redis restart
    Stoping redis-server ......
    Starting redis-server .....
    
    #不使用认证连接,发现什么有权限的命令都操作不了,提示权限认证问题
    /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379
    127.0.0.1:6379> KEYS *
    (error) NOAUTH Authentication required.
    127.0.0.1:6379> quit
    
    #使用-a userpassword 认证登录,然后可以正常操作所有命令
    /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a ray.com
    127.0.0.1:6379> KEYS *
    1) "user"
    2) "job"
    127.0.0.1:6379> 
    复制代码

      至此,Redis密码配置已完成,但是需要特别注意的是:使用命令配置密码,在Redis重启以后将会失效。而使用配置文件设置密码,将需要重启Redis(在生产环境中一般不允许重启服务)。所以最好的方法是两者结合,修改Redis配置文件设置密码,同时使用命令配置相同的密码,这样既可以立即生效也不用重启Redis。

  • 相关阅读:
    csc一些命令简记
    Winform(C#.NET)自动更新组件的使用及部分功能实现(续)
    Winform(C#.NET)自动更新组件的使用及部分功能实现
    mssql的日期函数,如何取得当前年月日,当前时间,当前月份,当前天数,一年中第几天?
    在jexus下如何简单的配置多站点
    让asp.net和php同时在Linux上跑起来
    raspberrypi(树莓派)上安装mono和jexus,运行asp.net程序
    centos6.3与jexus5.4.4配置支持php(wordpress)
    Kaggle系列1:手把手教你用tensorflow建立卷积神经网络实现猫狗图像分类
    小记tensorflow-1:tf.nn.conv2d 函数介绍
  • 原文地址:https://www.cnblogs.com/John-2011/p/12765355.html
Copyright © 2020-2023  润新知