在大数据处理任务当中,涉及到数据管理的操作时,数据安全是非常重要的一个指标。以Redis组件来说,基于内存存储,带来了性能优势,同时也带来了安全方面的挑战。今天的大数据开发学习分享,我们就来讲讲Redis安全配置策略方面的问题。
一、Redis运行环境安全
Redis最小操作权限
◐修改Redis服务的运行账号,以较低权限账号运行Redis服务,限制Redis服务运维人员修改操作系统的其他敏感文件。
◐为保护Redis服务相关文件,避免任意登录服务器人员操作Redis服务资源文件,建议设置Redis主目录运行权限为700(文件所有者可读可写可运行),配置文件单独为600(文件所有者可读可写不能执行)。
隐藏操作记录中的敏感信息
◐操作系统可通过ps命令或history命令显示用户输入过的操作命令,如果运维人员通过Redis-cli指定-a参数,Redis服务密码会被操作系统记录,攻击者登录后可获取Redis服务的登录密码。
【解决方案】:尽量通过API访问的方式请求Redis服务。
配置Redis运行环境防火墙策略
◐设置Redis服务所在环境的防火墙策略,只允许特定的IP地址访问Redis服务。如果Redis服务有代理层,则也应对代理层所在环境设置防火墙策略。
例如:对于Redhat7操作系统,可以使用命令将ip加入白名单:firewall-cmd--permanent--add-rich-rule="rule family="ipv4"source address="白名单IP"accept"再使用firewall-cmd–reload重新加载防火墙。
二、Redis客户端安全
禁用危险命令
◐Redis服务无命令权限分组,任意用户登录Redis服务后可执行任意命令,如flush清空数据库数据、config修改redis配置等。
【解决方案】:修改redis.conf对重要命令进行隐藏,使其不能被随意执行。包括不限于flushdb,flushall,pexpire,del,config,shutdown,bgsave,save,stop,srm,rename,debug,eval,grewriteaof等。
慎用影响Redis服务性能的命令
◐keys命令能获取当前Redis服务中的所有key值信息,连续的keys命令可能令Redis阻塞,导致Redis服务宕机,形成服务拒绝攻击,使用keys命令应谨慎!
【解决方案】:使用scan命令,SCAN cursor{match pattern}{Count}
三、Redis开发安全
设置数据失效时间
◐向Redis存入缓存、验证码等数据时,如果忘记配置key的过期时间,则随着数据增长,可能会出现内存溢出的现象。
【解决方案】:对有必要的key设置失效时间和失效策略。
慎用不设置范围的批量操作
◐Redis是单线程运行的,当取数操作不设置取数范围时,会导致数据量过大而引起引起Redis阻塞,出现服务拒绝攻击。例如使用hgetall命令,会取出相关hash的所有数据,在此期间会阻塞Redis服务,导致大量的客户端请求超时,引起服务拒绝攻击。
【解决方案】:对于批量操作,考虑是否一定得一次性取出所有数据,可否分批次处理。
敏感数据存储前加密
◐由于Redis没有数据隔离,所有连接到Redis服务的客户端均可互相读取数据,故建议对存储到Redis的数据进行加密,限制Redis服务运维人员或攻击者登录Redis服务获取到敏感数据。
【解决方案】:在存储数据前,对数据进行加密,再将数据存储到Redis中。
关于大数据开发学习,Redis安全配置策略,以上从三个大的方面为大家做了解读,而具体到各个层面,还需要具体结合到场景和应用需求,去选择相应的措施。
网友评论