实验目的

MariaDB的安全配置过程与配置方法,掌握数据库安全配置对安全运维至关重要。

实验环境

一台Centos7 已安装MariaDB数据库

MariaDB安装命令如下

yum -y install mariadb

实验原理

通过配置文件与数据库的配置,实现MariaDB安全配置

实验步骤

一、操作系统级权限检查

1、检查数据库的运行权限(每排第一个),不建议以root运行数据库,防止越权攻击

ps -ef | egrep "^mysql.*$"

如图显示mysqld的运行用户为mysql

2、禁用mariadb的历史记录功能

查找缓存文件

find $HOME -name ".mysql_history"

将缓存文件指向空文件

rm -f $HOME/.mysql_history
ln -s /dev/null $HOME/.mysql_history

3、查看并配置数据库存放路径权限

登录数据库

mysql -u root -p

查看数据库存放路径

show variables where variable_name = 'datadir';

退出数据库

quit

查看数据库存放路径权限

ls -l /var/lib | grep mysql

如图权限为755,使用以下命令改为700

chmod 700 /var/lib/mysql

二、Mariadb数据库的通用安全配置

1、删除默认的test数据库

进入数据库

mysql -u root

show DATABASES LIKE 'test';

删除数据库

DROP DATABASE 'test';

2、禁用local_infile参数

查看local_infile参数是否开启

show variables where variable_name = 'local_infile';

如上图显示local_infile 是开启状态,需要修改mariadb配置文件。修改方法,见后文。

3、修改secure_file_priv参数

查看secure_file_priv参数

SHOW GLOBAL VARIABLES WHERE Variable_name = 'secure_file_priv' ;

如图显示路径为空,表示所有路径,建议设置为固定值,需要修改mariadb配置文件。修改方法,见后文。

4、确定只有root用户有内置数据库mysql的权限

查看内置数据库的权限

SELECT user, host FROM mysql.user WHERE (Select_priv = 'Y') OR (Insert_priv = 'Y') OR (Update_priv = 'Y') OR (Delete_priv = 'Y') OR (Create_priv = 'Y') OR (Drop_priv = 'Y');

5、查看file_priv权限,确定只有root用户有

select user, host from mysql.user where file_priv = 'Y';

撤销用户权限

如果在上例检查中,发现非root用户,可以使用下面命令撤销

revoke file on *.* from 'user';

同时这里检查权限还应有process_priv、super_priv这些字段。

6、配置允许用户登录的主机

查看当前用户可以登录的主机

select user,host from mysql.user;

更新用户允许登录的主机,如

update mysql.user set host="192.168.1.200" where host="localhost" and user="root";

7、查看密码安全策略

show variables like 'validate_password%';

三、验证安全配置

1、生成两个任意文件

echo 1111 > /tmp/111.txt

echo 2222 > /var/lib/mysql-files/222.txt

2、进入数据库

mysql -u root

3、导入文件,前面我们查看参数时,发现local_infile参数为on

执行以下操作

创建数据库

create database temp;

use temp;

创建表,并导入/tmp/111.txt

create table table_test(cmd text);

insert into table_test(cmd) values (load_file('/tmp/111.txt'));

select cmd from table_test;

再次导入/var/lib/mysql/222.txt

insert into table_test(cmd) values (load_file('/var/lib/mysql/222.txt'));

select cmd from table_test;

发现导入成功

3、配置禁止导入,与导入路径

退出数据库

quit

编辑数据库配置文件

vim /etc/my.cnf

加入下面行,指定允许导入的路径,如/tmp

secure_file_priv=/tmp

保存并退出文件

重启mariadb数据库

systemctl restart mariadb

进入数据库

mysql -u root -h 127.0.0.1

尝试导入文件

use temp;

insert into table_test(cmd) values (load_file('/var/lib/mysql/222.txt'));

select * from table_test;

虽然提示执行成功,但查看数据库时,发现值为NULL

实验总结

通过mariadb的配置文件与参数查看,理解mariadb的一些安全配置。

基线管理之MariaDB安全配置相关推荐

  1. 基线管理之Centos安全配置

    实验目的 通过配置Centos配置文件,加强Centos默认安全配置.同时也是理解linux一切皆文件的思想.尝试用shell脚本来处置Centos的安全配置. 实验环境 一台Centos 7.2 无 ...

  2. 网络安全——基线管理与安全配置

    一.基线管理概述 1.什么是安全基线 简单来说,就是安全的最低标准线,满足安全需求的最低要求 2.基线的相关名词 3.基线核查的对象 必须把所有资产统计出来,如果漏了的话,可能会成为一个薄弱点,被攻击 ...

  3. 使用OmniDB数据库管理工具,管理Oracle/MariaDB/PostgreSQL等关系型数据库

    参考来源:https://hub.docker.com/r/taivokasper/omnidb/ 使用OmniDB数据库管理工具 --管理Oracle/MariaDB/PostgreSQL等关系型数 ...

  4. 消控中心人员配置_建筑能耗监测系统集中化运行管理模式和人员配置!

    一般而言,建筑能耗监测系统采取集中化运行管理模式,尤其是对于一些大型建筑群的能耗监测,能耗监测系统的集成化程度更高.所以管理工作是重中之重,下面我们就能耗监测系统集中化运行管理模式和人员配置简单分析一 ...

  5. Spring管理事务的若干配置形式

    Spring管理事务的若干配置形式 虽说利用Spring来实现配置式事务的基本原理都是AOP,但其配置方法也多种多样,以下从互联网摘抄了一些,希望起一个总结作用(有版权问题的话请留言作者,我将立即删除 ...

  6. Roslyn 使用 Directory.Build.props 管理多个项目配置

    在一些大项目需要很多独立的仓库来做,每个仓库之间都会有很多相同的配置,本文告诉大家如何通过 Directory.Build.props 管理多个项目配置 在我的 MVVM 框架需要三个不同的库,一个是 ...

  7. CentOS 6.9下的Setup工具(用于管理服务/防火墙/网络配置/验证服务)

    说明:Setup工具套件好像是CentOS下特有的用于管理服务/防火墙/网络配置等,其实就是基于命令行模式界面的GUI工具.唯一特点就是方便. 安装: #安装Setup命令工具 yum -y inst ...

  8. [原创] HBuildX,微信小程序模拟器报错(如若已在管理后台更新域名配置,请刷新项目配置后重新编译项目)

    今天在学习使用uniapp,开发微信小程序时第三方登录时,HBuild编辑器报了一个错误,经过定位分析,确定代码是没有问题的,报错如下 如若已在管理后台更新域名配置,请刷新项目配置后重新编译项目 经过 ...

  9. centos 系统软件包管理 yum 本地yum配置 扩展源epel rpm 清除yum缓存 yum provides */vim 第十节课...

    centos  系统软件包管理  yum 本地yum配置  扩展源epel  rpm  清除yum缓存  yum provides "*/vim"   第十节课 你不能保证可逆化操 ...

最新文章

  1. 第十六届全国大学生智能汽车竞赛设想
  2. f2 自适应_典型的三行二列居中高度自适应布局
  3. gcc和g++的区别[zz]
  4. 成功解决PackagesNotFoundError: The following packages are not available from current channels: tensorflo
  5. 2.1.Python字符串处理(去掉空格或者特殊字符、替换操作、查找操作、判断操作、分割合并操作、字符串文档)
  6. 阿里巴巴的AI革命 | 4天云栖大会干货总结
  7. ID为GUID类型时使用ObjectDataSource控件的时候的未找到DataObjectTypeName属性的解决方法...
  8. sudo rosdep init时出现错误: ERROR: cannot download default sources list from
  9. dl320服务器内存型号,HP DL320 G5 1U XEON 3040/2GB内存/500G SATA 双核服务器
  10. 数字系统的设计层级(行为级、RTL、门级)
  11. HAMA 混合信道接入Ad-Hoc,分布式TDMA 协议
  12. Linux操作系统的发展
  13. C++ 20 std::chrono 库使用 | std::chrono::year_month_day |std::chrono::hh_mm_ss 使用
  14. 简单使用hbuildx把vue-cli项目打包,并使用electron转换成可执行的exe文件
  15. 基于python实现高分二号遥感影像水体提取与水质反演(黑臭水体与水体富营养化)
  16. QT出现中文乱码及解决方案
  17. 产品上架后,亚马逊运营应该做什么
  18. 安卓手机利用蓝牙调试APP搜索不到HC-05模块连接的问题
  19. 华为HG522-C相框猫配置文件的加解密
  20. weblogic配置数据源

热门文章

  1. 节约里程法java代码_患者,男,70岁,有多年排尿困难,呈淋漓状,近2年来双侧腹股沟区出现半年圆形肿块,站立时明显,平卧后消失,体检时压迫内环肿块仍出现,诊断为...
  2. 钉钉产品介绍_钉钉上线安全教育新功能家校联动护航学生暑期安全
  3. json文件转为excel_2分钟上手、3小时学会无代码软件开发---XML、Json处理
  4. 计算机与人脑_要把人脑连到计算机上!马斯克真敢想,但人类准备好了吗?
  5. 来,看看这20个常用的宏定义!
  6. 清华团队研发,首款国产电力电子仿真软件来啦~已捐赠哈工大、海工大、清华使用!...
  7. 这个学校的毕业典礼,火了。
  8. java workerdone_【架构】Java并发编程——线程池的使用
  9. matlab静态变量怎样分配内存,matlab中的静态变量
  10. shopping car 3.0