linux覆盤:redis主從配置等

redis安全設置

近些年redis很火黑客也不少,常見的redis被黑案例:php

Redis 服務啓動了,可是監聽了一個全網IP,若是6379默認端口沒有更改,而且iptables也處於關閉,公網IP 也開放着,Redis也沒有設置任何密碼,黑客就會掃描端口,而後就能夠輕輕鬆鬆登陸你的Redis服務器,而且是超級管理員的權限。而後黑客就能夠設置dir dbname,dir 定義到/root/.ssh 且dbname定義爲:.ssh/authorized_keys 再把這個值寫上本身的公鑰。 這些應該都不陌生吧,這不就活生生的把黑客的公鑰上傳到了我們的服務器中,而後利用超級管理員作任何想作的事情了linux

解決方法:nginx

  1. 設置密碼-a登陸
  2. 修改磨人的6379端口防止全網被掃描
  3. 監聽內網ip,用空格分割內網ip
  4. 設定專用的redis登陸帳戶
  5. 修改redis的config命令黑客進入後沒法更改配置參數(config get * //獲取全部配置參數)
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"

redis慢查詢日誌

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 //查看慢查詢日誌條數

php安裝redis擴展

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

redis中存儲session

#在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主從配置

這裏測試因此一臺機器開啓兩個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
相關文章
相關標籤/搜索