安全运维之mysql基线检查

news2024/9/20 18:53:53

版本加固

选择稳定版本并及时更新、打补丁。

稳定版本:发行6-12个月以内的偶数版本。

检查方法:

使用sql语句:select version();

检查结果:

1661772233_630ca1c9837ded93b2e5c.png!small

存在问题:当前数据库版本较老需要更新

解决方案:前往http://www.mysql.com进行更新。

** 弱密码**

数据库不存在弱口令,提高数据库安全性

检查方法:

sql语句:select user,authentication_string from user;

检查结果:

1661772246_630ca1d6985ef12ac251c.png!small

1661772252_630ca1dc65ac167b3dcd9.png!small

存在问题:当前root账户使用弱密码

解决方法:首先以root用户登录

mysql>use mysql

mysql>update user set password=password(“复杂的新密码”) where user=‘test’;

mysql> flush privileges;

** 不存在匿名账户**

检查方法:

sql语句:select user,authentication_string from user;

检查结果:

1661772261_630ca1e584c4750dab85f.png!small

存在问题:存在账户为空的匿名账户。

解决方法∶

删除匿名帐户∶

mysql>use mysql;

mysql>delete from user where user=";

mysql>flush privileges;

** 合理设置权限**

检查方法:

Sql语句:show grants for xxxx(用户名)@xxxx(主机域)

检查结果:

1661772273_630ca1f11c1bdc41e2ea9.png!small

存在问题:应用用户授予的权限过大,可能出现权限滥用

解决方法:一般应用用户建议授予最小权限

grant权限1权限2…权限n on数据库名称.表名称to 用户名@用户地址

** 合理设置文件权限**

检查方法:

Linux语句:

ls -al .mysql_history .bash_history

ls -al /etc/my.cnf

find / -name .MYD |xargs ls -al

find / -name .MYI |xargs ls -al

find / -name .frm |xargs ls -al

检查结果:

1661772285_630ca1fdb231adcbb9a7f.png!small

1661772291_630ca2031abd70ea4428c.png!small

存在问题:.mysql_history .bash_history 应为600权限

/etc/my.cnf 应为644权限

不合理设置数据库文件权限,可能导致非授权访问或篡改

解决方法:

chmod 600 .mysql_history .bash_history

chmod 600 *.MYD *.MYI *.frm

chmod o-rw /etc/my.cnf

** 日志审核**

检查方法:

查看my.cnf或my.ini文件,查看是否包含如下设置

[mysqld]

log = filename

检查结果:

1661772306_630ca212ccc9396889023.png!small

存在问题:

没有设置日志审核,可能导致安全事件发生时无法查看日志记录

解决方法:

在mysql的安装目录下,打开my.cnf或my.ini,在【mysqld】

后面加上如下的参数,取消注释并配置日志文件,保存后重启mysql服务就行了。#Enter a name for the binary log.
Otherwise a default name will be used.

#log-bin=

#Enter a name for the query log file. Otherwise a default name will be used.

#log=

#Enter a name for the error log file. Otherwise a default name will be used.
log-error=

#Enter a name for the update log file. Otherwise a default name will be used.
#log-update=

运行账号

检查方法:

检查进程属主和运行参数是否包含–user=mysql

linux语句:

ps -ef|grep mysqld

grep -i user /etc/my.cnf

检查结果:

1661772325_630ca2258dbe663cf3aed.png!small

存在问题:

Mysqld服务不以普通用户运行,数据库高权限被利用

解决方法:

编辑/etc/my cnf,设置如下∶

[mysql.server]

user=mysql

重新启动mysqld服务

可信ip地址控制

检查方法:

Sql语句:select user,host from mysql.user;

检查结果:

1661772334_630ca22e0e67649ad6040.png!small

存在问题:

Root,test2,test3,test4,test5,匿名用户主机域都为:%,这导致任意ip都可连接数据库,增加了数据库的攻击面,降低了数据库的安全性。

解决方法:

mysql>GRANT ALL PRIVILEGES ON**TO’可信任用户’@'可信任ip地址’IDENTIFIED BY’可信用户密码’WITH
GRANT OPTION;

连接数限制

检查方法:

查看MySQL配置文件∶my.cnf 或者是 my.ini

在【mysqld】段查看最大连接数配置∶

max_connections =1000 查看最大连接数

Sql语句:mysql> show variables like ‘max_connections’;

检查结果:

1661772345_630ca239014295ba333d8.png!small

1661772351_630ca23f2e7b4b68e5e16.png!small

存在问题:根据业务需求设置数据库最大连接数

解决方法:

编辑MySQL配置文件∶my.cnf 或者是 my.ini

在【mysqld】配置段添加∶

max_connections = 业务需求设置数据库最大连接数

保存,重启MySQL服务。

禁止远程连接数据库

检查方法:

Sql语句:show variables like “%skip_networking%”;

show variables like “%bind_address%”;

检查结果:

1661772364_630ca24c23d2a6888f376.png!small

存在问题:

允许远程连接数据库

解决方法:

为了禁止该功能,启动skip_networking,不监听sql的任何TCP/IP的连接,切断远程访问的权利,保证安全性。

vim /etc/my.cnf

[mysqld]

bind_address=127.0.0.1

skip_networking=1

假如需要远程管理数据库,可通过安装PhpMyadmin来实现。

假如确实需要远程连接数据库,至少修改默认的监听端口,同时添加防火墙规则,只允许可信任的网络的mysql监听端口的数据通过。

改变默认mysql管理员帐号

检查方法:

Sql语句:select user from user;

检查结果:

1661772375_630ca2574b969dc15c4a8.png!small

存在问题:

系统mysql的管理员名称是root,而一般情况下,数据库管理员都没进行修改,这一定程度上对系统用户穷举的恶意行为提供了便利.

解决方法:

改成不易被猜到的用户名:

mysql> update user set user=“newroot” where user=“root”;

mysql> flush privileges;

删除默认测试库

检查方法:

sql语句:show databases;

检查结果:

1661772407_630ca27759752b05cb305.png!small

存在问题:

存在空用户和TEST库,这会对数据库的安全构成威胁,有必要全部删除.

解决方法:

#mysql> show databases;

#mysql> drop database TEST;

命令历史记录保护

检查方法:

Linux语句:

Ls .mysql_history .bash_history

Cat .mysql_history

Cat .bash_history

检查结果:

1661772420_630ca284849733d4c4942.png!small

1661772425_630ca2890efa7ec253d6c.png!small

1661772430_630ca28e368faf05e94f9.png!small

存在问题:

数据库相关的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对本地文件存取

检查方法:

linux命令:cat /etc/my.cnf

检查结果:

1661772447_630ca29fab82771bf7df3.png!small

存在问题:

本地文件存取打开。

解决方法:

–local-infile=0选项启动mysqld从服务器端禁用所有LOAD DATA LOCAL命令,假如需要获取本地文件,需要打开,但是建议关闭。

可以在my.cnf中添加local-infile=0,或者加参数local-infile=0

重新启动mysql。

Scuba扫描

1661772466_630ca2b2801ac6dee88e6.png!small

存在三个高危漏洞,六个中危漏洞。

1661772475_630ca2bb6ec70ab5476c1.png!small

第一个高危漏洞:主机域有通配符。

主机域有通配符意味着任意ip都可连接该账号,这将导致该数据库安全性下降。

1661772483_630ca2c3e738aa0740445.png!small

第二个高危漏洞:have_symlink选项设置为 YES。

1661772494_630ca2ce893d398ce251e.png!small

第三个高危漏洞:存在匿名账户。

1661772502_630ca2d66c7c0a012ef5b.png!small

六个中危漏洞,

ssl_type选项未设置为远程用户必需。

1661772511_630ca2df8a036ca9c5947.png!small

现有“测试”数据库。

1661772517_630ca2e59c8718a0fa46f.png!small

default_password_lifetime选项已禁用或设置为 91 或更高。

1661772530_630ca2f2cb3ff69e1c533.png!small

local_infile选项未禁用。

1661772538_630ca2fa35db1f974c83b.png!small

sql_mode选项未设置为“STRICT_ALL_TABLES”。

1661772543_630ca2ff1711ebf4b50eb.png!small

用户没有密码过期策略。

1661772549_630ca30540ae36c7715cf.png!small

程用户必需。

[外链图片转存中…(img-POVqk1ix-1676620810659)]

现有“测试”数据库。

[外链图片转存中…(img-iNGbvUDe-1676620810659)]

default_password_lifetime选项已禁用或设置为 91 或更高。

[外链图片转存中…(img-pSuNpBme-1676620810660)]

local_infile选项未禁用。

[外链图片转存中…(img-TFn3YVxO-1676620810660)]

sql_mode选项未设置为“STRICT_ALL_TABLES”。

[外链图片转存中…(img-fRTnJTBe-1676620810660)]

用户没有密码过期策略。

[外链图片转存中…(img-IAvZNzTz-1676620810661)]

网络安全工程师企业级学习路线

这时候你当然需要一份系统性的学习路线

如图片过大被平台压缩导致看不清的话,可以在文末下载(无偿的),大家也可以一起学习交流一下。

一些我收集的网络安全自学入门书籍

一些我白嫖到的不错的视频教程:

上述资料【扫下方二维码】就可以领取了,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/352293.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023备战金三银四,Python自动化软件测试面试宝典合集(十四)

15.8 App 的性能测试 内容要点:指标:cpu,内存,电量,流量,FPS,怎么测? cpu,内存,流量 android studiocpu 不能超过 10-20% 普通业务要求在 10%左右,核心的业务…

链表:反转链表、快慢指针、删除链表【零神基础精讲】

来源0x3f:https://space.bilibili.com/206214 文章目录反转链表[206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/)[92. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/)[25. K 个一组翻转链表](https://leetcode.cn/proble…

新生儿住月子中心20天患败血症 什么是败血症?有哪些危害

12月7日,四川眉山市民唐先生说,他刚出生的儿子在妇产医院分娩中心住了20天后感染了败血症。据唐先生介绍,哈子出院时各项指标正常。他在分娩中心住了半个月左右,孩子喝牛奶异常易怒,第二天开始发烧。当天,在…

(十一)、用户中心页面【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1,个人中心页面 1.1 新建个人中心页面 1.2 纯净版个人中心页面代码&#xff1a; <template><view class"user"><view class"top"><view class"group"><view class"userinfo"><!-- 顶部 左侧 头像 …

Unreal Engine07:Actor的物理特性

写在前面 UE4作为物理引擎&#xff0c;其中一大功能就是能够赋予物体以物理特性。这里将简单介绍一下Actor常用的一些物理特性设置。 一、基本操作 这里介绍一些UE4的Editor基本操作&#xff1b; 1. Actor的变换 将Actor类拖动到地图中&#xff0c;生成实例&#xff1b;鼠…

408强化(二)线性表纯享版

目录 一、顺序表&#xff08;数组&#xff09;和链表总览 二、考情分析 2.1 从历年考情可以看出&#xff0c;如果一个方法出现了第2次&#xff0c;一般是以下情况&#xff1a; 2.2 没有考过的地方 三、 共同操作或考法 3.1 多指针后移 3.2 逆置 3.3 空间换时间的操作 3.…

一分钟了解微信公众号服务器配置自动回复

1、建一个web服务工程 2、开放任意一个接口&#xff0c; 比如 /aaa/bbb/ccc 把接口路径配置在这里&#xff0c;ip为公网ip或域名&#xff0c;其他的参数默认&#xff0c;对入门选手没啥用 3、该接口允许get和post两种方式访问&#xff0c;接口需要对于访问方式编写两套逻辑…

ubuntu下如何使用wireshark抓包,保姆级教程

Wireshark&#xff08;前称Ethereal&#xff09;是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包&#xff0c;并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口&#xff0c;直接与网卡进行数据报文交换。 一、安装wireshark 打开终端&…

教育行业如何高效使用知识库?

在线知识库的有效性在商业世界中是众所周知的。知识库通常用于客户支持&#xff0c;或管理员工的内部知识。在教育系统中&#xff0c;知识库的优势鲜为人知。知识库是可用于各种应用程序的多功能软件。特别是考虑到当前网络影响我们所有人生活的环境&#xff0c;教育越来越多地…

数据结构<堆>

&#x1f387;&#x1f387;&#x1f387;作者&#xff1a; 小鱼不会骑车 &#x1f386;&#x1f386;&#x1f386;专栏&#xff1a; 《数据结构》 &#x1f393;&#x1f393;&#x1f393;个人简介&#xff1a; 一名专科大一在读的小比特&#xff0c;努力学习编程是我唯一…

字符串匹配 - 模式预处理:朴素算法(Naive)(暴力破解)

朴素的字符串匹配算法又称为暴力匹配算法&#xff08;Brute Force Algorithm&#xff09;&#xff0c;最为简单的字符串匹配算法。算法简介朴素的字符串匹配算法又称为暴力匹配算法&#xff08;Brute Force Algorithm&#xff09;&#xff0c;它的主要特点是&#xff1a;没有预…

功率放大器科普知识(晶体管功率放大器的注意事项)

虽然功率放大器是电子实验室的常用仪器&#xff0c;但是很多人对于它却没有清晰的认识&#xff0c;下面就让安泰电子来为大家介绍功率放大器的科普内容以及使用注意事项&#xff0c;希望大家可以对功率放大器有清晰的认识。功率放大器可以把输入信号的功率放大&#xff0c;以满…

NFT Insider #86:A16z 领投,YGG 获得 1380 万美元融资,The Sandbox与《北斗神拳》合作

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据&#xff0c;艺术新闻类&#xff0c;游戏新闻类&#xff0c;虚拟世界类&#…

智能小车红外循迹原理

循迹电路循迹电路由收发一体的红外收发管P1&#xff0c;P2&#xff1b;电位器R18&#xff0c;R29&#xff1b;发光二极管D6&#xff0c;D7和芯片LM324等组成。一共有两路&#xff0c;对应的红外电位器用于调节灵敏度。LM234用于信号的比较&#xff0c;并产生比较结果输出给单片…

MySQL8.0 optimizer_switch变化

Optimizer_switch变量是支持对优化器行为的控制。是一组值标志&#xff0c;每个标志都有一个on或off的值&#xff0c;以指示是否启用或禁用相应的行为。 MySQL8.0里除了熟悉的hash join重大变化之外&#xff0c;其他方面也有优化。 mysql> SHOW VARIABLES LIKE OPTIMIZER_…

14 基数排序(桶排序)

文章目录1 基数排序基本思想2 基数排序的代码实现2.1 java2.2 scala3 基数排序总结1 基数排序基本思想 1) 基数排序&#xff08;radix sort&#xff09;属于“分配式排序”&#xff08;distribution sort&#xff09;&#xff0c;又称“桶子法”&#xff08;bucket sort&#…

【Python】循环语句(while,for)、运算符、字符串格式化

一、while循环Python 编程中 while 语句用于循环执行程序&#xff0c;即在某条件下&#xff0c;循环执行某段程序&#xff0c;以处理需要重复处理的相同任务。其基本形式为&#xff1a;while 判断条件(condition)&#xff1a;执行语句(statements)执行语句可以是单个语句或语句…

Git、小乌龟、Gitee的概述与安装应用超详细(组长与组员多人开发版本)

目录 一、概述 1.什么是Git&#xff1f; 2.Git历史来源 3.Git的优点? 4.什么是版本控制&#xff1f; 5.版本控制工具种类&#xff1f; 6.Git工作机制 7.Git、小乌龟、Gitee、凭据管理器的简单介绍 二、Git下载安装 下载Git 安装Git 安装完成后查看版本 三、下载小…

防水蓝牙耳机评测,值得入手的四款蓝牙耳机分享

提到蓝牙耳机&#xff0c;大家第一反应是音质跟佩戴舒适度要好&#xff0c;其实除了这两个功能&#xff0c;还有就是防水性能不能少&#xff0c;而且防水等级越高&#xff0c;耳机寿命也就越长&#xff0c;那么&#xff0c;我们该如何 选购一款好用的蓝牙耳机呢&#xff1f;下面…

Echarts 配置横轴竖轴指示线,更换颜色、线型和大小

第018个点击查看专栏目录本示例是描述如何在Echarts上配置横轴竖轴指示线&#xff0c;更换颜色、线型和大小。方法很简单&#xff0c;参考示例源代码。 文章目录示例效果示例源代码&#xff08;共85行&#xff09;相关资料参考专栏介绍示例效果 示例源代码&#xff08;共85行&a…