近些年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