璐璐 发表于 2019-11-8 11:04:40

redis加认证密码

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

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


2、redis 并不需要重启,可以直接设置config set requirepass hellotest
config set masterauth hellotest


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

在stop 的命令执行时需要加入这行
if [ -n "$PWD" ];then
      $CLIEXEC -p $REDISPORT -a $PWD shutdown
else
      $CLIEXEC -p $REDISPORTshutdown      
fi




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

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

function redis_get ( $options ) {
   global $redis_port;
   echo "===========================\n";
   $port = isset($options['port2'])? $options['port2'] : $redis_port;
   $sock = fsockopen($options['host'], $port, $errno, $errstr);
   if ( !$sock ) {
      debug("Cannot open socket to $options:$port: "
         . ($errno? " err $errno": "")
         . ($errmsg ? " msg $errmsg" : ""));
      return;
   }
   fwrite($sock,"auth 你的密码\r\n");
   $data1 = fread($sock, 4096);
   //echo $data1;
   //sleep(1);
   $res = fwrite($sock, "INFO\r\n");
   if ( !$res ) {
      debug("Can't write to socket");
      return;
   }
   $data = fread($sock, 4096); # should be WAY more than enough for INFO
   if ( !$data ) {
      debug("Cannot read from socket");
      return;
   }
   echo $data;
   $res = fclose($sock);
   if ( !$res ) {
      debug("Can't close socket");
   }
   return $data;
}


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


页: [1]
查看完整版本: redis加认证密码