所选语种没有对应资源,请选择:

本站点使用Cookies,继续浏览表示您同意我们使用Cookies。Cookies和隐私政策>

提示

尊敬的用户,您的IE浏览器版本过低,为获取更好的浏览体验,请升级您的IE浏览器。

升级

FusionCloud 6.3.0 安全管理指南 09

评分并提供意见反馈 :
华为采用机器翻译与人工审校相结合的方式将此文档翻译成不同语言,希望能帮助您更容易理解此文档的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 华为对于翻译的准确性不承担任何责任,并建议您参考英文文档(已提供链接)。
加固MySQL数据库

加固MySQL数据库

加固方案

在执行安全加固前,您需要了解加固方案,包括加固对象、加固场景、加固工具、加固内容及加固所需时间等。

MySQL数据库加固方案如表17-1所示。

表17-1 MySQL数据库加固方案

加固对象

加固场景

加固方式

加固内容

加固所需时间

加固生效方式

MySQL

安装完MySQL数据库、完成系统静默安装、用户创建MySQL数据库实例、完成操作系统加固后,对数据库进行安全加固,增强系统安全性。

说明:

如果您需要对当前运行中的业务系统进行安全加固,请先和华为研发工程师确认好安全加固实施方案。

手工。

详细加固项参考“执行加固操作”。

加固时长:60分钟。

说明:

加固时间会由于环境、网络以及加固项的变化而变化,请以现场实际环境加固时间为准。

加固需要重启数据库才能生效。

加固影响

加固的过程会出现数据库服务不可用,请合理选择加固时间。

加固注意事项

  • 加固项按照等级可划分为重要、一般。
    • 重要:必须加固项。
    • 一般:可选加固项,可能对数据库功能、性能、可靠性有影响。
  • 执行加固前应该在系统管理员协助下确认,服务器各节点运行环境正常,容器网络配置和运行状态正常。
  • 虚拟机5VM场景数据库节点包括:
    • PaaS-Core01
    • PaaS-Core02
    • PaaS-DB01
    • PaaS-DB02
  • 虚拟机1VM部署场景节点包括:
    • PaaS-Core01
  • 文档中的路径<安装根目录>默认为/opt。
  • 本章节中提及的租户管理区、各节点相关信息,请咨询系统管理员。
  • 如果加固中出现操作失败或异常,请联系华为技术工程师进行处理。

使用要求

使用约束

安全使用MySQL数据库,必须遵守如下约束。

  • 禁止通过MySQL客户端修改数据库用户名或者密码。
  • 请在加固前获取数据库信息(参考获取数据库信息)。
使用注意点

使用MySQL数据库过程中,建议注意以下几点:

  • MySQL不同的版本,安全限制不一致,每次升级版本都需要核查安全列表。
  • 使用MySQL客户端连接数据库时,严禁在登录命令中直接输入密码,需要使用交互式方式输入密码。
  • 使用MySQL客户端连接数据库时,必须要添加--disable-reconnect参数,禁止MySQL工具自动重连。示例:./mysql --disable-reconnect -udbuser -p -h {IP} -P {PORT}。
  • 安装数据库软件后,必须修改数据库管理员用户密码。
  • 定期检查数据库是否为优选版本。

执行加固操作

检查MySQL软件合法使用
  • MySQL企业版是收费软件,请确保产品已经购买足够数量的License。具体可通过华为公司PDM网站查询MySQL企业版的BOM编码。可参考的MySQL企业版BOM编码:05051978。
  • MySQL禁止销售A类区域、国家:Cuba,Iran,North Korea,Sudan,Syria,and the Crimea region。具体以MySQL官方说明为准。

附参考链接:

设置IP地址白名单

重要操作。MySQL数据库可通过白名单设置进行访问主机控制,降低被攻击风险。

加固方法
  1. paas用户登录OM-Core01节点。
  2. 获取运维管理域pod和租户管理域pod所在网段:

    执行命令:

    vi /var/paas/bootstrap/knowledge/{配置文件}

    说明:

    请参考数据库节点iptables加固步骤 3,根据实际部署环境选择配置文件fusionstage_XXX.yaml,如果不清楚,请联系管理员获取。

    获取参数“cfe_bootstrap_network_subnet”的值。这里以172.16.0.0/16为例,则运维管理域pod网段为172.16.%。

    获取参数“management_network_subnet”的值。这里以172.17.0.0/16为例,则租户管理域pod网段为172.17.%。

    说明:

    输入网段参数要把子网掩码中的主机号部分用通配符“%”替代。 例如:掩码长度为16、网络IP为172.16.0.0,则填写网段参数值为172.16.%。“%”是匹配白名单处理用的地址格式。

  3. 执行如下命令查询datamgmtservice所在节点。

    kubectl get pod -n fst-manage -oyaml `kubectl get pod -n fst-manage | grep datamgmtservice | awk '{print $1}'` | grep hostIP

  4. 以paas用户登录步骤 3中所查询出的datamgmtservice所在的节点。
  5. 获取数据库节点上需要执行的白名单设置命令

    ./dbacl_tool -cmd generate-acl -tenant fst-manage -instid all -mode initial -hamgraddrs 172.17.%,10.10.10.9,10.10.10.10 -appaddrs 172.17.%,10.10.10.20,10.10.10.21,10.10.10.22,10.10.10.23

    说明:
    • -hamgraddrs填写为步骤 2获取的租户管理区pod网段与om-core01、om-core02节点IP拼接的字符串,网段、IP间以英文逗号分隔。
    • -appaddrs填写为2获取的租户管理域pod网段与所有租户管理域节点IP拼接的字符串,网段、IP间以英文逗号分隔。节点IP请询问系统管理员获取。

    回显信息类似如下:

    Run ACL setting commands on 10.10.10.22:
    ./dbsvc_tool -cmd modify-db-acl -instid paasdbsvr-10_10_10_22-3@10_10_10_23-3 -user dbuser -iplist 10.10.10.22,10.10.10.23,10.10.10.9,10.10.10.10
    ./dbsvc_tool -cmd modify-db-acl -instid paasdbsvr-10_10_10_22-3@10_10_10_23-3 -user ossdbuser -iplist 10.10.10.20,10.10.10.21,10.10.10.22,10.10.10.23,172.17.%
    ./dbsvc_tool -cmd modify-db-acl -instid paasdbsvr-10_10_10_22-3@10_10_10_23-3 -user readdbuser -iplist 10.10.10.9,10.10.10.10,10.10.10.20,10.10.10.21,10.10.10.22,10.10.10.23,172.17.%
    ./dbsvc_tool -cmd modify-db-acl -instid paasdbsvr-10_10_10_22-3@10_10_10_23-3 -user rplUser -iplist 10.10.10.20,10.10.10.21,10.10.10.22,10.10.10.23

  6. 执行白名单设置命令。

    根据步骤 5回显信息,以paas用户分别登录提示的节点,进入/opt/paas/oss/manager/apps/DBAgent/bin目录,直接拷贝回显的所有“./dbsvc_tool”命令行执行 。

    举例说明:

    如回显信息“Run ACL setting commands on 10.10.10.9”,那么以paas用户登录到节点10.10.10.9,执行以下命令设置白名单。

    cd /opt/paas/oss/manager/apps/DBAgent/bin

    ./dbsvc_tool -cmd modify-db-acl -instid deploydbsvr-10_10_10_9-0@10_10_10_10-0 -user dbuser -iplist 10.10.10.9,10.10.10.10

    ./dbsvc_tool -cmd modify-db-acl -instid deploydbsvr-10_10_10_9-0@10_10_10_10-0 -user ossdbuser -iplist 10.10.10.9,10.10.10.10,10.10.10.11,10.10.10.12,172.16.%

    ./dbsvc_tool -cmd modify-db-acl -instid deploydbsvr-10_10_10_9-0@10_10_10_10-0 -user readdbuser -iplist 10.10.10.9,10.10.10.10,10.10.10.11,10.10.10.12,172.16.%

    ./dbsvc_tool -cmd modify-db-acl -instid deploydbsvr-10_10_10_9-0@10_10_10_10-0 -user rplUser -iplist 10.10.10.9,10.10.10.10

    所有执行的命令均返回“Whitelist set successfully.”,表示白名单设置成功。
    说明:
    • 白名单默认包含127.0.0.1、localhost。
    • 白名单设置命令可重复执行。
    • 白名单设置支持多个实例一次加固,命令举例如下:

      ./dbsvc_tool -cmd modify-db-acl -instid deploydbsvr-10_8_39_136-0@10_8_39_138-0,apmdbsvr-10_8_39_136-1@10_8_39_138-1,monitordbsvr-10_8_39_136-2@10_8_39_138-2 -user ossdbuser -iplist 10.8.39.138,10.8.39.136,172.16.%

回退操作

将加固方法中的步骤 6里的命令中-iplist后面的IP换成“%”执行即可。例如:

./dbsvc_tool -cmd modify-db-acl -instid deploydbsvr-10_10_10_9-0@10_10_10_10-0 -user rplUser -iplist %

预期结果

参考表1 中数据库用户对应可访问节点:

例如:

在OM-Core01节点使用ossdbuser用户不能连接除OM*之外的其他namespace节点的数据库实例;

在除OM*之外的其他namespace节点上使用ossdbuser用户不能连接OM-Core01节点的数据库实例。

表17-2 数据库用户对应可访问节点

数据库用户

加固范围参考

运维管理域对应节点名称

租户管理域对应节点名称

dbuser

主备数据节点主机IP;DBHASwitchService所在主机IP。

OM-Core01

OM-Core02

OM-Core01

OM-Core02

Manage-DB01/Manage-Core01

Manage-DB02/Manage-Core02

ossdbuser

本项目内的APP节点主机IP和容器IP段。

OM-*

Manage-*

rplUser

主备数据节点主机IP。

OM-Core01

OM-Core02

Manage-DB01/Manage-Core01

Manage-DB02/Manage-Core02

readdbuser

以上三个帐号白名单并集。

OM-*

OM-Core01

OM-Core02

Manage-*

连接到数据库方法为(以dbuser用户,数据库节点IP为10.8.41.73,数据库端口为32081为例):

/opt/mysql/bin/mysql --disable-reconnect -h10.8.41.73 -P32081 -u dbuser -p

输入数据库dbuser用户的密码(默认密码可以从数据库用户清单文档获取;如果已经修改了密码,请从管理员处获取)。

说明:

输入密码时,支持直接输入和交互式输入两种方式。直接输入密码有可能存在密码泄露的风险。请执行命令时以交互式方式输入密码。

修改默认的用户名和密码

重要操作。预置的用户名和密码必须修改,以降低系统被攻击的风险。

加固方法

参考《维护指南》密码修改指南章节,将数据库的默认用户名密码修改掉。

预期结果

使用默认的用户名和密码无法登录Mysql数据库。

清理使用痕迹

一般操作。使用数据库客户端工具会记录命令历史,清理数据库使用痕迹有助于保护数据库安全。

加固方法
  1. 分别以paas用户登录数据库节点并执行后续步骤。

    说明:
    • 数据库节点参考“加固注意事项”。
    • 本章节用到的节点IP地址请找系统管理员获取。

  2. 切换到root用户。

    su - root

    Password: Password of the user

  3. 执行如下命令清除原有的命令历史,并禁止再记录历史:

    find ~ -name ".mysql_history" -delete

    find /home -name ".mysql_history" -delete

    ln -s /dev/null ~/.mysql_history

  4. 切换到数据库dbuser用户。

    su - dbuser

  5. 执行以下命令清除之前的使用痕迹,并将.mysql_history文件连接到/dev/null

    rm -f ~/.mysql_history

    ln -s /dev/null ~/.mysql_history

    执行以下命令退出到root用户

    exit

  6. 切换到paas用户。

    su - paas

  7. 执行以下命令清除之前的使用痕迹,并将.mysql_history文件连接到/dev/null

    rm -f ~/.mysql_history

    ln -s /dev/null ~/.mysql_history

  8. 查看软连接创建成功,以paas用户登录后,再分别切换rootpaasdbuser用户,执行ll ~/.mysql_history命令查看,以dbuser用户为例,如下图:

    说明:

    ~指操作系统用户Home目录;dbuser用户的~/.mysql_history文件已重定向到/dev/null。

预期结果

操作系统用户的home目录下,没有记录MySQL客户端工具的命令执行历史信息。

paas用户登录后,切换到root用户执行如下命令:

find /root /home -name ".mysql_history" | xargs ls -l

lrwxrwxrwx 1 dbuser dbgroup 9 Apr 22 09:36 /home/dbuser/.mysql_history -> /dev/null
lrwxrwxrwx 1 paas   paas    9 Apr 22 09:36 /home/paas/.mysql_history -> /dev/null
lrwxrwxrwx 1 root   root    9 Apr 22 09:35 /root/.mysql_history -> /dev/null

如果显示信息与上面显示相似,.mysql_history文件是软连接文件,那么加固成功;如果不是软连接文件或者文件不存在,说明需要加固。

限制用户资源

一般操作。通过限制每个数据库用户的资源使用,可以提高数据库的安全性。

参数说明
  • max_questions限制了某个用户每小时最大查询次数。
  • max_updates限制了某个用户每小时最大更新次数。
  • max_connections限制了某个用户每小时最大连接次数。
  • max_user_connections限制了某个用户最大并发连接个数,建议设置为500。

业务优先分析每秒最大的访问量,建议设置值为最大访问量的10倍*3600。例如,业务分析,每秒最大查询次数为1w次,那么max_questions设置为10000*10*3600=360000000。按照同样的方式计算每小时最大更新次数。

各个参数评估之后,假设评估结果如下:

  • max_questions=90000000
  • max_updates=90000000
  • max_connections=50000000
  • max_user_connections=500
加固方法
  1. 使用paas用户登录Paas-Core01节点。
  2. 查询数据库的服务地址、端口。

    cd /opt/paas/oss/manager/apps/DBAgent/bin/

    ./dbsvc_adm -cmd query-db-instance |grep mysql |grep Master

    在返回结果中的每一条记录,就是要操作的数据库实例。其中IP、Port即为数据库的服务地址、端口。下面步骤以IP为10.8.41.73、端口为32081为例说明。

  3. 使用paas用户SSH远程登录数据库节点,并执行后续操作步骤。
  4. 切换为dbuser用户。

    su - root

    su - dbuser

  5. 使用MySQL客户端连接到数据库。

    /opt/mysql/bin/mysql --disable-reconnect -h10.8.41.73 -P32081 -u dbuser -p

    输入数据库dbuser用户的密码(默认密码可以从数据库用户清单文档获取;如果已经修改了密码,请从管理员处获取)。

    说明:

    输入密码时,支持直接输入和交互式输入两种方式。直接输入密码有可能存在密码泄露的风险。请执行命令时以交互式方式输入密码。

  6. 执行如下命令限制用户资源。

    use mysql

    update user set max_questions =90000000;

    update user set max_updates = 90000000;

    update user set max_connections =50000000;

    update user set max_user_connections = 500;

    commit;

    flush privileges;

预期结果
  1. 使用paas用户SSH远程登录数据库所在节点,切换到dbuser用户。

    su - root

    su - dbuser

  2. 使用数据库管理员用户通过MySQL客户端连接需要加固的数据库(参考步骤 1~步骤 5),执行如下命令:

    select user,max_questions,max_updates from mysql.user;

    如果查询到的结果max_questions、max_updates两列是90000000,则说明加固成功。

设置审计日志输出策略

一般操作。审计日志输出策略有同步与异步两种,为降低日志输出时延,可调整为同步实时输出日志,但会对数据库性能造成一定影响。

加固方法
  1. 使用paas用户SSH远程登录数据库所在节点,切换到dbuser用户。

    su - root

    su - dbuser

    说明:
    • 所有MySQL数据库实例都需要设置。
    • MySQL数据库实例和所在节点IP参考获取数据库信息

  2. 使用vi修改配置文件my.cnf。

    cd /opt/mysql/data/实例名

    vi my.cnf

    在文件中增加如下配置项。

    [mysqld]
    audit_log_strategy=SYNCHRONOUS

    如果已经有audit_log_strategy配置,则修改此处配置为SYNCHRONOUS。

  3. 修改完成后,先按“ESC”,然后执行如下命令,保存并退出编辑模式。

    :wq!

  4. 加固之后,需要重启MySQL数据库。输出日志的方式会调整为同步输出日志。

    先参考停止数据库操作,停止数据库,再参考启动数据库操作,启动数据库。

    停止和启动节点上的数据库时,都需要对/opt/mysql/data目录下所有数据实例依次执行停止和启动操作。

预期结果
  1. 使用数据库管理员用户(dbuser)通过MySQL客户端连接需要加固的数据库(参考“限制用户资源”的步骤 1~步骤 5)。
  2. 执行如下命令。

    show variables like 'audit_log_strategy';

    如果返回值为SYNCHRONOUS,说明加固成功。

清除冗余的MySQL库

一般操作。

  1. 检查是否有冗余的MySQL库

    业务下线或者版本升级等场景下,可能存在冗余的MySQL库,可通过数据库监控指标来进行辅助检查。例如MySQL实例的业务连接数为0,吞吐量为0。

  2. 删除冗余的MySQL库

    请与华为工程师确认此数据库是否为冗余,若是冗余,请联系华为工程师操作。具体请参考命令参考中的dbsvc_adm -cmd remove-database

    说明:

    若删除到只剩一个MySQL冗余库,则无法继续删除,此时需要删除MySQL实例,请参考命令参考dbsvc_adm -cmd delete-db-instance

翻译
下载文档
更新时间:2019-01-25

文档编号:EDOC1100015665

浏览量:28350

下载量:788

平均得分:
本文档适用于这些产品
相关文档
相关版本
Share
上一页 下一页