51Testing软件测试论坛

标题: redis加认证密码 [打印本页]

作者: 璐璐    时间: 2019-11-8 11:04
标题: redis加认证密码
redis很多时候我们都是使用不加密,默认端口,所以存在较大的风险。
乌云漏洞说明:http://blog.knownsec.com/2015/11/analysis-of-redis-unauthorized-of-expolit/
针对这种情况,我们需要给所有redis加上密码认证
所谓牵一发动全身,事实也是这样,改一个配置,不仅仅是redis本身和程序软件修改就可以,作为运维,还会有其他监控,启动脚本等诸多地方要修改.
修改内容:
1、配置文件:
requirepass hellotest
redis比较多,一个个修改比较慢,写一个语句操作起来简单方便
  1. sed -i "s/# requirepass foobared/requirepass hellotest/g"  redis6379.conf

复制代码
如果是从库,除了上面的一行,还需要增加一行
  1. masterauth hellotest
复制代码
用命令来操作
  1. grep slaveof redis6379.conf |grep -v "#" && sed -i "s/# masterauth /masterauth hellotest/g" redis6379.conf
复制代码



2redis 并不需要重启,可以直接设置
  1. config set requirepass hellotest
  2. config set masterauth hellotest
复制代码


3、启动关闭文件修改
  1. PWD=$(cat $CONF |grep requirepass|grep -v "#" |awk '{print $2}' )

复制代码
stop 的命令执行时需要加入这行

  1. if [ -n "$PWD" ];then  
  2.         $CLIEXEC -p $REDISPORT -a $PWD shutdown
  3. else
  4.         $CLIEXEC -p $REDISPORT  shutdown      
  5. fi

复制代码



4nagios监控修改
command.cfg中,找到check_redis命令,给他加个参数  -x 密码


5cacti修改
cacti修改是在程序里,还需要把程序找出来。
首先在模板中找到所有的脚本,我们用的是ss_get_by_ssh.php ,大概大部分人用的也是这个吧
找到这个函数,然后增加红色的两行即可


  1. function redis_get ( $options ) {
  2.    global $redis_port;
  3.    echo "===========================\n";
  4.    $port = isset($options['port2'])  ? $options['port2'] : $redis_port;
  5.    $sock = fsockopen($options['host'], $port, $errno, $errstr);
  6.    if ( !$sock ) {
  7.       debug("Cannot open socket to $options[host]:$port: "
  8.          . ($errno  ? " err $errno"  : "")
  9.          . ($errmsg ? " msg $errmsg" : ""));
  10.       return;
  11.    }
  12.    fwrite($sock,"auth 你的密码\r\n");
  13.    $data1 = fread($sock, 4096);
  14.    //echo $data1;
  15.    //sleep(1);
  16.    $res = fwrite($sock, "INFO\r\n");
  17.    if ( !$res ) {
  18.       debug("Can't write to socket");
  19.       return;
  20.    }
  21.    $data = fread($sock, 4096); # should be WAY more than enough for INFO
  22.    if ( !$data ) {
  23.       debug("Cannot read from socket");
  24.       return;
  25.    }
  26.    echo $data;
  27.    $res = fclose($sock);
  28.    if ( !$res ) {
  29.       debug("Can't close socket");
  30.    }
  31.    return $data;
  32. }

复制代码

6、应用程序配置修改
这个最重要,不会忘记








欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2