作为网络服务的中心,网络服务器,经常会受到来自外部的***,今天简单概括一下,作为服务端重要组成部分--数据库服务,存在哪些不安全的地方,以及如何去防范;


常见服务的安全问题:

1、redis服务;

2、mysql服务;


redis服务所存在的潜在安全问题:

redis crackit 漏洞利用实例;

由于很多reids服务都是免密码登录的,

连接无密码认证的reids服务;

测试是否支持config命令,并查看当前db文件位置;

修改db文件路径到crontab文件(覆盖/var/spool/cron/crontabs/下的文件)

修改db文件路径到ssh登陆秘钥文件(覆盖~/.ssh/authorized_keys文件)

这样,基本就可以通过***机器,ssh到redis所属机器上了。并且拿到启动redis的用户权限;


redis服务需要注意的安全常识:

redis服务安全配置(/etc/redis.conf)

只监听localhost或对访问源进行限制;

使用低权限的独立服务账号(redis)

增加密码认证

禁用config、flushdb、flushall、keys等特殊指令;


mysql服务安全配置:

只监听localhost或对访问源进行限制;

使用低特权的独立服务账号(由于mysql内置了一套较为高级的账号管理系统,不同的账号不仅对不同的数据库、表有不同的管理权限,而且不同的账号对其他的账号具有一定的权限管理,相当的高级)

合理划分mysql账号权限

为所有sql账号设置复杂密码,禁用特权账号远程登陆

合理设置linux文件系统权限

禁止mysql账号对非数据库文件的写入



对于包括数据库服务在内的,所有服务而言,一些通用的防御手段

采用规范的软件安装方法,对安装软件以及相关的配置运行目录权限进行较为注意的设置,

只保留必要的服务/端口

采取访问来源限制

合理的权限分配(文件权限和运行权限)

及时修复已知漏洞,补丁更新;


安全归类表格:

服务分类 通用 redis mysql web服务
外部 访问源控制 限制源ip 限制源ip waf等
外部 访问鉴权 设置强密码 设置强密码 增加token等方式
内部 程序内防御 禁用特权命令 只允许访问部分数据 判断数据是否合法
内部 服务权限划分 运行权限限制 运行权限限制 运行权限限制
内部 服务权限划分 文件权限划分 文件权限划分 文件权限划分
内部 操作系统防御 修补已知漏洞 修补已知漏洞 修补已知漏洞



设置密码策略:


密码长度、字符集、独立密码、独立模式

推荐工具:mkpasswd (linux系统工具)


运行权限限制:

服务应运行在独立的低特权账号下

需监听1000以下端口则采用master-worker结构(如:nginx/apache/php-fpm)


工作账号运行服务的风险:

服务呗攻破后获取工作账号特权(可控制较多重要数据)

如,通过修改 ~/.bashrc,加入反弹shell脚本

当工作账号以sudo -s/-i 等方式切换到root时,会以root加载工作账号的环境,即执行恶意脚本

***者利用工作账号的正常操作实现提权;


文件权限限制:

禁止使用777等全员读写执行权限

合理设置文件属主及权限,重要文件及目录禁止读写执行

可写目录不解析,解析目录不可写(web)

可写文件不执行,执行文件不可写(mysql)


本文来自:http://blog.csdn.net/dengjiexian123/article/details/52973247

参考文章:https://blog.51cto.com/simeon/2115184