安全运维之mysql基线检查
版本加固
选择稳定版本并及时更新、打补丁。
稳定版本:发行6-12个月以内的偶数版本。
检查方法:
使用sql语句:select version();
检查结果:

存在问题:当前数据库版本较老需要更新
解决方案:前往http://www.mysql.com进行更新。
** 弱密码**
数据库不存在弱口令,提高数据库安全性
检查方法:
sql语句:select user,authentication_string from user;
检查结果:


存在问题:当前root账户使用弱密码
解决方法:首先以root用户登录
mysql>use mysql
mysql>update user set password=password(“复杂的新密码”) where user=‘test’;
mysql> flush privileges;
** 不存在匿名账户**
检查方法:
sql语句:select user,authentication_string from user;
检查结果:

存在问题:存在账户为空的匿名账户。
解决方法∶
删除匿名帐户∶
mysql>use mysql;
mysql>delete from user where user=";
mysql>flush privileges;
** 合理设置权限**
检查方法:
Sql语句:show grants for xxxx(用户名)@xxxx(主机域)
检查结果:

存在问题:应用用户授予的权限过大,可能出现权限滥用
解决方法:一般应用用户建议授予最小权限
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
检查结果:


存在问题:.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
检查结果:

存在问题:
没有设置日志审核,可能导致安全事件发生时无法查看日志记录
解决方法:
在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
检查结果:

存在问题:
Mysqld服务不以普通用户运行,数据库高权限被利用
解决方法:
编辑/etc/my cnf,设置如下∶
[mysql.server]
user=mysql
重新启动mysqld服务
可信ip地址控制
检查方法:
Sql语句:select user,host from mysql.user;
检查结果:

存在问题:
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’;
检查结果:


存在问题:根据业务需求设置数据库最大连接数
解决方法:
编辑MySQL配置文件∶my.cnf 或者是 my.ini
在【mysqld】配置段添加∶
max_connections = 业务需求设置数据库最大连接数
保存,重启MySQL服务。
禁止远程连接数据库
检查方法:
Sql语句:show variables like “%skip_networking%”;
show variables like “%bind_address%”;
检查结果:

存在问题:
允许远程连接数据库
解决方法:
为了禁止该功能,启动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;
检查结果:

存在问题:
系统mysql的管理员名称是root,而一般情况下,数据库管理员都没进行修改,这一定程度上对系统用户穷举的恶意行为提供了便利.
解决方法:
改成不易被猜到的用户名:
mysql> update user set user=“newroot” where user=“root”;
mysql> flush privileges;
删除默认测试库
检查方法:
sql语句:show databases;
检查结果:

存在问题:
存在空用户和TEST库,这会对数据库的安全构成威胁,有必要全部删除.
解决方法:
#mysql> show databases;
#mysql> drop database TEST;
命令历史记录保护
检查方法:
Linux语句:
Ls .mysql_history .bash_history
Cat .mysql_history
Cat .bash_history
检查结果:



存在问题:
数据库相关的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
检查结果:

存在问题:
本地文件存取打开。
解决方法:
–local-infile=0选项启动mysqld从服务器端禁用所有LOAD DATA LOCAL命令,假如需要获取本地文件,需要打开,但是建议关闭。
可以在my.cnf中添加local-infile=0,或者加参数local-infile=0
重新启动mysql。
Scuba扫描

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

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

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

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

六个中危漏洞,
ssl_type选项未设置为远程用户必需。

现有“测试”数据库。

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

local_infile选项未禁用。

sql_mode选项未设置为“STRICT_ALL_TABLES”。

用户没有密码过期策略。

程用户必需。
[外链图片转存中…(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)]
网络安全工程师企业级学习路线
这时候你当然需要一份系统性的学习路线
如图片过大被平台压缩导致看不清的话,可以在文末下载(无偿的),大家也可以一起学习交流一下。

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

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

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

相关文章:
安全运维之mysql基线检查
版本加固 选择稳定版本并及时更新、打补丁。 稳定版本:发行6-12个月以内的偶数版本。 检查方法: 使用sql语句:select version(); 检查结果: 存在问题:当前数据库版本较老需要更新 解决方案:前往http://www.mysql…...
跨境电商卖家敦煌、雅虎、乐天、亚马逊测评自养号的重要性!
作为亚马逊、敦煌、乐天、雅虎等跨境的卖家,这两年以来,面对流量越来越贵的现实,卖家需要更加珍惜每次访问listing页面的流量,把转化做好,把流量尽可能转化为更多的订单。 提升转化率的技巧 提升产品转化率࿰…...
Python 之 Matplotlib xticks 的再次说明、图形样式和子图
文章目录一. 改变 x 轴显示内容 xticks 方法再次说明1. x 轴是数值型数据2. 将 x 轴更改为字符串3. 总结二. 其他元素可视性1. 显示网格:plt.grid()2. plt.gca( ) 对坐标轴的操作三. plt.rcParams 设置画图的分辨率,大小等信息四. 图表的样式参数设置1. …...
3.InfluxDB WEB使用
结合telegraf做指标数据收集 点击 Load Data -> Telegraf 配置界面 influxDB支持在WEB-UI中生成配置文件 然后利用telegraf通过远程URL请求的方式进行获取 点击CREATE CONFIGURATION 创建telegraf配置文件 选择Bucket InfluxDB提供了很多配置好的监控模板供用户选择 可以…...
git冲突合并
一、版本说明 dev:本地仓库中的dev分支 master:本地仓库中的master分支 remotes/origin/master和origin/master:都是远程仓库上的master分支 二、一个解决冲突的常规流程 1、前提条件:不能在master分支上修改任何文件。master分支…...
项目自动化构建工具make/Makefile
目录 make/Makefile概念和关系 make/Makefie的使用 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重…...
双目客流统计方案的应用原理
双目客流统计客流摄像头采用立体视觉技术实现高度统计功能。基于视差原理。利用双镜头摄取的两幅图像的视差,构建三维场景,在检测到运动目标后。通过计算图像对应点间的位置偏差。获取目标的三维信息,在深度图像中对目标的检测与追踪…...
python魔术方法(二)
__getattr__() class A:def __getattr__(self,name):print(f"getting {name}")raise AttributeErroro A() print(o.test)程序调用一个对象的属性,当这个属性不存的时候希望程序做些什么,这里我们打印希望的属性,并且抛出异常 __…...
cmd for命令笔记
语法 help for输出如下: 对一组文件中的每一个文件执行某个特定命令。 FOR %variable IN (set) DO command [command-parameters] %variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 c…...
4.1 Filter-policy
1. 实验目的 熟悉Filter-policy的应用场景掌握Filter-policy的配置方法2. 实验拓扑 Filter-policy实验拓扑如图4-5所示: 图4-5:Filter-policy 3. 实验步骤 (1) 网络连通性 R1的配置 <Huawei>system-vi…...
day15_常用类
今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、代码块[了解] 三、API 四、Object 五、包装类 六、数学和随机 零、 复习昨日 抽象接口修饰符abstractinterface是不是类类接口属性正常属性没…...
【网络原理5】IP协议篇
目录 IP协议报头 4位版本号 4位首部长度 8位服务类型(TOS) 16位总长度 IP拆包 16位标识、3位标志、13位片偏移编辑 8位生存时间(TTL) 8位协议 16位首部校验和 网络地址管理 32位源ip&32位目的ip 方案一:动态分配ip地址 方案2:NAT网络地址转换(使用一个ip代…...
Unity导出WebGL工程,并部署本地web服务器
WebGL打包 设置修改 在Build Settings->PlayerSettings->Other Settings->Rendering 将Color Space 设置为Gamma 将Lightmap Encoding 设置为NormalQuality 在Build Settings->PlayerSettings->Publishing Settings 勾选Decompression Fallback 打包 完成配…...
蓝桥杯考试总结汇总
一进考场设置devc快捷键 设置注释和取消注释快捷键设置代码自动补全快捷键开启devc调试功能,详细可以看怎么开调试功能https://blog.csdn.net/hz18790581821/article/details/78418648比赛过程中,如果不相信自己是否做对,没有把握的…...
备战蓝桥杯【二维前缀和】
🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…...
阿里P6细谈Python简易接口自动化测试框架设计与实现,我直呼内行
1、开发环境 操作系统:Ubuntu18 开发工具:IDEAPyCharm插件 Python版本:3.6 2、用到的模块 requests:用于发送请求 xlrd:操作Excel,组织测试用例 smtplib,email:发送测试报告 l…...
数据库存储
RAID DSL : Domain Spesic Language 专用领域语言 单机存储 一切皆Key-Value 本地文件系统 一切皆文件 Ceph - 分布式存储 关系型数据库通用组件 Query Engine :解析query,生成查询计划Txn Manager :事务并发管理Lock Man…...
hive学习笔记
一、Hive基本概念1.1 hive是什么hive是基于hadoop的一个数仓分析工具,hive可以将hdfs上存储的结构化的数据,映射成一张表,然后让用户写HQL(类SQL)来分析数据tel up down 1383838438 1345 1567 138383…...
7大体系防作弊,牛客放大招了!严肃笔试客户端上线!
如果问起学生对在线笔试的印象,“不公平”和“不服气”占了半壁江山。学生认为很多企业的在线笔试系统并不完善。原因一,不能有效地规避部分学生的作弊行为;原因二,在线考试系统不稳定,bug频出,导致笔试发挥…...
R语言广义可加模型在空气环境污染方面的应用(1)
粉丝私信我希望复制一篇文章的图片,图片来源于文章:Wu C, Yan Y, Chen X, Gong J, Guo Y, Zhao Y, Yang N, Dai J, Zhang F, Xiang H. Short-term exposure to ambient air pollution and type 2 diabetes mortality: A population-based time series st…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
