近些年redis很火黑客也不少,常见的redis被黑案例:php
Redis 服务启动了,可是监听了一个全网IP,若是6379默认端口没有更改,而且iptables也处于关闭,公网IP 也开放着,Redis也没有设置任何密码,黑客就会扫描端口,而后就能够轻轻松松登陆你的Redis服务器,而且是超级管理员的权限。而后黑客就能够设置dir dbname,dir 定义到/root/.ssh 且dbname定义为:.ssh/authorized_keys 再把这个值写上本身的公钥。 这些应该都不陌生吧,这不就活生生的把黑客的公钥上传到了我们的服务器中,而后利用超级管理员作任何想作的事情了linux
解决方法:nginx
vim /etc/redis.cof # requirepass foobared requirepass 123456 # Accept connections on the specified port, default is 6379 (IANA #815344). # If port 0 is specified Redis will not listen on a TCP socket. #port 6379 port 6380 # Examples: # # bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 ::1 # an empty string: # # rename-command CONFIG "quyifan"
vim /etc/redis.conf #针对慢查询日志,能够设置两个参数,一个是执行时长,单位是微秒,另外一个是慢查询日志的长度。 #当一个新的命令被写入日志时,最老的一条会从命令日志队列中被移除。 • slowlog-log-slower-than 1000 //单位ms,表示慢于1000ms则记录日志,测试可设置为10ms • slowlog-max-len 128 //定义日志长度,表示最多存128条 • slowlog get //列出全部的慢查询日志 • slowlog get 2 //只列出2条 • slowlog len //查看慢查询日志条数
cd /usr/local/src • wget https://coding.net/u/aminglinux/p/yuanke_centos7/git/raw/master/21NOSQL/phpredis.zip • unzip phpredis.zip • cd phpredis-develop • /usr/local/php-fpm/bin/phpize • yum install -y autoconf • ./configure --with-php-config=/usr/local/php-fpm/bin/php-config • make • make install • vim /usr/local/php-fpm/etc/php.ini//增长extension=redis.so • /usr/local/php-fpm/bin/php -m|grep redis//看是否有redis模块 • 重启php-fpm服务service php-fpm start 启动服务 • ps aux |grep php-fpm 查看服务 • redis-cli 进入redis
#在php-fpm的配置文件对应的pool中增长: #这里本身有设置虚拟主机配置文件因此先找到具体文件位置 vim /usr/local/php-fpm/etc/php-fpm.d/www.conf #php-fpm配置文件有定义 php_value[session.save_handler] = redis php_value[session.save_path] = "tcp://127.0.0.1:6379" • wget http://study.lishiming.net/.mem_se.txt • mv .mem_se.txt /usr/local/apache2/htdocs/session.php • 其中session.php内容能够参考https://coding.net/u/aminglinux/p/yuanke_centos7/git/blob/master/21NOSQL/session.php • curl localhost/session.php //结果相似于1443702394<br><br>1443702394<br><br>i44nunao0g3o7vf2su0hnc5440 • 命令行链接redis,也能够查看到该key以及对应的值 • 若是想用php链接redis cluster,须要使用predis扩展 • 安装方法相似phpredis,predis扩展地址https://github.com/nrk/predis
这里测试因此一台机器开启两个redis来测试其主从同步是否正常git
• cp /etc/redis.conf /etc/redis2.conf • vim /etc/redis2.conf //须要修改port,dir,pidfile,logfile port 6380 pidfile /var/run/redis_6380.pid logfile "/tmp/log/redis2.log" dir /data/redis2_data/ • 还要增长一行 • slaveof 127.0.0.1 6379 • 若是主上设置了密码,还须要增长 • masterauth 123456 //设置主的密码 • 启动以前建立新的dir目录 mkdir /data/redis2_data/ • redis-server /etc/redis2.conf ps aux |grep redis netstat -lntp |grep redis info #查看主从是否正常
[root@quyifan ~]# redis-cli -p 6379 127.0.0.1:6379> keys * 1) "PHPREDIS_SESSION:ps8ohkch31ar3h4973t3aakuo1" 2) "ket2" 3) "PHPREDIS_SESSION:c65qqo3cf61q6ma3jhv2de1d36" 4) "key2" 5) "PHPREDIS_SESSION:k8o6avic1kiqeks31k90h1pqk6" 6) "quyifan" 7) "key3" 8) "key1" 127.0.0.1:6379> exit [root@quyifan ~]# redis-cli -p 6380 127.0.0.1:6380> keys * 1) "PHPREDIS_SESSION:c65qqo3cf61q6ma3jhv2de1d36" 2) "ket2" 3) "PHPREDIS_SESSION:ps8ohkch31ar3h4973t3aakuo1" 4) "key1" 5) "quyifan" 6) "key3" 7) "key2" 8) "PHPREDIS_SESSION:k8o6avic1kiqeks31k90h1pqk6" 127.0.0.1:6379> info #查看主从是否正常 127.0.0.1:6380> info #查看主从是否正常
#若是有报错 cat /var/log/redis.log 2887:S 13 Oct 18:27:42.837 * Connecting to MASTER 192.168.59.131:6379 2887:S 13 Oct 18:27:42.837 * MASTER <-> SLAVE sync started 2887:S 13 Oct 18:27:42.838 # Error condition on socket for SYNC: Connection refused 2887:S 13 Oct 18:27:43.846 * Connecting to MASTER 192.168.59.131:6379 在 Redis 主 服务器上的redis.conf中修改bind字段,将 bind 127.0.0.1修改成0.0.0.0