MySQL数据库生产环境安全规范
发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,一、MySQL服务器安全规范1. 禁止应用直连DB,一般通过代理访问2. 禁止DB公网访问。3. 禁止生产和办公互通,需生产环境和办公环境隔离。4. Linux系统初始化安全选项:1)、一些alias
千家信息网最后更新 2024年11月28日MySQL数据库生产环境安全规范一、MySQL服务器安全规范
1. 禁止应用直连DB,一般通过代理访问
2. 禁止DB公网访问。
3. 禁止生产和办公互通,需生产环境和办公环境隔离。
4. Linux系统初始化安全选项:
1)、一些alias,写入/etc/profile,防止误操作
alias c='clear'
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias MySQL='MySQL -U'
其中MySQL -U,防止update和delete没有指定条件,拒绝操作。
2)、删除linux操作日志信息、MySQL操作历史记录,避免被拖库。
rm .bash_history .MySQL_history
ln -s /dev/null .bash_history
ln -s /dev/null .MySQL_history
3)、避免"Too many open files"
OS限制:cat /etc/security/limits.conf,MySQL用户能够打开65535个文件描述符
MySQL soft nofile 65535
MySQL hard nofile 65535
my.cnf参数修改:
open_files_limit = 65535
innodb_open_files=65535
5. MySQL初始化配置安全选项:
1)、合理规划目录结构,日志目录顺序写建议机械盘(binlog/slowlog/relaylog),数据目录随机写建议ssd。
2)、MySQL相关目录设置专用MySQL组和用户,MySQL后台启动方式不能以root来启动,比如通过MySQL用户 。
3)、设置bind-address为内网本机IP。
4)、修改MySQL默认服务端口号,不推荐使用3306,不同业务设置不同的端口号。
5)、通过修改max_connections和max_user_connections来控制最大连接数,过载保护。
6)、启用safe-user-create,用户不能用GRANT语句创建新用户,除非用户有MySQL.user表的INSERT权限。
7)、禁止local-infile=1,打开load data local file权限,避免数据泄漏和黑客攻击。
8)、禁止skip-grant-tables启动,防止MySQL绕过权限系统
9)、配置加上skip-name-resolve,防止主机名不被解析。
10)、禁止skip-networking,其它机器不能使用tcp/ip连接。
11)、禁止symbolic-links=1,关闭软链接功能。
二、MySQL帐号管理安全策略和MySQL权限相关的系统表:
1. MySQL.USER表
2. MySQL.DB表
3. MySQL.TABLES_PRIV表
4. MySQL.COLUMNS_PRIV表
自上而下,逐级验证,逐级进行账户权限的粒度控制
MySQL初始化:
1. 删除线上密码长度小于16的帐号。
2. 删除非root账户
3. 删除非localhost和127.0.0.1账户。
4. 删除test数据库
5. 账号区分:监控帐号、管理帐号、复制帐号、备份帐号、应用帐号
1)、监控帐号(localhost和127.0.0.1):
GRANT SELECT,PROCESS,REPLICATION CLIENT
2)、备份帐号(localhost和127.0.0.1):
GRANT SELECT,LOCK TABLES,RELOAD
3)、复制帐号(对应主库ip):
GRANT REPLICATION SLAVE,REPLICATION CLIENT
4)、管理帐号(对应代理ip):
GRANT ALL PRIVILEGES
5)、root帐号
root密码采用强密码策略,至少32位随机密码,推荐使用pwgen和makepasswd来生成32位随机密码,包含大小写、数字、字母、特殊字符。
root帐号只授权localhost和127.0.0.1,不得授予%权限。
root帐号建议每3个月修改一次,不同实例,设置不同的root密码。
6)、应用帐号
a. 应用帐号不得拥有Super、Create、Drop、File,Grant,Reload,Shutdown,Process等权限。
b. 最小权限原则:select,insert,update,delete权限,禁止应用帐号权限设置为all。
c. 应用帐号不得拥有系统数据库(MySQL)的任何权限,不能使用*.*来授权。
d. 应用帐号只给所属应用的数据库授权,只给其所属应用的IP或代理授权。
e. MySQL从库必须添加read-only,只给select权限,严禁all,导致只读失效。
f. 应用帐号密码策略同root,建议每3个月修改一次。
三、MySQL数据安全策略
1. 物理(xtrabackup)和逻辑(MySQLdump)相结合的备份策略,全备+增量+异地。
2. 数据库备份文件定期回放,定期验证备份的可恢复性。
3. 针对重要业务系统建立delay数据库或者采取Linux初始化时设置lvm策略,可快照闪回。
4. 假设有Binlog Server,遇到紧急情况可数据恢复。
附:MySQL命令行提示配置
MySQL -uroot -p123456 --prompt="MySQL-\\v->[\\r:\\m:\\s] [\\u@\\h:\\d] >"
1. 禁止应用直连DB,一般通过代理访问
2. 禁止DB公网访问。
3. 禁止生产和办公互通,需生产环境和办公环境隔离。
4. Linux系统初始化安全选项:
1)、一些alias,写入/etc/profile,防止误操作
alias c='clear'
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias MySQL='MySQL -U'
其中MySQL -U,防止update和delete没有指定条件,拒绝操作。
2)、删除linux操作日志信息、MySQL操作历史记录,避免被拖库。
rm .bash_history .MySQL_history
ln -s /dev/null .bash_history
ln -s /dev/null .MySQL_history
3)、避免"Too many open files"
OS限制:cat /etc/security/limits.conf,MySQL用户能够打开65535个文件描述符
MySQL soft nofile 65535
MySQL hard nofile 65535
my.cnf参数修改:
open_files_limit = 65535
innodb_open_files=65535
5. MySQL初始化配置安全选项:
1)、合理规划目录结构,日志目录顺序写建议机械盘(binlog/slowlog/relaylog),数据目录随机写建议ssd。
2)、MySQL相关目录设置专用MySQL组和用户,MySQL后台启动方式不能以root来启动,比如通过MySQL用户 。
3)、设置bind-address为内网本机IP。
4)、修改MySQL默认服务端口号,不推荐使用3306,不同业务设置不同的端口号。
5)、通过修改max_connections和max_user_connections来控制最大连接数,过载保护。
6)、启用safe-user-create,用户不能用GRANT语句创建新用户,除非用户有MySQL.user表的INSERT权限。
7)、禁止local-infile=1,打开load data local file权限,避免数据泄漏和黑客攻击。
8)、禁止skip-grant-tables启动,防止MySQL绕过权限系统
9)、配置加上skip-name-resolve,防止主机名不被解析。
10)、禁止skip-networking,其它机器不能使用tcp/ip连接。
11)、禁止symbolic-links=1,关闭软链接功能。
二、MySQL帐号管理安全策略和MySQL权限相关的系统表:
1. MySQL.USER表
2. MySQL.DB表
3. MySQL.TABLES_PRIV表
4. MySQL.COLUMNS_PRIV表
自上而下,逐级验证,逐级进行账户权限的粒度控制
MySQL初始化:
1. 删除线上密码长度小于16的帐号。
2. 删除非root账户
3. 删除非localhost和127.0.0.1账户。
4. 删除test数据库
5. 账号区分:监控帐号、管理帐号、复制帐号、备份帐号、应用帐号
1)、监控帐号(localhost和127.0.0.1):
GRANT SELECT,PROCESS,REPLICATION CLIENT
2)、备份帐号(localhost和127.0.0.1):
GRANT SELECT,LOCK TABLES,RELOAD
3)、复制帐号(对应主库ip):
GRANT REPLICATION SLAVE,REPLICATION CLIENT
4)、管理帐号(对应代理ip):
GRANT ALL PRIVILEGES
5)、root帐号
root密码采用强密码策略,至少32位随机密码,推荐使用pwgen和makepasswd来生成32位随机密码,包含大小写、数字、字母、特殊字符。
root帐号只授权localhost和127.0.0.1,不得授予%权限。
root帐号建议每3个月修改一次,不同实例,设置不同的root密码。
6)、应用帐号
a. 应用帐号不得拥有Super、Create、Drop、File,Grant,Reload,Shutdown,Process等权限。
b. 最小权限原则:select,insert,update,delete权限,禁止应用帐号权限设置为all。
c. 应用帐号不得拥有系统数据库(MySQL)的任何权限,不能使用*.*来授权。
d. 应用帐号只给所属应用的数据库授权,只给其所属应用的IP或代理授权。
e. MySQL从库必须添加read-only,只给select权限,严禁all,导致只读失效。
f. 应用帐号密码策略同root,建议每3个月修改一次。
三、MySQL数据安全策略
1. 物理(xtrabackup)和逻辑(MySQLdump)相结合的备份策略,全备+增量+异地。
2. 数据库备份文件定期回放,定期验证备份的可恢复性。
3. 针对重要业务系统建立delay数据库或者采取Linux初始化时设置lvm策略,可快照闪回。
4. 假设有Binlog Server,遇到紧急情况可数据恢复。
附:MySQL命令行提示配置
MySQL -uroot -p123456 --prompt="MySQL-\\v->[\\r:\\m:\\s] [\\u@\\h:\\d] >"
帐号
权限
应用
数据
密码
用户
策略
安全
数据库
备份
系统
不同
建议
目录
账户
代理
管理
配置
环境
生产
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全法总共有多少章多少条
错误1801数据库 存在
山东国产服务器哪个好
数据库一直显示在还原状态
十一选五遗漏数据库
南方gps出现登录服务器错误
数据库查询记录并列条件
市局网络安全和技术
陇大互联网科技有限公司
服务器证书管理工具下载
互联网科技标准色
美版苹果服务器故障
联想服务器突然没有声音了
互联网科技企业面试
开局自带钻石器的服务器都有哪些
河南大数据软件开发定做
服务器的远程桌面黑屏
营销移动终端网络安全研究
温州销售客户管理软件开发
数据库查看病人信息
数据库原理及应用教程第三版课后答案
怎么在服务器里挂机我的世界
利用数据库建立自定义流程图
is 服务器
数据库安全备份
支付宝网络安全人员是谁
网红直播软件开发公司
光与夜之恋怎么转服务器吗
魔兽世界全服tbc型服务器
教师网络安全平台