全网最全安全加固指南之数据库加固

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 全网最全安全加固指南之数据库加固

全网最全安全加固指南之数据库加固

数据库加固

Mysql数据库安全加固

删除默认数据库和数据库用户

MySQL初始化后会自动生成空用户和test库,进行安装的测试,这会对数据库的安全构成威胁,有必要全部删除,最后的状态只保留单个root即可,当然以后根据需要增加用户和数据库。

mysql> show databases;
mysql> drop database test;         #删除数据库test
mysql> use mysql;
mysql> delete from db;          #删除存放数据库的表信息,因为还没有数据库信息。
mysql> delete from user where not (user='root');       #删除初始非root的用户
mysql> delete from user where user='root' and password=''; #删除空密码的root尽量重复操作
mysql> flush privileges;         #强制刷新内存授权表。

不使用默认密码和弱口令

检查账户默认密码和弱口令,口令长度至少8位,并包括数字、小写字母、大写字母和特殊符号四类中至少两种。且5次以内不得设置相同的口令,密码应至少90天更换一次。

Mysql> Update user set password=password(‘test!p3’) where user=‘root’;
Mysql> Flush privileges;

检测操作
检查本地密码: (注意,管理帐号 root 默认是空密码)

mysql> use mysql;
mysql> select Host,User,Password,Select_priv,Grant_priv from user; 

改变默认mysql管理员帐号

改变默认的mysql管理员账号也可以使mysql数据库的安全性有较好的提高,因为默认的mysql管理员的用户名都是root

mysql> update mysql.user set user='admin' where user='root';

使用独立用户运行MySQL

绝对不要作为使用root用户运行MySQL服务器。这样做非常危险,因为任何具有FILE权限的用户能够用root创建文件(例如,~root/.bashrc)。mysqld拒绝使用root运行,除非使用–user=root选项明显指定。应该用普通非特权用户运行 mysql。为数据库建立独立的linux中的mysql账户,该账户用来只用于管理和运行MySQL。

要想用其它linux用户启动mysql,增加user选项指定/etc/my.cnf选项文件或服务器数据目录的my.cnf选项文件中的[mysqld]组的用户名。

vi /etc/my.cnf
[mysqld]
user=mysql

该命令使服务器用指定的用户来启动,无论你手动启动或通过mysqld_safemysql.server启动,都能确保使用mysql的身份。

禁止远程连接数据库

使用命令netstat 查看默认的3306端口是打开的,此时打开了mysql的网络监听,允许用户远程通过帐号密码连接数本地据库,默认情况是允许远程连接数据的。为了禁止该功能,启动skip-networking,不监听sql的任何TCP/IP的连接,切断远程访问的权利,保证安全性。

vi /etc/my.cf       #将#skip-networking注释去掉

限制用户连接的数量

数据库的某用户多次远程连接,会导致性能的下降和影响其他用户的操作,有必要对其进行限制。可以通过限制单个账户允许的连接数量来实现,设置my.cnf 文件的mysql中的max_user_connections变量来完成。GRANT语句也可以支持资源控制选项来限制服务器对一个账户允许的使用范围。

vi /etc/my.cnf
[mysqld]
max_user_connections=2

命令历史记录保护

数据库相关的shell操作命令都会分别记录在.bash_history,如果这些文件不慎被读取,会导致数据库密码和数据库结构等信息泄露,而登陆数据库后的操作将记录在.mysql_history文件中,如果使用update表信息来修改数据库用户密码的话,也会被读取密码,因此需要删除这两个文件,同时在进行登陆或备份数据库等与密码相关操作时,应该使用-p参数加入提示输入密码后,隐式输入密码,建议将以上文件置空。

rm .bash_history .mysql_history    #删除历史记录
ln -s /dev/null .bash_history   #将shell记录文件置空
ln -s /dev/null .mysql_history    #将mysql记录文件置空

对重要数据加密存储

MySQL提供了4个函数用于哈希加密:PASSWORD, ENCRYPT, SHA1和MD5。
INSERT INTO table1 (user, password) VALUE ('user1', MD5('password1') )

本地文件读取保护

常见攻击:拥有FILE权限

create dababase use;
CREATE TABLE etc_passwd (pwd_entry TEXT);
LOAD DATA INFILE "/etc/passwd" into TABLE etc_passwd;
SELECT * FROM etc_passwd;

防止用户使用LOAD DATA LOCAL INFILE读取服务器上的本地文件设置

vim /etc/my.cnf
set-variable=local-infile=0

日志功能

mysql 有以下几种日志:

错误日志: -log-err
查询日志: -log (可选)
慢查询日志: -log-slow-queries (可选)
更新日志: -log-update
二进制日志: -log-bin

在 mysql 的安装目录下,打开 my.ini 在后面加上上面的参数,保存后重启mysql 服务就行了

检查操作
查看etc/my.cnf文件,查看是否包含如下配置:

[mysqld]
Log=filename

数据库的恢复

mysql -u root -p [数据库名] < /备份路径/备份文件名

Sqlserver数据库安全加固

密码策略和弱口令

对用户的属性进行安全检查,包括空密码、密码更新时间等。修改目前所有账号的口令,确保口令达到至少12位长度,包括数字、字母、符号混排,无规律的方式,并且不使用默认的win密码。

具体操作

打开SQL Server Management Studio管理界面,在左侧展开“登录名”,对 sa和其它登录名逐一右键点击查看属性,勾选“强制实施密码策略”。

通讯协议加密

当对服务器进行远程管理时,防止鉴别信息在网络传输过程中被窃听,应使用加密通讯协议,提高安全性。

具体操作

SQL Server配置管理器>>SQL Server网络配置>>MSSQLSERVER的协议,右键点击>>属性>>标志
把“强行加密”(ForceEncryption)设为“是”。

限制guest账户对数据库的访问

取消guest账户对master和tempdb之外的数据库的访问权限。

  • 方法一:打SQL Server管理界面,在左侧展开除了master和tempdb之外的所有数据库>>安全性>>用户,删除guest账户。
  • 方法二:用命令去除guest账户对指定数据库的访问权限:
    use 数据库名
    exec sp_revokedbaccess guest

设置身份认证

应实现操作系统和数据库系统特权用户的权限分离,防止操作系统用户对SQL Server数据库进行非授权管理。

具体操作

  • 展开服务器组,右键单击服务器->在弹出的右键菜单中单击“属性”,在“安全性”选项卡中选择“服务器身份验证”认证方式为“SQL Server和Windows身份验证模式”。
  • 在“SQL Server管理器”-〉“安全性”中,选择账号“BUILTIN\Administrators”,右击选择“属性”,更改“状态”设置“拒绝允许连接到数据库引擎”和“禁用登录”。

开启日志审计

数据库应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号、登录是否成功、登录时间以及远程登录时用户使用的IP 地址。

具体操作

  • 在“SQL Server管理器”->右键单击服务器->单击“属性”->“安全性”,选择每个登录的“审核级别”为“失败和成功的登录”。
  • 询问数据库管理员,是否采取第三方工具或其他措施增强SQL Server的日志功能,如果有则查看这些工具记录的审计记录是否符合等级保护的安全审计要求。

设置连接协议和监听的IP范围

设定SQL Server允许的连接协议,以及TCP/IP协议中监听端口时绑定的IP地址,限制不必要的远程客户端访问到数据库资源。

具体操作

  • 从开始菜单打开SQL Server配置管理器,展开“SQL SERVER 2008网络配置>>SQL SERVER的协议,在右侧将不需要的协议禁用,如:VIA和Share Memory方式可能一般不需要使用。
  • 在以上界面双击“TCP/IP”协议>>IP地址,如有不必要监听的IP项,则把“活动”属性设置为“否”。如:访问数据库的应用程序也装在该服务器上,则只需要监听127.0.0.1即可,其它IP不需要监听。在应用程序中配置为使用127.0.0.1访问数据库。

根据安全策略设置登录终端的操作超时锁定。

  • 从开始菜单打开SQL Server管理界面,再展开菜单栏的“工具”>>“选项”>>“设计器”>>“Analysis Services设计器”,在“连接”下的“连接超时值”输入合适的数字(默认值15)。
  • 在SQL Server管理界面左侧,右键点击服务器名称>>属性>>高级,在右侧找到“远程登录超时值”,设置为合适的数字,
    选项—连接属性—将连接超时值设置为一个较大的数字(默认值20)。

隐藏实例

防止数据库系统的相关信息泄露

具体操作

  • 在SQL Server配置管理器中选择“SQL Server 网络配置”中的“MSSQLSERVER的协议”,右键选择“属性”,选中其中的“隐藏实例”选项。

修改默认端口

修改默认通信端口,防止攻击者通过1433登录数据库服务器。

具体操作:

  • 在SQL Server配置管理器中选择“SQL Server 2005网络配置”中的“MSSQLSERVER的协议”,选中“TCP/IP”,右键选择“属性”,在TCP/IP属性对话框,选择“IP地址”选项卡。
  • 修改所有“TCP端口”右边的文本栏为新的要修改的端口号(默认端口号为1433),然后重启SQL Server生效。

关于安全加固的知识点就总结到这里,本文可能实际上没有啥技术含量,但是写起来还是比较耗费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。

目录
相关文章
|
4月前
|
安全 Nacos 数据库
【技术安全大揭秘】Nacos暴露公网后被非法访问?!6大安全加固秘籍,手把手教你如何保护数据库免遭恶意篡改,打造坚不可摧的微服务注册与配置中心!从限制公网访问到启用访问控制,全方位解析如何构建安全防护体系,让您从此告别数据安全风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其公网暴露可能引发数据库被非法访问甚至篡改的安全隐患。本文剖析此问题并提供解决方案,包括限制公网访问、启用HTTPS、加强数据库安全、配置访问控制及监控等,帮助开发者确保服务安全稳定运行。
437 0
|
7月前
|
存储 安全 开发工具
APP安全加固怎么做?加固技术、加固方法、加固方案
APP安全加固怎么做?加固技术、加固方法、加固方案
100 3
|
7月前
|
存储 移动开发 安全
如何实现APP安全加固?加固技术、方法和方案
如何实现APP安全加固?加固技术、方法和方案
612 0
|
7月前
|
存储 安全 开发工具
APP安全加固怎么做?加固技术、加固方法、加固方案
APP安全加固怎么做?加固技术、加固方法、加固方案
187 0
|
7月前
|
安全 Ubuntu Linux
linux|奇怪的知识---账号安全加固,ssh安全加固
linux|奇怪的知识---账号安全加固,ssh安全加固
589 0
|
7月前
|
安全 Java Android开发
Android App开发之安全加固中反编译、代码混淆、第三方加固以及重签名的讲解及实战(图文解释 简单易懂)
Android App开发之安全加固中反编译、代码混淆、第三方加固以及重签名的讲解及实战(图文解释 简单易懂)
428 0
|
存储 安全 开发工具
APP安全加固怎么做?加固技术、加固方法、加固方案
前面的文章中我们为大家介绍了移动应用安全检测的测试依据、测试方法、和测试内容,本文我们着重分享App安全加固的相关内容。
|
SQL 缓存 开发框架
全网最全安全加固指南之中间件加固
全网最全安全加固指南之中间件加固
1374 9
|
安全 Unix Linux
全网最全安全加固指南之linux系统加固
全网最全安全加固指南之linux系统加固
1802 0
|
存储 缓存 安全
全网最全安全加固指南之windows系统加固
全网最全安全加固指南,呕心沥血总结本篇文章,可能技术含量不高,但也是极其耗费精力。安服道友们,直接`Ctrl + F` 哪里忘了搜哪里。
5570 0