目 录
一、等级保护三级对mysql数据库的要求
要使MySQL满足等级保护三级的要求,关键要注意以下几个方面:
(一)、身份鉴别与访问控制:
- 启用强密码策略,确保MySQL的root账户和其他账户使用复杂且不易猜测的密码。
- 限制或者禁止root账户的远程登录权限,仅允许从特定的受信任主机进行连接。
- 实施多条件认证,提高账户的安全性。
- 定期对账户和密码进行审查,确保没有过期或未使用的账户存在。
(二)、安全审计与日志记录:
- 启用MySQL的审计插件,记录所有关键操作,包括用户登录、数据访问和修改等。
- 配置日志记录到专用的日志文件,并设置适当的权限,确保只有授权人员能够访问。
- 定期审查和分析日志,以发现潜在的安全威胁或异常行为。
(三)、数据完整性与保密性:
- 使用加密算法对敏感数据进行加密存储,确保数据的保密性。
- 启用行级锁定或表级锁定机制,防止数据并发访问时的冲突和不一致。
- 定期对数据库进行备份,并验证备份数据的完整性和可用性。
(四)、安全配置与漏洞管理:
- 定期更新和升级MySQL服务器和相关的安全补丁,以修复已知的安全漏洞。
- 禁用不必要的MySQL功能和扩展,减少潜在的安全风险。
- 限制MySQL服务器的网络访问范围,只允许必要的IP地址或IP地址段进行连接。
(五)、物理与环境安全:
- 确保MySQL服务器所在的物理环境安全,包括机房门禁、监控摄像头等。
- 对服务器进行物理加固,如锁定机箱、限制USB接口等。
(六)、灾难恢复与应急预案:
- 制定详细的灾难恢复计划,包括数据备份、恢复流程和应急响应措施。
- 定期进行灾难恢复演练,验证预案的有效性和可行性。
具体的实施细节可能因项目实际情况而有所不同。因此,在实际操作中,建议参考相关的安全标准和规范,结合实际情况进行配置和管理。同时,定期进行安全评估和漏洞扫描,确保MySQL服务器的安全性得到持续保障。
二、限制或者禁止root的远程访问
(一)、必要性
上面讲的等保三级的要求,第一条就是身份鉴别和访问控制,要求强密码,限制root账户的远程登录权限。
这部分是大家最容易忽视的,并且也是网络攻击最常用的手段,并且这种攻击的入门门槛很低,因此我们本文就着重介绍如何限制或者禁止root的远程访问。
另外,强密码应该比较简单,这里不做介绍。
(二)、限制和禁止root的远程访问
1、多种访问策略
根据实际中碰到的各种情况,可以有三种访问策略以供选择
(a)root可以进行远程访问,但是只能操作某个用户数据库,不能操作系统数据库,这样可以有效的保护;
(b)root只能通过本机或者某个特定的主机来访问;
(c)root只能通过本机来访问,禁止任何远程访问。
2、限制root远程访问
根据上一节的说明,前两种策略是一种限制root访问的例子,下面分别来介绍:
(1)查询目前系统root的访问权限
mysql> SELECT user, host FROM mysql.user WHERE user='root';
+------+-----------+
| user | host |
+------+-----------+
| root | % |
+------+-----------+
| root | localhost |
+------+-----------+
2 row in set (0.00 sec)
可以看出,root具有远程访问权限。
(2)撤销root对某个数据库的远程访问权限
如果root
用户当前拥有从远程主机访问数据库DB2
的权限,你需要撤销这些权限。你可以使用REVOKE
语句来实现这一点。首先,撤销root
用户对DB2
数据库的所有权限:
REVOKE ALL PRIVILEGES ON DB2.* FROM 'root'@'%';
如果你只想撤销某些特定的权限(例如,只撤销SELECT权限),你可以这样操作:
REVOKE SELECT ON db1.* FROM 'remoteop'@'%';
在撤销权限后,确保刷新MySQL的权限设置,使更改立即生效:
FLUSH PRIVILEGES;
若要撤销其他数据库,可以类推。
(3)赋予对某个数据库ivs具有远程访问的权限
GRANT ALL PRIVILEGES ON ivs.* TO 'remoteop'@'%';
如果你只想授予部分权限(例如,只读权限),可以使用以下命令:
GRANT SELECT, INSERT, UPDATE, DELETE ON ivs.* TO 'remoteop'@'%';
在授予或撤销权限后,需要刷新MySQL的权限设置:
FLUSH PRIVILEGES;
(4)赋予root只能从特定的主机访问的权限
为root用户指定可以从哪些主机进行连接。假设想要允许从主机192.168.1.100
和10.0.0.50
进行访问,你可以使用以下命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' IDENTIFIED BY '111222' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.0.0.50' IDENTIFIED BY ''111222' ' WITH GRANT OPTION;
3、禁止root远程访问,启用其他用户进行远程访问
(a)禁止root远程访问,root只能本地访问
注意:禁止root远程访问后,一定要确保root可以本地访问,密码正确。
禁止root远程访问的命令为:
REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%';
设置root本地访问的命令为:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '11112222' WITH GRANT OPTION;
可以先用命令查看root是否有本地访问权限,再决定是否采用上面的命令。查看命令如下:
SELECT user, host FROM mysql.user WHERE user='root';
(三)、新建远程访问用户
我们可以直接新增一个用户`remoteop`并为其授予远程访问的权限。以下是如何操作的步骤:
1. 登录MySQL
使用`root`用户登录到MySQL服务器:
mysql -u root -p
输入`root`用户的密码。
2. 创建新用户remoteop
如果`remoteop`用户还不存在,你需要先创建它。假设你想为这个用户设置密码为`password_for_remoteop`:
CREATE USER 'remoteop'@'%' IDENTIFIED BY '111222';
这里`%`表示这个用户可以从任何主机连接。如果你只想允许从特定的IP地址或IP地址范围访问,可以替换`%`为具体的IP地址或CIDR表示法,例如`'remoteop'@'192.168.1.%'`。
3. 授予remoteop用户权限
接下来,需要为`remoteop`用户授予访问数据库的权限。以下是一个例子,授予该用户对所有数据库的所有权限:
GRANT ALL PRIVILEGES ON *.* TO 'remoteop'@'%' WITH GRANT OPTION;
如果你只想授予特定数据库的权限,可以将`*.*`替换为`DB_name.*`。
4. 刷新权限
在授予权限后,需要刷新MySQL的权限设置:
FLUSH PRIVILEGES;
5. 测试连接
从远程主机尝试使用`remoteop`用户连接到MySQL,确保可以成功连接。
可以通过ssh,也可以通过一些工具,比如navicat。
6. 确保防火墙设置允许MySQL端口
如果你的服务器有防火墙,确保它允许外部连接MySQL的端口(默认为3306)。
7. 安全注意事项
* 始终确保使用强密码。
* 限制可以远程访问MySQL的用户数量,并仅为每个用户授予所需的最小权限。
* 定期审查和更新权限设置,移除不再需要的权限。
* 考虑使用SSL连接来增加通信的安全性。
完成上述步骤后,`remoteop`用户应该能够远程访问MySQL服务器了。同时,由于`root`用户默认是只能从localhost访问的(除非特别配置),它通常不会被允许从远程主机访问。如果你之前对`root`用户做了远程访问的配置,记得按照之前的步骤撤销这些权限。
三、附“等级保护三级”的要求及保护能力
(一)等级保护三级要求
国家信息安全等级保护坚持自主定级、自主保护的原则。信息系统的安全保护等级应当根据信息系统在国家安全、经济建设、社会生活中的重要程度,信息系统遭到破坏后对国家安全、社会秩序、公共利益以及公民、法人和其他组织的合法权益的危害程度等因素确定。
信息系统的安全保护等级分为以下五级,一至五级等级逐级增高;第三级要求是,信息系统受到破坏后,会对社会秩序和公共利益造成严重损害,或者对国家安全造成损害。国家信息安全监管部门对该级信息系统安全等级保护工作进行监督、检查。
(二)等级保护三级的保护能力
等级保护三级,应能够在统一安全策略下防护系统免受来自外部有组织的团体、拥有较为丰富资源的威胁源发起的恶意攻击、较为严重的自然灾难,以及其他相当危害程度的威胁所造成的主要资源损害,能够发现安全洞和安全事件,在系统遭到损害后,能够较快恢复绝大部分功能。
若想了解更多,可以“点击” 下面的 “威迪斯特 微信名片”,就会出现我的二维码。