当前位置: 首页 > 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.信…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...