redis安全问题【原】
前提
假设redis安装在 IP 地址为 192.168.0.123 的linux服务器 .
我的本机Win10操作系统 IP地址为 192.168.0.45 , 有一套java客户端代码可调用linux 上的redis服务.
redis.conf 中 bind 的安全性
- 首先对bind作下解释,bind 后跟的是本机自身可以识别的本地网卡IP地址,而不是说允许IP为XXX.XXX.XXX.XXX的客户端访问redis服务
- 其次强调一点: 如果配置两行bind,不管前面几行的 IP 是否真实存在也不会报错,只以最后一行为标准
bind 192.168.0.123
bind 127.0.0.1
- 另外强调一点: 如果单行配置关联多个 IP, 则这些 IP 必须是当前机器自身所在的网卡IP, 只要其中一个IP机器自身不能识别就会报错,所以可以写成
bind 192.168.0.123 127.0.0.1
奇葩的是,网上广为流传的是用bind 127.0.0.1 设置成只允许redis所在机器访问,然而在集群模式下,这个脑残设计有什么意义呢! 难道所有人都没有遇到A机器访问B机器redis的应用场景吗?
参考文章 http://blog.csdn.net/fxq8866/article/details/58238802 后,总结如下
方式一 | bind IP列表 | win10 java客户端问题 | linux 上redis-cli客户端问题 | 是否推荐 |
1 | bind 192.168.0.123 | 正常 | Connection refused | 不 |
2 | bind 127.0.0.1 | Connection refused | 正常 | 不 |
3 | bind 192.168.0.123 127.0.0.1 | 正常 | 正常 | 是 |
4 | bind 0.0.0.0 | 正常 | 正常 | 是 |
所以尽量使用方式3或4来bind IP
用防火墙iptables配置指定IP才能访问redis服务
在网上四处摸索后觉得唯一合理的做法,就是使用防火墙iptables,针对6379端口做IP拦截策略,没有其它.
首先安利三波 iptables详解 iptables用法简介 关于iptables添加规则不生效的问题
于是配置以下三步:
- 只允许IP为192.168.0.1到192.168.0.255的 IP 能访问redis服务,我的win10 所在IP为192.168.0.45
- 其它所有IP禁止访问6379端口
- 保存IP 策略,让重启以后也能生效
- 查看iptables规则
[root@localhost bin]#iptables -I INPUT -s 192.168.0.1/192.168.0.255 -p tcp --dport 6379 -j ACCEPT
[root@localhost bin]#iptables -A INPUT -p tcp --dport 6379 -j REJECT
[root@localhost bin]#service iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables: [确定]
[root@localhost bin]#service iptables status
部分参数解释 -I : 添加到头部 -A: 添加到尾部
因为规则是按从头到尾匹配优先级执行的,所以 REJECT要追加到尾部,从而让ACCEPT先匹配,不然会导致Connection 问题
redis.conf 配置访问密码
redis设置访问密码有两种方式
- 一种是redis.conf文件中指定密码(强列推荐)
requirepass mypassword
- 一种是在redis-cli登录后使用命令(不推荐,千万别用)
127.0.0.1:6379> CONFIG set requirepass "mypassword"
127.0.0.1:6379> CONFIG get requirepass
如果设置了主从模式,则需要在从数据库的配置文件中通过masterauth参数设置主数据库的密码
另外因为redis的强大性能,黑客可以每秒十几万的密码批量交互redis服务端以验证真实密码,所以,我们的redis密码尽量设置得又臭又长点吧.
redis.conf 清除重要命令
禁用CONFIG, flushall ,flushdb 这三个重要命令
rename-command CONFIG ""
rename-command flushall ""
rename-command flushdb ""
nobody 最低权限启动redis (暂不会)
su -m nobody -c xxx
redis安全问题【原】的更多相关文章
- TP5.0 Redis(单例模式)(原)
看到好多面试都问设计模式,我就简单的了解了一下,顺便把之前封装好的Reis做了一次修改. 单例模式(Singleton Pattern 单件模式或单元素模式) 单例模式确保某个类只有一个实例,而且自行 ...
- java线程安全问题原理性分析
1.什么是线程安全问题? 从某个线程开始访问到访问结束的整个过程,如果有一个访问对象被其他线程修改,那么对于当前线程而言就发生了线程安全问题:如果在整个访问过程中,无一对象被其他线程修改,就是线程安全 ...
- CentOS 6.6下Redis安装
安装redis的过程非常的简单,具体参考教程官网:http://redis.io/download 1.下载并安装 下载的redis-3.2.5.tar.gz安装包默认在/usr/local/src/ ...
- 安装redis,搭建环境
这里以redis-4.0.9为例 我自己为了好方便管理自己的软件包,就在/usr/local/目录下创建了一个software目录 mkdir /usr/local/software cd ...
- Nginx+Redis+Ehcache大型高并发高可用三层架构总结
在生产环境中,对于高并发架构,我们知道缓存 是最重要的环节,对于大量的高并发.可以采用三层缓存架构来实现,也就是Nginx+Redis+Ehcache 对于中间件Nginx常来做流量分发,同事ngin ...
- 【Redis面试题】Redis的字符串是怎么实现的?
年前本人在找工作面试时在Redis相关问题上可栽了跟头.在面试前按常规套路准备了一下,比如 Redis 的常用5种数据结构,Redis持久化策略,Redis实现分布式锁,简单发布订阅等等都准备了,当时 ...
- redis数据存储--C++连接redis
一.下载的是Redis Windows版本:下载地址:https://github.com/microsoftarchive/redis:解压到:E:\Software\redis-3.0: 二.用V ...
- Android Logcat Security(转)
讲解了在Android开发中logcat使用不当导致的安全问题 原帖地址:http://drops.wooyun.org/tips/3812 0x00 科普 development version : ...
- Java架构师必备技能:docker使用大全
前言 java工程师成长为架构师是一个艰难且耗费心力的过程,不仅仅需要熟悉java体系内相关的技术,同时要掌握许多运维相关的操作技能,随着k8s逐渐成为微服务持续集成开发难以越过的基础设施之后,d ...
随机推荐
- Python里的单下划线,双下划线,以及前后都带下划线的意义
Python里的单下划线,双下划线,以及前后都带下划线的意义: 单下划线如:_name 意思是:不能通过from modules import * 导入,如需导入需要:from modules imp ...
- opencv 仿射变换
import cv2 as cv import numpy as np img = cv.imread('../images/face.jpg') h, w = img.shape[:2] mat_s ...
- MT【273】2014新课标压轴题之$\ln2$的估计
已知函数$f(x)=e^x-e^{-x}-2x$(1)讨论$f(x)$的单调性;(2)设$g(x)=f(2x)-4bf(x),$当$x>0$时,$g(x)>0,$求$b$的最大值;(3)已 ...
- Hyper-V 配置虚拟网络
Hyper-V功能异常强大,不了解的自行GG 本文介绍如何使用Hyper-V在本机建立虚拟网络,创建虚拟交换机 打开Hyper-V Manager,选择右边侧边栏的Virtual Switch Man ...
- Before NOIP 2018
目录 总结 刷题 2018 - 9 - 24 2018 - 9 - 25 2018 - 9 - 26 2018 - 9 - 27 2018 - 9 - 28 2018 - 9 - 29 2018 - ...
- Python的快排应有的样子
快排算法 简单来说就是定一个位置然后,然后把比它小的数放左边,比他大的数放右边,这显然是一个递归的定义,根据这个思路很容易可以写出快排的代码 快排是我学ACM路上第一个让我记住的代码,印象很深 ...
- Haunted Graveyard ZOJ - 3391(SPFA)
从点(n,1)到点(1,m)的最短路径,可以转换地图成从(1,1)到(n,m)的最短路,因为有负权回路,所以要用spfa来判负环, 注意一下如果负环把终点包围在内的话, 如果用负环的话会输出无穷,但是 ...
- 2017蓝桥杯 省赛D题(方格分割)
6x6的方格,沿着格子的边线剪开成两部分.要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算:包括这3种分法在内,一共有多少种不同的分割 ...
- Libre OJ 130、131、132 (树状数组 单点修改、区间查询 -> 区间修改,单点查询 -> 区间修改,区间查询)
这三题均可以用树状数组.分块或线段树来做 #130. 树状数组 1 :单点修改,区间查询 题目链接:https://loj.ac/problem/130 题目描述 这是一道模板题. 给定数列 a[1] ...
- java实现sftp客户端上传文件以及文件夹的功能
1.依赖的jar文件 jsch-0.1.53.jar 2.登录方式有密码登录,和密匙登录 代码: 主函数: import java.util.Properties; import com.cloudp ...