当前位置: 首页 > news >正文

服务器及MySQL安全设置指南

文章目录

    • Linux安全配置
      • 1、密码复杂度策略
      • 2、登陆失败策略
      • 3、登录超时策略
      • 4、安全日志记录
      • 5、账户策略
        • 5.1 创建系统管理员(应该对/var进行授权,修改可能会影响到ssh登录)
        • 5.2 创建安全管理员(应该对/etc进行授权)
        • 5.3 创建审计管理员(应该对/var/log进行授权)
    • MySQL安全配置
      • 1、安装validata_password插件
      • 2、创建系统管理员用户
      • 3、创建安全管理员用户
      • 4、创建审计管理员用户
      • 5、设置错误登录限制
      • 6、登陆超时时间
    • 总结

在安全设置中,密码复杂度、登录失败和登录超时等策略是关键的安全措施。这些措施可以有效防止未授权访问,并增强系统的整体安全性。接下来我们将详细介绍如何配置这些安全策略。

Linux安全配置

1、密码复杂度策略

密码复杂度规则确保用户创建的密码足够强壮,难以被猜测或暴力破解。可以通过以下几种方式来实现:

  • 长度要求:设定最小密码长度(例如至少8个字符)。
  • 字符种类:要求密码包含大写字母、小写字母、数字以及特殊字符。
  • 历史记录:不允许使用最近几次使用的旧密码。

示例:配置有效期90天、长度不少于8位、至少3种字符的密码策略。

#vim /etc/login.defs
PASS_MAX_DAYS   90 (密码有效期)
PASS_MIN_DAYS   0  (密码修改间隔)
PASS_MIN_LEN    8 (密码最小长度)
PASS_WARN_AGE   7 (密码到期前警告)

设置包含字符、大写字母、小写字母

# cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
# vim /etc/pam.d/system-auth
找到包含pam_pwquality.so模块的行,将原有行注释并修改为如下的新配置:
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root
# minlen=8 密码最小长度为8个字符。
# lcredit=-1 密码应包含的小写字母的至少一个
# ucredit=-1 密码应包含的大写字母至少一个
# dcredit=-1 将密码包含的数字至少为一个
# ocredit=-1 设置其他符号的最小数量,例如@,#、! $%等,至少要有一个
# enforce_for_root 确保即使是root用户设置密码,也应强制执行复杂性策略

测试:使用passwd测试是否配置成功
在这里插入图片描述

2、登陆失败策略

登录失败策略用于限制非法尝试登录的次数,以减少通过暴力破解攻击成功的机会。通常包括锁定账户一段时间或永久锁定直至管理员解锁。
示例:配置3次锁定、锁定时长60分钟的登陆失败策略。

# vim /etc/pam.d/sshd
新增以下配置:
auth required pam_tally2.so onerr=fail deny=3 unlock_time=1800 even_deny_root root_unlock_time=300
# root_unlock_time: 表示root用户锁定时间
# unlock_time: 表示普通用户锁定时间
# onerr=fail: 表示连续失败
# deny=3: 表示超过3次登录失败即锁定
# 如果不想限制root用户,可以去掉:even_deny_root root_unlock_time=300。

在这里插入图片描述
注意:auth要放到第二行,否则不生效!!
测试
在这里插入图片描述如果要查看某个用户的登陆失败次数,可以使用以下命令查看:

pam_tally2   --user luweihao

在这里插入图片描述
重置某个用户的登陆失败次数:

pam_tally2   --user luweihao --reset

3、登录超时策略

登陆超时策略为了防止会话被长时间闲置而被他人利用,应设置合理的会话超时时间,即当用户无活动状态达到一定时限后自动断开连接。
示例:配置会话超时时间为30分钟。

# vim /etc/profile
注意:在末尾增加(单位是s)
TMOUT=1800

4、安全日志记录

有效的日志记录不仅可以帮助管理员监控系统活动,还能在发生安全事件时提供关键信息用于调查和响应。
示例:启用auditd/rsyslog

service auditd status
service rsyslog status

5、账户策略

合理地分配不同的管理角色对于确保系统的安全性至关重要。通过创建系统管理员、安全管理员和审计管理员等角色,并为每个角色设定相应的权限,可以有效地实现职责分离,减少内部威胁风险。

5.1 创建系统管理员(应该对/var进行授权,修改可能会影响到ssh登录)
groupadd sysgroup
useradd sys -g sysgroup
passwd sys
usermod -G sysgroup sys
mkdir /vartest
chown -R sys:sysgroup /vartest
chmod 741 /vartest
5.2 创建安全管理员(应该对/etc进行授权)
useradd -d /security security
passwd security
chown -R security:security /security
chmod 700 /security
5.3 创建审计管理员(应该对/var/log进行授权)
useradd audit
passwd audit
vim /etc/sudoers
添加
audit     ALL = (ALL) NOPASSWD: /usr/bin/cat , /usr/bin/less , /usr/bin/more , /usr/bin/tail , /usr/bin/head
chown -R audit:audit /var/log
chmod 700 /var/log

MySQL安全配置

MySQL无法直接进行密码策略配置,需要安装插件。MySQL5.7默认有validata_password的插件,但是没有安装,需要手动安装。
注意:如果MySQL设置了只读账号,需要先关闭只读,安装完插件后,重新开启只读。

#关闭只设置
set global read_only=0;
#最后再打开只读设置(根据需求)
set global read_only=1;

1、安装validata_password插件

INSTALL PLUGIN validate_password SONAME 'validate_password.so';

在这里插入图片描述
查看当前设置

SHOW VARIABLES LIKE 'validate_password%';
SHOW VARIABLES LIKE '%password%';

在这里插入图片描述

#default_password_lifetime这个为全局设置,影响到所有账号,生产环境谨慎设置。
#validate_password_check_user_name:用于是否检查密码是否与用户名相似。设置为 OFF 表示不检查。
#validate_password_dictionary_file:用于指定用于密码验证的字典文件。如果为空,表示没有配置特定的字典。
#validate_password_length:密码的最小长度,这里表示密码至少需要 8 个字符。
#validate_password_mixed_case_count:密码中必须包含的大写和小写字母的最少数量。在此设置为 1,表示至少需要一个大写或小写字母。
#validate_password_number_count:密码中必须包含的数字的最少数量。在此设置为 1,表示至少需要一个数字。
#validate_password_policy:定义密码的复杂性策略。设置为 MEDIUM,表示密码需满足中等复杂性要求。
#validate_password_special_char_count:密码中必须包含的特殊字符的最少数量。未设置,表示没有要求。

可以自己修改配置,如密码长度修改成10位

SET GLOBAL validate_password_length = 10;

在这里插入图片描述

2、创建系统管理员用户

#创建系统管理员用户
CREATE USER 'sysdba'@'localhost' IDENTIFIED BY 'NBYl6vu9d5Bev&S2';
#修改系统管理员用户的密码过期时间
alter user 'sysdba'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
#赋予系统管理员相应的权限
GRANT ALL PRIVILEGES ON *.* TO 'sysdba'@'localhost' WITH GRANT OPTION;
#查看权限
show grants for 'sysdba'@'localhost';
#查看密码过期时间
show create user 'sysdba'@'localhost';

在这里插入图片描述

3、创建安全管理员用户

#创建安全管理员用户
CREATE USER 'safedba'@'localhost' IDENTIFIED BY 'CqLs@rGKt3RG@fMI';
#修改安全管理员用户密码过期时间
alter user 'safedba'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
#赋予安全管理员相应的权限
GRANT SELECT, SHOW VIEW ON *.* TO 'safedba'@'localhost';
#查看权限
show grants for 'safedba'@'localhost';
#查看密码过期时间
show create user 'safedba'@'localhost';

在这里插入图片描述

4、创建审计管理员用户

#创建审计管理员用户
CREATE USER 'auditdba'@'localhost' IDENTIFIED BY 'isn2ecX#ZVhjx#Eu';
#修改审计管理员用户密码过期时间
alter user 'auditdba'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
#赋予审计管理员相应的权限
GRANT RELOAD, PROCESS, SHOW DATABASES ON *.* TO 'auditdba'@'localhost';
#查看权限
show grants for 'auditdba'@'localhost';
#查看密码过期时间
show create user 'auditdba'@'localhost';

在这里插入图片描述

5、设置错误登录限制

#安装CONNECTION_CONTROL插件
INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';
#提供了一个INFORMATION_SCHEMA类型的表,用户在此表中可以查看更详细关于登陆失败连接的信息。
INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so';

在这里插入图片描述

#查看当前配置
show variables like '%connection%';

在这里插入图片描述

#connection_control_failed_connections_threshold:连续失败最大次数3次,0表示不开启
#connection_control_max_connection_delay:超过最大失败次数之后阻塞登录最大时间(毫秒)
#connection_control_min_connection_delay:超过最大失败次数之后阻塞登录最小时间(毫秒)
#例如:set global connection_control_failed_connections_threshold=0;
#查询各账号登录失败次数
use information_schema;
select * from connection_control_failed_login_attempts;

在这里插入图片描述

6、登陆超时时间

show variables like "%wait_timeout%";
#修改超时时间为600s
set global wait_timeout=600;

在这里插入图片描述

总结

正确地配置以上策略能够显著提高服务器的安全性,但同时也需要注意不要给合法用户提供过多障碍。因此,在实施上述任何一种策略之前,请根据实际情况做出适当调整,确保既保证了安全性又不影响正常使用体验。

相关文章:

服务器及MySQL安全设置指南

文章目录 Linux安全配置1、密码复杂度策略2、登陆失败策略3、登录超时策略4、安全日志记录5、账户策略5.1 创建系统管理员(应该对/var进行授权,修改可能会影响到ssh登录)5.2 创建安全管理员(应该对/etc进行授权)5.3 创…...

MDX语言的网络编程

MDX语言的网络编程探索 引言 在当今信息技术快速发展的时代,网络编程越来越成为软件开发的重要组成部分。无论是为了创建Web应用,还是为了开发与云服务交互的程序,网络编程的知识愈发显得重要。MDX(Multidimensional Expression…...

client-go中watch机制的一些陷阱

Reference https://stackoverflow.com/questions/51399407/watch-in-k8s-golang-api-watches-and-get-events-but-after-sometime-doesnt-get-an 问题描述 最近在使用 client-go 的 watch 机制监听 k8s 中的 deployment 资源时,发现一个奇怪的现象 先看下代码&a…...

Chrome访问https页面显示ERR_CERT_INVALID,且无法跳过继续访问

在访问网页的时候,因为浏览器自身的安全设置问题, 对于https的网页访问会出现安全隐私的提示, 甚至无法访问对应的网站,尤其是chrome浏览器, 因此本文主要讲解如何设置chrome浏览器的设置,来解决该问题&…...

Jenkins pipeline 发送邮件及包含附件

Jenkins pipeline 发送邮件及包含附件 设置邮箱开启SMTP服务 此处适用163 邮箱 开启POP3/SMTP服务通过短信获取TOKEN (保存TOKEN, 后面Jenkins会用到) Jenkins 邮箱设置 安装 Build Timestamp插件 设置全局凭证 Dashboard -> Manage Jenkins …...

怎么把word试题转成excel?

在教育行业、学校管理以及在线学习平台中,试题库的高效管理是一项核心任务。许多教育工作者和系统开发人员常常面临将 Word 中的试题批量导入 Excel 的需求。本文将详细介绍如何快速将试题从 Word 转换为 Excel,帮助您轻松解决繁琐的数据整理问题&#x…...

【机器学习】量子机器学习:当量子计算遇上人工智能,颠覆即将来临?

我的个人主页 我的领域:人工智能篇,希望能帮助到大家!!!👍点赞 收藏❤ 在当今科技飞速发展的时代,量子计算与人工智能宛如两颗璀璨的星辰,各自在不同的苍穹闪耀,正以前…...

IDEA配置maven和git并如何使用maven打包和git推送到gitlab

首先找到设置 在里面输入maven然后找到点击 然后点击右边两个选项 路径选择下载的maven目录下的settings文件和新建的repository文件夹 点击apply应用 然后在搜索框里搜git点击进去 此路径为git的exe执行文件所在目录,选好之后点击test测试下方出现git版本号表…...

Supermaven 加入 Cursor:AI 编码新篇章

引言 2024 年 11 月 11 日,我们迎来了一个激动人心的时刻——Supermaven 正式加入 Cursor! 这一合作标志着 AI 编程工具进入了一个新的发展阶段,为开发者提供更智能、更高效的编码体验。本文将带您了解此次合并的背景、意义以及未来的发展方…...

【2024华为OD-E卷-100分-boss的收入】(题目+思路+JavaC++Python解析)

题目描述 题目:boss的收入 在一个公司中,有一个老板(boss)和若干名员工(employees)。老板和员工的收入信息存储在一个数组中,其中数组的每个元素表示一个人的收入。数组的第0个元素表示老板的…...

《Java8实战》汇总

参考书籍:《Java8 实战》 一、Lambda表达式 Lambda 是一个匿名函数。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。 1.1、Lambda表达式的关键:从匿名类到 Lambda 的转换 示例: <span style="background-color:#…...

Elasticsearch:搜索相关性

这里写目录标题 一、相关性的概述二、自定义评分策略1、TF-IDF算法2、BM25算法 三、自定义评分策略1、Index Boost&#xff1a;在索引层面修改相关性2、boosting&#xff1a;修改文档相关性3、negative_boost&#xff1a;降低相关性4、function_score&#xff1a;自定义评分5、…...

LeetCode 热题 100_二叉树展开为链表(46_114_中等_C++)(二叉树;先序遍历(递归+数组);先序遍历(递归))

LeetCode 热题 100_二叉树展开为链表&#xff08;46_114&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;先序遍历&#xff08;递归数组&#xff09;&#xff09;&#xff1a;思路二&#xff08;先序遍历&am…...

uniapp实现在card卡片组件内为图片添加长按保存、识别二维码等功能

在原card组件的cover属性添加图片的话&#xff0c;无法在图片上面绑定 show-menu-by-longpress"true"属性&#xff0c;通过将图片自定义添加可使用该属性。 代码&#xff1a; <uni-card title"标题" padding"10px 0" :thumbnail"avata…...

最好用的图文识别OCR -- PaddleOCR(2) 提高推理效率(PPOCR模型转ONNX模型进行推理)

在实际推理过程中&#xff0c;使用 PaddleOCR 模型时效率较慢&#xff0c;经测试每张图片的检测与识别平均耗时超过 5 秒&#xff0c;这在需要大规模自动化处理的场景中无法满足需求。为此&#xff0c;我尝试将 PaddleOCR 模型转换为 ONNX 格式进行推理&#xff0c;以提升效率。…...

Redis--20--大Key问题解析

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 大Key问题1.什么是 Redis 大 Key&#xff1f;在 Redis 中&#xff0c;大 Key 是指单个键值对的数据量非常大&#xff0c;可能包含大量数据。 2. Redis大Key的危害3.…...

新版2024AndroidStudio项目目录结构拆分

如题 下载了最新版的android studio 发现目录结构和以前不一样 自动帮你合并了 如何层层抽丝剥茧呢 按照一下步骤即可解决问题&#xff01;...

STM32内置Flash

一、原理 利用flash存储用户数据需要注意查看&#xff0c;用户数据是否会覆盖芯片运行程序。 IAP&#xff08;在程序中编程&#xff09;利用程序修改程序本身&#xff0c;和OTA是一个原理。IAP在程序中编程支持任意一种通信下载。 ICP&#xff08;在电路中编程&#xff0c;通…...

华为路由器、交换机、AC、新版本开局远程登录那些坑(Telnet、SSH/HTTP避坑指南)

关于华为设备远程登录配置开启的通用习惯1、HTTP/HTTPS相关服务 http secure-server enablehttp server enable 2、Telnet服务telnet server enable3、SSH服务stelnet server enablessh user admin authentication-type password 「模拟器、工具合集」复制整段内容 链接&…...

【Linux】深入理解进程信号机制:信号的产生、捕获与阻塞

&#x1f3ac; 个人主页&#xff1a;谁在夜里看海. &#x1f4d6; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 时间不语&#xff0c;却回答了所有问题 目录 &#x1f4da;前言 &#x1f4da;一、信号的本质 &#x1f4d6;1.异步通信 &#x1f4d6;2.信…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...