修改服务器redis配置文件,【安全】redis配置不当可导致服务器被远程登录或权限提升...

想起了前段时间也补过这个漏洞,不过没有像楼主服务器遭受到攻击!

总结下修复漏洞方案:

Redis服务器配置不当的体现:

1、redis服务已root账户/权限启动;

2、redis服务无需密码或弱密码进行认证;

3、redis服务器本身对互联网开放了SSH服务,允许key方式登录。

修复方案:

1、不要以root用户允许redis

2、修改运行redis的端口,编辑配置文件(/etc/redis.conf)

port 4321

3、如果只需要本地访问,编辑配置文件(/etc/redis.conf)

bind 127.0.0.1

4、设定密码,编辑配置文件

requirepass ******

5、在启动的时候需要指定配置文件的路径,这些设置才会生效

redis-server /etc/redis.conf

Redis安全配置参考:

服务器上操作过程大家可参考:

第一步:

非root权限启动,建立普通用户并设置密码,redis-server和redis.conf宿主权限修改为普通用户。

[root@cdn bin]# chown -R ugcstore:root /usr/loca/bin/redis-server

[root@cdn bin]# chown -R ugcstore:root /usr/local/redis/redis.conf

切换到普通用户

su - ugcstore

后台启动redis:

nohup redis-server /usr/local/redis/redis.conf &

查看redis进程,验证宿主用户

ps -ef |grep redis

ugcstore 17602     1  0 22:06 ?        00:00:01 redis-server x.x.x.x:4321

第二步:

一般是在/etc/redis.conf,如果/etc下没有找到,find搜索下.

操作的服务器redis.conf文件位置: /usr/local/redis/redis.conf

port 4321 #修改端口

requirepass ****** #设置密码

bind x.x.x.x  # 非本机可访问

第三步:

调整连接redis的程序,设置密码,验证程序是否能正确获取数据.

测试数据:key:foo value:bar

[root@cdn ugc]# telnet x.x.x.x 4321

Trying 65.255.33.64...

Connected to 65.255.33.64.

Escape character is '^]'.

auth E38faeQGtxr##rOP

+OK

set foo bar

+OK

get foo

$3

bar

PHP程序测试:

/data/vfetch/public/test.php

* @author david*//**

* 创建redis链接*/functioncreateConn()

{try{$redis=newRedis;$redis->connect('x.x.x.x',4321);$redis->auth('******');return$redis;

}catch(RedisException$e)

{returnfalse;

}

}$rediss=createConn();echo$rediss->get('foo');

Java程序测试:

publicclassJedisTest {staticJedisPool pool=null;publicstaticJedisPool getPool() {if(pool==null) {

JedisPoolConfig config=newJedisPoolConfig();

config.setMaxActive(500);

config.setMaxIdle(20);

config.setMaxWait(1000*30);

config.setTestOnBorrow(true);

pool=newJedisPool(config,"x.x.x.x",4321,5000,"******");

}

System.out.println(pool);returnpool;

}publicstaticvoidclose(JedisPool pool, Jedis redis) {if(redis!=null) {

pool.returnResource(redis);

}

}publicstaticString get(String key) {

String value=null;

JedisPool pool=null;

Jedis jedis=null;try{

pool=getPool();

jedis=pool.getResource();

value=jedis.get(key);

}catch(Exception e) {

pool.returnBrokenResource(jedis);

}finally{

close(pool, jedis);

}returnvalue;

}publicstaticvoidmain(String[] args) {

System.out.println(get("foo"));

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值