MySQL数据库生产环境安全规范
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,一、MySQL服务器安全规范1. 禁止应用直连DB,一般通过代理访问2. 禁止DB公网访问。3. 禁止生产和办公互通,需生产环境和办公环境隔离。4. Linux系统初始化安全选项:1)、一些alias
千家信息网最后更新 2025年01月21日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安全错误
数据库的锁怎样保障安全
电脑代理服务器连接失败
河南盛商网络技术
电脑怎么设置爱奇艺代理服务器
数据库的安全性包含哪些方面
p2p网络技术什么意思
电脑生存服务器推荐
服务器硬盘与台式硬盘区别
远程桌面要输入服务器地址
ps4 选服务器
服务器如何看硬盘有多少个
监控服务器的别名
山西麻将软件开发诚信企业
实时监控数据库语言
数据库一张表可以添加多少个主键
学IT 专注软件开发
ps5战争雷霆服务器连接不上
银行数据库安全如何解决
工业网络安全技术规范
定制app软件开发公司深圳
香港上市网络安全审查
数据库ip地址
沾益网络安全
路由器用什么数据库
网络安全方法及设计
数据库定义上机实验报告
洛阳数字货币软件开发
网站独立服务器租赁一般多少钱
靠谱的erp管理软件开发公司
中国工程院的网络安全性
冬奥期间网络安全保障情况汇报