二级等保标准和解决方法(服务器,数据库,应用)

立山  金牌会员 | 2024-6-14 12:55:11 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 580|帖子 580|积分 1740

说明

这段时间不绝在做等保要求的修复,这里记录一下要修改的地方
应用背景

1,身份鉴别

a)应对登录的用户举行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
说明:通过账号+口令对登录的用户举行身份标识和鉴别,身份标识具有唯一性,口令长度8-20位,包罗字母、数字、特别字 符,设置密码定期三个月更换
方法:按照上面说明,设置背景用户密码的复杂度和定期更换密码提醒
b)应具有登录失败处置处罚功能,应配置并启用结束会话、限定非法登录次数和当登录毗连超时自动退出等相关措施;
说明:同一账号一连登录失败5次锁定账号5分钟,设置登录毗连超时半小时自动退出
方法:按照上面说明,设置登录失败策略和token登录过期时间
c)当举行长途管理时,应采取须要措施防止鉴别信息在网络传输过程中被窃听;
说明:采取HTTPS协议防止鉴别信息在网络传输过程中被窃听
方法:网站需要配置HTTPS协议来访问
2,访问控制

a)应对登录的用户分配账户和权限;
说明:应用系统提供了访问控制功能,系统管理员在权限管理模块中对不同的用户举行权限分配
方法:管理背景要有权限控制,通过管理员对不同用户和角色举行权限分配
b)应重命名或删除默认账户,修改默认账户的默认口令;
说明:默认账户
方法:删除背景框架自带的用户,创建新用户(这个一般都会过)
c)应及时删除或停用多余的、过期的账户,避免共享账户的存在;
说明:删除、停用多余的、过期的账户,无共享账户存在
方法:这个一般没有多余,过期的账户(测试的时候和测试老师说下就可以过了)
d)应授予管理用户所需的最小权限,实现管理用户的权限分离;
说明:设置管理员、审计员、操作员,授予用户所需的最小权限,实现管理用户的权限分离
方法:背景配置两个用户,审计员(audit),操作员(operator)。审计员要有看系统日志和登录日志的权限,操作员要有操作所有业务功能的权限。(相当于把超管的权限分配给这三个用户,实现权限分离)
3,安全审计

a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户举动和重要安全事件举行审计;
说明:启用了安全审计功能,覆盖到每个用户,对用户登录、操作举行审计
方法:系统要有用户的登录,操作日志
b)审计记录应包括事件的日期和时间、用户、事件范例、事件是否成功及其他与审计相关的信息;
说明:审计记录的内容包括:操作时间、操作用户、操作范例、操作内容等
方法:日志内里要有这些字段,字段没有特定要求但是该有的字段还是要有
c)应对审计记录举行保护,定期备份,避免受到未预期的删除、修改或覆盖等;
说明:审计记录保存在数据库中,每小时全量备份到备份服务器,应用系统用户无权限删除、修改或覆盖审计记录
方法:对操作,登录日志的定期备份。(由于我们日志是存在数据库内里的,我们数据库是天天备份的 以是这个也算过了)
4,入侵防范

a)应遵照最小安装的原则,仅安装需要的组件和应用步伐;
说明:测评对象为应用系统,该项不适用
方法:是应用系统的话不用管
b)应关闭不需要的系统服务、默认共享和高危端口;
说明:测评对象为应用系统,该项不适用
方法:是应用系统的话不用管
c)应通过设定终端接入方式或网络地点范围对通过网络举行管理的管理终端举行限定;
说明:测评对象为应用系统,该项不适用
方法:是应用系统的话不用管
d)应提供数据有效性查验功能,保证通过人机接口输入或通过通讯接口输入的内容符合系统设定要求;
说明:提供了数据有效性查验功能,保证通过人机接口输入或通过通讯接口输入的数据格式或长度符合系统设定要求,经安全扫描未发现相关安全毛病
方法:要对应用系统,使用工具举行定期毛病扫描,如果有高危毛病要修复掉
e)应能发现大概存在的已知毛病,并在经过充分测试评估后,及时修补毛病;
说明:经扫描未发现高危毛病
方法:要对应用系统,使用工具举行定期毛病扫描,如果有高危毛病要修复掉,这个要有漏扫陈诉给到测试老师
5,恶意代码防范

a)应采取免受恶意代码攻击的技术措施或主动免疫可信验证机制及时辨认入侵和病毒举动,并将其有效阻断。
说明: 测评对象为应用系统,该项不适用~~
6,可信验证

可基于可信根对计算设备的系统引导步伐、系统步伐、重要配置参数和应用步伐等举行可信验证,并在应用步伐的关键实验环节举举措态可信验证,在检测到其可信性受到破坏后举行报警,并将验证 结果形成审计记录送至安全管理中心。
说明:待补
方法:待补
7,数据完备性

a)应采取校验技术或密码技术保证重要数据在传输过程中的完备性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等;
说明:采取HTTPS协议保证重要数据在传输过程中的完备性
方法:接口调用使用https通讯
8,数据备份恢复

a)应提供重要数据的本地数据备份与恢复功能;
说明:对数据库天天增量备份,每全面量备份
方法:对数据库天天增量备份,每全面量备份
b)应提供异地实时备份功能,使用通讯网络将重要数据实时备份至备份场地;
说明:提供异地实时备份功能
方法:异地备份,有个有异地服务器的话可以做,没有的话就做不了
9,剩余信息保护

a)应保证鉴别信息地点的存储空间被开释或重新分配前得到完全清除;
说明:退出时清除Session以及Token
方法:退出时清除Session以及Token
10,个人信息保护

a)应仅采集和保存业务必须的用户个人信息;
说明:仅采集和保存业务必须的用户个人信息,包括姓名、身份证号、邮箱、手机号等
方法:用户表里需要有用户的关键信息,对关键信息(邮箱,身份证等)举行数据库加密
b)应禁止未授权访问和非法使用用户个人信息。
说明:仅采集姓名、身份证号、邮箱、手机号等业务必须的用户个人信息,系统需登录后才可访问已授权访问的个人信息,未授权用户无法访问和使用用户个人信息
方法:对用户管理和检察用户详情权限控制。
服务器

1,身份鉴别

a)应对登录的用户举行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
说明:通过堡垒机,使用账号+口令对登录的用户举行身份标识和鉴别,身份标识具有唯一性,口令最小长度8位且包罗数字、大、小写字母、特别字符,口令生命周期90天
方法:访问服务器要通过堡垒机登录,登录服务器要使用账号和密码,密码有复杂度要求和时效要求
命令
password 设置密码复杂度与长度
auth 设置登录失败次数和锁定时间
  1. 在配置文件中添加如下内容,如果已经有对应*.so 配置加到后面或者修改对应参数即可
  2. sudo vi /etc/pam.d/system-auth
  3. sudo vi /etc/pam.d/password-auth
  4. --------------------------------------------------------------------------------------------------------------
  5. CentOS 6
  6. password requisite pam_cracklib.so retry=3 difok=3 minlen=8 ucredit=-1 lcredit=-1d credit=-1 ocredit=-1
  7. auth required pam_tally2.so onerr=fail deny=5 unlock_time=1800 root_unlock_time=1800
  8. --------------------------------------------------------------------------------------------------------------
  9. CentOS 7
  10. password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 difok=5 enforce_for_root
  11. auth required pam_faillock.so preauth audit deny=5 even_deny_root unlock_time=1800
  12. auth [default=die] pam_faillock.so authfail audit deny=5 even_deny_root unlock_time=1800
复制代码
注:如果是等保三级,系统登录和服务器系统都需要双因子认证。系统的双因子认证请看我之前的文章,服务器的双因子认证背面我会单独写一篇,请持续关注。
设置密码有效时间相关配置
  1. vi  /etc/login.defs
  2. PASS_MAX_DAYS        90
  3. PASS_MIN_LEN        5
  4. PASS_WARN_AGE        10
复制代码
b)应具有登录失败处置处罚功能,应配置并启用结束会话、限定非法登录次数和当登录毗连超时自动退出等相关措施;
说明:同一账号一连登录失败5次锁定1800秒,设置毗连超时600秒后自动退出
方法:登录失败添加完成上面配置即可
命令:
添加超时600秒自动退出
  1. vi /etc/profile
  2. 最下面添加一行
  3. export TMOUT=600
复制代码
c)当举行长途管理时,应采取须要措施防止鉴别信息在网络传输过程中被窃听;
说明:使用SSH协议毗连服务器,防止鉴别信息在网络传输过程中被窃听
方法:使用长途毗连云平台的服务器或者举行文件传输都要使用SSH的方式来操作,不能使用其他方式毗连
2,访问控制

a)应对登录的用户分配账户和权限;
说明:系统对登录的用户分配的不同的账户和不同的操作权限,分配管理员root、审计员audit、操作员admin等账号
方法:新增审计员audit、操作员admin (ps:你可以不用但是测试的时候必须要有这些账号)
命令
  1. // 新增admin账号
  2. useradd -m -c "Admin User" admin
  3. passwd admin
  4. // 设置权限,不同系统不同操作
  5. #CentOS/RHEL
  6. usermod -aG wheel admin
  7. #Debian/Ubuntu
  8. usermod -aG sudo admin
  9. --------------------------------------------------------------------------------------------------------------
  10. // 设置audit审计账号
  11. sudo adduser -m auditor
  12. sudo passwd auditor
  13. --------------------------------------------------------------------------------------------------------------
  14. // 配置审计权限
  15. vi /etc/sudoers
  16. auditor ALL=(root)NOPASSWD: /usr/bin/cat, /usr/bin/less, /usr/bin/more,
  17. /usr/bin/tail, /usr/bin/head
  18. // 验证
  19. su - auditor
  20. sudo tail /var/log/messages
复制代码
b)应重命名或删除默认账户,修改默认账户的默认口令;
说明:检察系统的用户列表,未重命名或删除默认账户root,但修改默认账户的默认口令
方法:重命名或删除默认账户root,而且修改root口令(这个建议重命名)
c)应及时删除或停用多余的、过期的账户,避免共享账户的存在;
说明:账户列表中多余的、过期的账户
方法:和测试老师表明下都是有用的就可以,这个一般不处置处罚
d)应授予管理用户所需的最小权限,实现管理用户的权限分离;
说明:分配管理员root、审计员audit、操作员admin等账号,授予管理用户所需的最小权限,能够实现管理用户的权限分离
方法:和a)是一样的,配置完成这个也可以过
3,安全审计

a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户举动和重要安全事件举行审计;
说明:启用安全审计功能,审计覆盖到每个用户,对重要的用户举动和重要安全事件举行审计
方法:安装审计插件服务
命令
  1. // 检查安装组件
  2. sudo yum list audit audit-libs
  3. sudo yum install audit audit-libs
  4. --------------------------------------------------------------------------------------------------------------
  5. // 配置服务
  6. sudo vi /etc/audit/auditd.conf
  7. num_logs = 10
  8. max_log_file = 30
  9. max_log_file_action = ROTATE
  10. --------------------------------------------------------------------------------------------------------------
  11. // 开启服务设置开启自启
  12. sudo systemctl enable auditd
  13. sudo systemctl start auditd
  14. // 查看服务状态
  15. sudo systemctl status auditd
  16. --------------------------------------------------------------------------------------------------------------
  17. // 修改审计规则
  18. vi /etc/audit/rules.d/audit.rules
  19. ## This file is automatically generated from /etc/audit/rules.d
  20. -a always,exit -F arch=b32 -S setuid,setgid -k setuid_setgid
  21. -a always,exit -F arch=b64 -S setuid,setgid -k setuid_setgid
  22. // 使用auditctl -l 命令测试配置是否成功
复制代码
b)审计记录应包括事件的日期和时间、用户、事件范例、事件是否成功及其他与审计相关的信息;
说明:审计记录包括事件的日期和时间、用户、范例、内容等
方法:这个插件生成的审计日志都有这些字段,不用单独配置 日志路径/var/log/audit
c)应对审计记录举行保护,定期备份,避免受到未预期的删除、修改或覆盖等;
说明:审计记录记录在服务器上,而且对审计服务器记录定期备份,避免受到未预期的删除、修改或覆盖,日志保存时间能够满意6个月要求
方法:有添加的异地备份,不然就本地备份
命令
  1. // 先修改日志存储期限
  2. vi /etc/logrotate.conf
  3. rotate 26
  4. --------------------------------------------------------------------------------------------------------------
  5. // 本地脚本备份存储
  6. // 找个位置存放脚本和备份文件(最好选择已经挂载磁盘较多的目录)
  7. vi audit.sh
  8. #!/bin/bash
  9. #在 多个目录下查找所有扩展名为 .log 或者 .txt 的文件,并且文件修改时间超过 180 天(即 6 个月)的文件会被删除
  10. find  "/var/log/audit" -type f \( -name "*.log" -o -name "*.txt" \) -mtime +180 -exec rm {} \;
  11. bak_dir='/data/audit'             # 定义备份目录
  12. bak_file="${bak_dir}/audit_$(date +%Y%m%d%H%M).tar.gz"   # 定义备份文件名
  13. log_files=(                              # 定义要备份的日志文件和目录
  14.     "/var/log/audit/audit.log"
  15.     "/var/log/messages"
  16.     "/var/log/secure"
  17. )
  18. if [ ! -d "${bak_dir}" ]; then          # 如果备份目录不存在则创建
  19.     mkdir -p "${bak_dir}"
  20. fi
  21. tar czf "${bak_file}" "${log_files[@]}"  # 打包备份文件
  22. ls -tp "${bak_dir}" | grep -v "/$" | tail -n +6 | xargs -I {} rm "${bak_dir}/{}"
  23. --------------------------------------------------------------------------------------------------------------
  24. // 配置权限
  25. chmod +x audit.sh
  26. // 配置定时任务,每天晚上两点执行脚本备份审计文件
  27. crontab -e
  28. 00 02 * * * /data/audit/audit.sh
复制代码
4,入侵防范

a)应遵照最小安装的原则,仅安装需要的组件和应用步伐;
说明:遵照最小安装的原则,仅安装需要的组件和应用步伐
方法:删除已经下载但是不使用的组件和步伐
b)应关闭不需要的系统服务、默认共享和高危端口;
说明:关闭不需要的系统服务、默认共享和高危端口,比方8699
方法:这个建议使用web扫描来漏扫一遍背景系统,由于背面可以要系统漏扫陈诉,最好扫一遍。
我这里用的是AWVS来扫描的,这个工具可以在windows下载使用扫描。
c)应通过设定终端接入方式或网络地点范围对通过网络举行管理的管理终端举行限定;
说明:仅允许在内网特定网段对服务器举行管理
方法:这个应该是堡垒机和服务器需要内网才华访问和管理,不能开放互联网。
d)应提供数据有效性查验功能,保证通过人机接口输入或通过通讯接口输入的内容符合系统设定要求;
说明:测评对象为服务器,此项不适用
方法:测评对象为服务器,此项不适用
e)应能发现大概存在的已知毛病,并在经过充分测试评估后,及时修补毛病;
说明:由开发方每周开展漏扫,并针对毛病举行及时评估与修复
方法:有开发定期举行主机漏扫,并给出最近一次主机漏扫陈诉。(ps:如果测试的人问起多久扫一次,就说一个月扫一次就够了)
注:关于前面系统扫描和主机扫描背面我会出一遍文章来教大家怎么搞,还是有点麻烦的。
5,恶意代码防范

a)应采取免受恶意代码攻击的技术措施或主动免疫可信验证机制及时辨认入侵和病毒举动,并将其有效阻断。
说明:要在服务器安装杀毒软件,定期杀毒。要提供最近一次杀毒的日志和病毒库更新时间
方法:我这里使用的是clamav开源杀毒软件,背面我会单独出一篇文章来演示
6,可信验证

可基于可信根对计算设备的系统引导步伐、系统步伐、重要配置参数和应用步伐等举行可信验证,并在应用步伐的关键实验环节举举措态可信验证,在检测到其可信性受到破坏后举行报警,并将验证 结果形成审计记录送至安全管理中心。
说明:这个暂时没有好办法整改,一般不做操作
方法:这个暂时没有好办法整改,一般不做操作
7,数据完备性

a)应采取校验技术或密码技术保证重要数据在传输过程中的完备性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等;
说明:通过SSH协议对服务器举行长途管理,保证重要数据在传输过程中的完备性
方法:这个和前面一样,服务器都要用SSH来操作
8,数据备份恢复

a)应提供重要数据的本地数据备份与恢复功能;
说明:服务器逐日快照备份
方法:虚拟机云服务器应该都有快照备份的操作,建议问下服务器管理员或者其他相关人员
b)应提供异地实时备份功能,使用通讯网络将重要数据实时备份至备份场地;
说明:提供异地备份功能
方法:日志和数据库的异地备份
9,剩余信息保护

a)应保证鉴别信息地点的存储空间被开释或重新分配前得到完全清除;
说明:操作系统鉴别信息(用户名和密码)存储在/etc/shadow文件中,采取SHA512算法计算密码哈希值,操作系统每次登录时需输入账户名和口令,已在上次退出登录时清除鉴别信息
方法:运服务器都自带这些功能,不用特别配置。 cat /etc/shadow 看看用户信息
数据库(mysql)

数据库就不按照等保要求一步一步做了,他们测试主要使用了几个命令检察数据库安全和日志方面的配置
1,登录失败的次数及锁定时间

用来控制登录失败的次数及锁定时间,要配置这些需要检查mysql是否已经安装对应插件
  1. mysql>show variables like '%connection_control%';
  2. +-------------------------------------------------+------------+
  3. | Variable_name                                   | Value      |
  4. +-------------------------------------------------+------------+
  5. | connection_control_failed_connections_threshold | 5          |
  6. | connection_control_max_connection_delay         | 2147483647 |
  7. | connection_control_min_connection_delay         | 300000     |
  8. +-------------------------------------------------+------------+
  9. mysql>
  10. mysql>set global connection_control_failed_connections_threshold=5;
  11. mysql>set global connection_control_min_connection_delay=300000;
  12. mysql>
  13. mysql> SHOW PLUGINS;
  14. +------------------------------------------+----------+--------------------+-----------------------+---------+
  15. | Name                                     | Status   | Type               | Library               | License |
  16. +------------------------------------------+----------+--------------------+-----------------------+---------+
  17. | binlog                                   | ACTIVE   | STORAGE ENGINE     | NULL                  | GPL     |
  18. | mysql_native_password                    | ACTIVE   | AUTHENTICATION     | NULL                  | GPL     |
  19. | sha256_password                          | ACTIVE   | AUTHENTICATION     | NULL                  | GPL     |
  20. | caching_sha2_password                    | ACTIVE   | AUTHENTICATION     | NULL                  | GPL     |
  21. | sha2_cache_cleaner                       | ACTIVE   | AUDIT              | NULL                  | GPL     |
  22. | daemon_keyring_proxy_plugin              | ACTIVE   | DAEMON             | NULL                  | GPL     |
  23. | CSV                                      | ACTIVE   | STORAGE ENGINE     | NULL                  | GPL     |
  24. | MEMORY                                   | ACTIVE   | STORAGE ENGINE     | NULL                  | GPL     |
  25. | InnoDB                                   | ACTIVE   | STORAGE ENGINE     | NULL                  | GPL     |
  26. | INNODB_TRX                               | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  27. | INNODB_CMP                               | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  28. | INNODB_CMP_RESET                         | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  29. | INNODB_CMPMEM                            | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  30. | INNODB_CMPMEM_RESET                      | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  31. | INNODB_CMP_PER_INDEX                     | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  32. | INNODB_CMP_PER_INDEX_RESET               | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  33. | INNODB_BUFFER_PAGE                       | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  34. | INNODB_BUFFER_PAGE_LRU                   | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  35. | INNODB_BUFFER_POOL_STATS                 | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  36. | INNODB_TEMP_TABLE_INFO                   | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  37. | INNODB_METRICS                           | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  38. | INNODB_FT_DEFAULT_STOPWORD               | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  39. | INNODB_FT_DELETED                        | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  40. | INNODB_FT_BEING_DELETED                  | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  41. | INNODB_FT_CONFIG                         | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  42. | INNODB_FT_INDEX_CACHE                    | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  43. | INNODB_FT_INDEX_TABLE                    | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  44. | INNODB_TABLES                            | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  45. | INNODB_TABLESTATS                        | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  46. | INNODB_INDEXES                           | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  47. | INNODB_TABLESPACES                       | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  48. | INNODB_COLUMNS                           | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  49. | INNODB_VIRTUAL                           | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  50. | INNODB_CACHED_INDEXES                    | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  51. | INNODB_SESSION_TEMP_TABLESPACES          | ACTIVE   | INFORMATION SCHEMA | NULL                  | GPL     |
  52. | MyISAM                                   | ACTIVE   | STORAGE ENGINE     | NULL                  | GPL     |
  53. | MRG_MYISAM                               | ACTIVE   | STORAGE ENGINE     | NULL                  | GPL     |
  54. | PERFORMANCE_SCHEMA                       | ACTIVE   | STORAGE ENGINE     | NULL                  | GPL     |
  55. | TempTable                                | ACTIVE   | STORAGE ENGINE     | NULL                  | GPL     |
  56. | ARCHIVE                                  | ACTIVE   | STORAGE ENGINE     | NULL                  | GPL     |
  57. | BLACKHOLE                                | ACTIVE   | STORAGE ENGINE     | NULL                  | GPL     |
  58. | FEDERATED                                | ACTIVE   | STORAGE ENGINE     | NULL                  | GPL     |
  59. | ndbcluster                               | DISABLED | STORAGE ENGINE     | NULL                  | GPL     |
  60. | ndbinfo                                  | DISABLED | STORAGE ENGINE     | NULL                  | GPL     |
  61. | ndb_transid_mysql_connection_map         | DISABLED | INFORMATION SCHEMA | NULL                  | GPL     |
  62. | ngram                                    | ACTIVE   | FTPARSER           | NULL                  | GPL     |
  63. | mysqlx_cache_cleaner                     | ACTIVE   | AUDIT              | NULL                  | GPL     |
  64. | mysqlx                                   | ACTIVE   | DAEMON             | NULL                  | GPL     |
  65. | CONNECTION_CONTROL                       | ACTIVE   | AUDIT              | connection_control.so | GPL     |
  66. | CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS | ACTIVE   | INFORMATION SCHEMA | connection_control.so | GPL     |
  67. | validate_password                        | ACTIVE   | VALIDATE PASSWORD  | validate_password.so  | GPL     |
  68. +------------------------------------------+----------+--------------------+-----------------------+---------+
复制代码
主要是下面三个插件的安装和配置
点这里做参考
2,开启审计日志

  1. mysql>show variables like '%general_log%';
  2. +------------------+-------------------------------------------------------+
  3. | Variable_name    | Value                                                 |
  4. +------------------+-------------------------------------------------------+
  5. | general_log      | OFF                                                    |
  6. | general_log_file | /data/mysql/test.log |
  7. +------------------+-------------------------------------------------------+
  8. mysql> set global general_log=on // 开启日志规则
复制代码
注:等保要求数据库审计日志也要定时备份180天,请参考上面的备份脚本和定时任务来做。
3,设置密码过期期限

  1. mysql>show variables like '%password_lifetime%';
  2. +---------------------------+-------+
  3. | Variable_name             | Value |
  4. +---------------------------+-------+
  5. | default_password_lifetime | 90    |
  6. +---------------------------+-------+
  7. 1 row in set (0.00 sec)
  8. mysql>
  9. mysql>set global default_password_lifetime=90;
复制代码
4,密码复杂度

  1. mysql>show variables like 'validate_password%';
  2. +--------------------------------------+--------+
  3. | Variable_name                        | Value  |
  4. +--------------------------------------+--------+
  5. | validate_password_check_user_name    | ON     |
  6. | validate_password_dictionary_file    |        |
  7. | validate_password_length             | 8      |
  8. | validate_password_mixed_case_count   | 1      |
  9. | validate_password_number_count       | 1      |
  10. | validate_password_policy             | MEDIUM |
  11. | validate_password_special_char_count | 1      |
  12. +--------------------------------------+--------+
复制代码
实现安装validate_password插件配置安装
配置最好和我的一样
5,超时退出

  1. mysql>show variables like '%timeout';
  2. +-----------------------------------+----------+
  3. | Variable_name                     | Value    |
  4. +-----------------------------------+----------+
  5. | connect_timeout                   | 10       |
  6. | delayed_insert_timeout            | 300      |
  7. | have_statement_timeout            | YES      |
  8. | innodb_flush_log_at_timeout       | 1        |
  9. | innodb_lock_wait_timeout          | 50       |
  10. | innodb_rollback_on_timeout        | OFF      |
  11. | interactive_timeout               | 28800    |
  12. | lock_wait_timeout                 | 31536000 |
  13. | mysqlx_connect_timeout            | 30       |
  14. | mysqlx_idle_worker_thread_timeout | 60       |
  15. | mysqlx_interactive_timeout        | 28800    |
  16. | mysqlx_port_open_timeout          | 0        |
  17. | mysqlx_read_timeout               | 30       |
  18. | mysqlx_wait_timeout               | 28800    |
  19. | mysqlx_write_timeout              | 60       |
  20. | net_read_timeout                  | 30       |
  21. | net_write_timeout                 | 60       |
  22. | replica_net_timeout               | 60       |
  23. | rpl_stop_replica_timeout          | 31536000 |
  24. | rpl_stop_slave_timeout            | 31536000 |
  25. | slave_net_timeout                 | 60       |
  26. | ssl_session_cache_timeout         | 300      |
  27. | wait_timeout                      | 28800    |
  28. +-----------------------------------+----------+
复制代码
重点是以下字段:
connect_timeout
interactive_timeout
wait_timeout。
6,检察系统用户

  1. mysql> select user,host from mysql.user;
  2. +------------------+-----------+
  3. | user             | host      |
  4. +------------------+-----------+
  5. | audit            | localhost |
  6. | mysql.infoschema | localhost |
  7. | mysql.session    | localhost |
  8. | mysql.sys        | localhost |
  9. | secure           | localhost |
  10. +------------------+-----------+
复制代码
主要检察用户是否名称是否相同,系统是否有audit审计员账号,没有的话创建一个
7,关键数据加密

如果系统用户表有关键信息好比身份证,邮箱,手机号等在数据库需要加密存储
ps:要和测试老师说明有哪些关键字段是加密过的,使用的什么加密算法
8,备份策略

对数据库举行定期备份,要有备份周期、备份文件存储位置、备份文件保留期限
参考脚本
  1. #!/bin/bash
  2. echo 'Start backup'
  3. DIR=/data/backup/db/                               // 数据库备份存放位置
  4. USER=test                                                    // 账号
  5. PASSWORD=123456                                                                              // 密码
  6. DATABASE=cloud_test                                                                   // 备份库名称
  7. DATE=`date +%Y%m%d%H%M`                                                           // 定于备份时间
  8. SQLFILE="${DATABASE}_${DATE}.sql"                                   // 定义sql文件名
  9. TARFILE="${DATABASE}_${DATE}.tar.gz"                           // 定义压缩文件名
  10. SEARCHFILE="${DATABASE}_*.tar.gz"                                   // 定于模糊压缩文件名
  11. mysqldump -h localhost -u$USER -p$PASSWORD --databases $DATABASE > $DIR/$SQLFILE // 备份命令
  12. echo 'Backup completed'
  13. echo 'Start compression'
  14. cd $DIR
  15. tar -czvf $TARFILE $SQLFILE
  16. rm -rf $SQLFILE                                                                                // 到备份位置打包后删除文件夹
  17. scp $TARFILE root@100.0.0.1:/data/backup/db                    // 可选,同步备份到其他机器保存
  18. echo "File: $TARFILE"
  19. echo 'Compression completed'
  20. echo 'Start clearance '
  21. echo "Searching $SEARCHFILE"
  22. find $DIR -mtime +30 -name "$SEARCHFILE" -exec rm -f {} \;                // 只保留30天的备份文件
  23. echo 'Clearance completed'
复制代码
使用crontab或者其他定时任务 周期性备份。
ps:我这里是本地备份,有条件最好是异地备份,等保要求内里有要求要异地备份。
数据库(dm)

1,修改账户默认口令

  1. alter user SYSDBA identified by "<密码>";
  2. alter user SYSAUDITOR identified by "<密码>";
复制代码
2,设置密码复杂度

单独设置复杂策略31位
  1. SP_SET_PARA_VALUE(1, 'PWD_POLICY', 31);
复制代码
给所有用户设置复杂策略
  1. alter user SYSDBA PASSWORD_POLICY 31;
复制代码
3,登录失败锁定策略

  1. ALTER USER SYSDBA LIMIT FAILED_LOGIN_ATTEMPS 3, PASSWORD_LOCK_TIME 5,
  2. PASSWORD_GRACE_TIME 30, PASSWORD_LIFE_TIME 30, connect_idle_time 60;
复制代码
配置项参数说明FAILED_LOGIN_ATTEMPS3用户失败登录次数限定PASSWORD_LOCK_TIME5用户口令锁定期限定PASSWORD_GRACE_TIME30口令过期宽限时间PASSWORD_LIFE_TIME30用户口令过期时间限定CONNECT_IDLE_TIME60空闲毗连时间60分钟 4,数据库审计

打开审计开关

  1. SP_SET_ENABLE_AUDIT(1)
复制代码
语句级审计

设置所有语句都审计
  1. SP_AUDIT_STMT('ALL', 'NULL', 'ALL');
复制代码
表布局
  1. VOID SP_AUDIT_STMT(
  2.         TYPE VARCHAR(30),
  3.         USERNAME VARCHAR (128),
  4.         WHENEVER VARCHAR (20)
  5. )
复制代码
说明
字段参数说明TYPEALL语句级审计选项USERNAMENULL用户名,NULL 表示不限定WHENEVERALL审计机遇   ALL:所有的
SUCCESSFUL:操作成功时
FAIL:操作失败时
  对象级审计

  1. SP_AUDIT_OBJECT('ALL','test','test','SYS_USER','ALL');
复制代码
表布局
  1. VOID SP_AUDIT_OBJECT(
  2.         TYPE VARCHAR(30),
  3.         USERNAME VARCHAR (128),
  4.         SCHNAME VARCHAR (128),
  5.         TVNAME VARCHAR (128),
  6.         WHENEVER VARCHAR (20)
  7. )
  8. VOID SP_AUDIT_OBJECT(
  9.         TYPE VARCHAR(30),
  10.         USERNAME VARCHAR (128),
  11.         SCHNAME VARCHAR (128),
  12.         TVNAME VARCHAR (128),
  13.         COLNAME VARCHAR (128),
  14.         WHENEVER VARCHAR (20)
  15. )
复制代码
说明
字段参数说明TYPEALL语句级审计选项USERNAMEtest用户名SCHNAMEtest模式名,为空时置‘null’TVNAMESYS_USER表、视图、存储过程名不能为COLNAMEusername列名WHENEVERALL审计机遇   ALL:所有的
SUCCESSFUL:操作成功时
FAIL:操作失败时
  5,审计日志备份

开启审计开关和配置好审计条件 审计日志在/data/dm8/data/DAMENG下
要求备份保留3个月的审计日志,请参考上面备份日志的脚本改造下。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表