redis编译安装并以非root运行

redis漏洞全球众多服务器沦陷,这里我推荐使用牛盾云安全加速
 
临时解决方案
 
配置bind选项, 限定可以连接Redis服务器的IP, 并修改redis的默认端口6379.
配置AUTH, 设置密码, 密码会以明文方式保存在redis配置文件中.
配置rename-command CONFIG “RENAME_CONFIG”, 这样即使存在未授权访问, 也能够给攻击者使用config指令加大难度
好消息是Redis作者表示将会开发”real user”,区分普通用户和admin权限,普通用户将会被禁止运行某些命令,如config
 
1.下载源码包编译安装
# cd /usr/local/src/
# tar -xzvf redis-2.8.19.tar.gz && cd redis-2.8.19
# make MALLOC=libc
# make test
根据报错情况,需安装:
# yum install tcl
可能还需要先安装yum install make gcc
再次make test测试下
# make test
make会在目录下生成四个可执行文件:redis-benchmark、redis-cli、redis-server、redis-stat
# make install
注:这个操作会将生成的可执行文件复制到/usr/local/bin中
 
2.创建启动所需目录及文件
# useradd -d /home/redis redis -s /sbin/nologin
# mkdir -p /var/lib/redis
# mkdir -p /var/log/redis
# chown -R redis.redis /var/lib/redis
# chown -R redis.redis /var/log/redis
# cd  /usr/local/src/redis-2.8.19/utils/
# ./install_server.sh
这个执行后会自动生成相关目录及文件
第一个询问redis端口,不做更改则直接回车即可
第二个询问配置文件路径,我们输入/etc/redis-conf
第三个询问日志文件路径,我们输入/var/log/redis/redis.log
第三个询问数据库文件存放目录,我们输入/var/lib/redis
接下来会询问redis-server路径,我们编译安装时没有指定安装目录,所以默认路径是正确的,直接回车
到最后询问是否按照此配置进行安装,回车
 
 
# sed -i -e ‘s/\/var\/run\/redis_6379.pid/\/var\/lib\/redis\/redis.pid/g’ /etc/redis-conf
这里bind根据需求来,一般来说bind在127.0.0.1上即可。如果bind在内网IP或者公网IP,安全考虑一定要配置iptables,甚至redis密码访问
如:
-A INPUT -s 1.2.3.4/32 -p tcp -m tcp –dport 6379 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 6379 -j DROP
 
# sed -i -e ‘s/# bind 127.0.0.1/bind 127.0.0.1/g’ /etc/redis-conf
# mv /etc/init.d/redis_6379 /etc/init.d/redis
对启动文件做适当调整
# sed -i -e ‘s/\/var\/run\/redis_6379.pid/\/var\/lib\/redis\/redis.pid/g’ /etc/init.d/redis
# sed -i -e’/\$EXEC \$CONF/s/^/#/’ /etc/init.d/redis
# sed -i -e ‘/\$EXEC \$CONF/a\su – redis -s \/usr\/local\/bin\/redis-server \/etc\/redis-conf’ /etc/init.d/redis
# chkconfig –add redis
# chkconfig redis –level 345 on
# chkconfig –list |grep redis
 
#  service redis start
或者# /etc/init.d/redis start
再开一个终端,查看日志,工具错误提示修改
# tail -f /var/log/redis/redis.log
 
可能需要修改的有:
# ulimit -a
# ulimit -HSn 524288
# cat /proc/sys/net/core/somaxconn
# echo “ulimit -HSn 524288” >> /etc/rc.local
# echo “##add by ade20151202” >> /etc/sysctl.conf
# echo “net.core.somaxconn = 2048” >> /etc/sysctl.conf
# echo “vm.overcommit_memory=1” >> /etc/sysctl.conf
# sysctl -p
# cat /proc/sys/net/core/somaxconn
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# echo “echo never > /sys/kernel/mm/transparent_hugepage/enabled” >> /etc/rc.local
测试连接是否正常,创建一个
# redis-cli
127.0.0.1:6379> info
127.0.0.1:6379> keys *
127.0.0.1:6379> set name ade
127.0.0.1:6379> get name
127.0.0.1:6379> exists name
127.0.0.1:6379> keys *
# redis-cli shutdown
127.0.0.1:6379> quit
重启启动redis后再次查看keys
 
 
参考链接:

 

Print Friendly

发表评论

电子邮件地址不会被公开。 必填项已用*标注