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
复制代码如果是从库,除了上面的一行,还需要增加一行 用命令来操作 - 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 $REDISPORT shutdown
- 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[host]:$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、应用程序配置修改 这个最重要,不会忘记
|