【Linux安全基线】- CentOS 7/8安全配置指南
在企业业务的生产环境中,Linux服务器的安全性至关重要,尤其是对于具有超级用户权限的root账号。滥用或被入侵后,可能会造成数据泄露、系统损坏等严重安全问题。为了减少这种风险,本文将详细介绍如何通过一系列安全措施来增强CentOS 7/8服务器的安全性,降低系统被攻击的风险。
1. 创建普通用户并禁用Root用户直接登录
场景说明: 在Linux系统中,root用户拥有最高权限,允许其对系统进行任何操作。然而,root账户的滥用或者由于弱密码被破解,可能会导致系统被完全控制。因此建议创建普通用户并为其赋予管理权限,而非直接使用root账户。
操作步骤:
-
创建新用户:
adduser ecs-user -
设置用户密码:
passwd ecs-user -
确认账户可正常登录:通过新的
ecs-user账户登录系统,确保一切正常。 -
为新用户添加免密sudo权限:
vim /etc/sudoers,在
root ALL=(ALL) ALL下添加:
ecs-user ALL=(ALL) NOPASSWD:ALL -
禁止root登录:编辑SSH配置文件
/etc/ssh/sshd_config,找到PermitRootLogin项,将其设置为PermitRootLogin no,如果不存在此项,手动添加。
解释: 通过禁用root直接登录,可以避免因root账户被入侵导致的系统完全失控。此外,普通用户通过sudo提权执行管理操作,增加了一层安全保护。
2. 设置SSH空闲超时退出
场景说明: 在业务运维过程中,如果管理人员通过SSH远程登录服务器并长时间未操作,保持会话活跃可能会导致未授权人员接管该会话。设置超时退出机制可以有效降低这种风险。
操作步骤:
-
编辑SSH配置文件
/etc/ssh/sshd_config,设置:
ClientAliveInterval 600 ClientAliveCountMax 2
解释: 这意味着系统会在10分钟(600秒)内没有收到客户端响应时发起两次探测(ClientAliveCountMax),如果依然没有回应,会自动断开连接,避免空闲会话带来的风险。
3. 设置密码修改最小间隔时间
场景说明: 如果允许用户频繁更改密码,可能会导致弱密码的重用,或形成恶意行为,例如通过多次快速更改绕过系统的密码策略。因此需要设置密码修改的最小间隔时间。
操作步骤:
-
编辑文件
/etc/login.defs,设置:
PASS_MIN_DAYS 7 -
为root用户设置相同策略:
chage --mindays 7 root
解释: 该设置确保用户在7天内无法更改密码,从而防止通过频繁更改密码试图绕过系统安全策略。
4. 设置密码失效时间
场景说明: 密码长期不修改会增加密码被暴力破解或泄露的风险。设置密码失效时间可以强制用户定期更换密码,提升系统安全性。
操作步骤:
-
编辑文件
/etc/login.defs,设置:
PASS_MAX_DAYS 90 -
为root用户设置相同策略:
chage --maxdays 90 root
解释: 密码失效时间为90天,超过这个时间段,用户必须更改密码才能继续使用系统。这一措施可以减少密码泄露或被猜测的风险。
5. 限制密码重用
场景说明: 限制用户重复使用以前的密码可以降低由于暴力破解导致的安全威胁。强制用户使用全新的密码有助于提升整体系统安全性。
操作步骤:
-
编辑文件
/etc/pam.d/password-auth和
/etc/pam.d/system-auth,在
password sufficient pam_unix.so后面添加:
remember=5
解释: 该配置强制用户至少使用5次不同的密码后才能重新使用某个旧密码,防止密码重复使用造成的安全隐患。
6. 密码复杂度检查
场景说明: 密码复杂度的提高能够有效防止弱密码的使用,从而增强系统的安全性。通过强制要求密码使用多种字符类型,系统可以有效抵御暴力破解等攻击。
操作步骤:
-
编辑文件
/etc/security/pwquality.conf,设置:
minlen=10 minclass=3
解释: minlen=10要求密码长度至少为10个字符,minclass=3表示密码中至少要包含三种不同类型的字符(如大写、小写、数字、特殊符号等),从而增强密码强度。
7. 禁止SSH空密码用户登录
场景说明: 允许用户使用空密码登录SSH会大大降低系统的安全性,容易被恶意攻击者利用。因此需要禁止使用空密码登录。
操作步骤:
-
编辑
/etc/ssh/sshd_config,设置:
PermitEmptyPasswords no
解释: 禁用空密码用户登录SSH,确保所有用户账户都有设置密码,以此提高系统的安全性。
8. SSH登录最大尝试次数
场景说明: 攻击者通过暴力破解尝试多次错误登录有可能最终获得系统访问权限。限制最大登录尝试次数可以有效防止此类攻击。
操作步骤:
-
编辑文件
/etc/ssh/sshd_config,设置:
MaxAuthTries 4
解释: 该设置表示用户在SSH登录时最多可尝试4次密码输入错误,超过4次系统将自动断开连接,防止暴力破解。
9. 确保rsyslog服务已启用
场景说明: rsyslog服务用于收集并记录系统日志,帮助运维人员进行审计和故障排查。确保该服务的正常运行对于安全审计至关重要。
操作步骤:
-
启动并启用
rsyslog服务:
systemctl enable rsyslog systemctl start rsyslog
解释: 确保日志记录服务启动,防止系统事件未被记录,影响问题排查和安全审计。
10. 配置文件权限设置
场景说明: 配置文件如果被非授权用户访问或修改,可能会导致系统被攻破或配置信息泄露。确保关键配置文件仅可被root用户访问可以提升系统安全性。
操作步骤:
-
设置权限:
chown root:root /etc/hosts.allow chown root:root /etc/hosts.deny chmod 644 /etc/hosts.allow chmod 644 /etc/hosts.deny
解释: chown确保这些配置文件的拥有者是root用户,chmod 644确保只有root用户拥有写权限,其他用户只能读取,防止配置文件被篡改。
11. 设置用户权限文件的权限
场景说明: 系统中的passwd、shadow、group等文件存储了用户的敏感信息(如密码等)。设置适当的文件权限可以防止非授权用户访问这些信息。
操作步骤:
-
执行以下命令:
chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow chmod 0644 /etc/passwd /etc/group chmod 0400 /etc/shadow /etc/gshadow
解释: 这些命令确保只有root用户可以修改这些文件,并且限制其他用户的访问权限。
12. 确保root是唯一UID为0的账户
场景说明: UID为0的用户拥有系统的最高权限,通常只有root账户拥有此权限。确保没有其他用户拥有UID=0可以避免权限被滥用。
操作步骤:
-
检查系统中是否存在UID为0的用户:
cat /etc/passwd | awk -F: '($3 == 0) { print $1 }' | grep -v '^root$'
解释: 如果出现非root的UID为0用户,建议立即删除或更改其UID,防止权限滥用。
13. 密码到期警告天数
场景说明: 提前通知用户密码即将过期,提醒用户及时更改密码可以减少因密码过期导致的账户无法访问问题。
操作步骤:
-
编辑
/etc/login.defs文件,设置:
PASS_WARN_AGE 7 -
为root用户设置相同策略:
chage --warndays 7 root
解释: 密码到期前7天会提前发出警告,用户可以及时更改密码,确保账户的可用性和安全性。
14. SSH日志级别设置为INFO
场景说明: LogLevel设置为INFO可以记录更多有用的信息,便于管理员在出现问题时快速排查问题。
操作步骤:
-
编辑
/etc/ssh/sshd_config,设置:
LogLevel INFO
解释: 日志级别设置为INFO可以记录登录、认证失败等关键信息,提升安全审计能力。
15. 开启地址空间布局随机化(ASLR)
场景说明: 地址空间布局随机化(ASLR)通过随机化进程的内存地址布局来增加攻击者利用漏洞攻击的难度,从而提高系统的安全性。
操作步骤:
-
编辑
/etc/sysctl.conf或
/etc/sysctl.d/文件,添加以下内容:
kernel.randomize_va_space = 2 -
立即生效:
sysctl -w kernel.randomize_va_space=2
相关文章:
【Linux安全基线】- CentOS 7/8安全配置指南
在企业业务的生产环境中,Linux服务器的安全性至关重要,尤其是对于具有超级用户权限的root账号。滥用或被入侵后,可能会造成数据泄露、系统损坏等严重安全问题。为了减少这种风险,本文将详细介绍如何通过一系列安全措施来增强CentO…...
PDF.js的使用及其跨域问题解决
目录 一、PDF.js 简介 二、使用配置和步骤 1.引入PDF.js 2.加载PDF文件 3.渲染PDF页面 三、在Vue中使用PDF.js示例 1.安装PDF.js 2.在Vue组件中使用 四、在原生js中使用PDF.js示例 1.加载PDF文件并渲染页面 五、解决跨域问题 1.服务器配置 2.使用代理服务器 下面介…...
Linux Redis查询key与移除日常操作
维护老项目Express node 编写的后端程序、有这么一个方法、没有设置redis过期时间(建议设置过期时间,毕竟登录生产服务器并不是每个人都有权限登录的!!!)。如果变动只能通过登录生产服务器、手动修改… 于…...
开源两个月,antflow后端项目全网获近100星
从六月初开源,转眼间AntFlow已经开源将近四个月了(前端比后端早了大约2个月,后端于8.18开源).(其实准备是重构以前开源版本.前年的时候我们已经将Vue2版的流程设计器开源了.后来由于疫情原因,没有再继续持续开发.)后来有一天再打开仓库的时候,发现虽然很久没有更新了,但是不断有…...
设计模式——工厂方法模式(2)抽象工厂模式(3)
一、写在前面 创建型模式 单例模式工厂方法模式抽象工厂模式原型模式建造者模式 结构型模式行为型模式工厂方法模式和抽象工厂模式都属于工厂模式,所以放在一起介绍了 二、介绍 为什么要工厂模式?工厂就像一个黑盒一样,所以用工厂模式来创…...
简单聊聊System V下的IPC + 内核是如何管理该IPC
文章目录 前言:🎃消息队列:1. **消息队列的基本概念**2. **消息队列的特点**3. **常见的消息队列操作(Linux IPC)****1) msgget:创建或获取消息队列****2) msgsnd:发送消息****3) msgrcv&#x…...
【WRF工具】服务器上安装convert_geotiff
【WRF工具】服务器上安装convert_geotiff convert_geotiff简介方法1:下载安装包后下载convert_geotiff依赖库安装库1:libtiff库2:sqlite库3:curl库4:projcmake更新(可选)库5:geotiff…...
RPC通讯基础原理
1.RPC(Remote Procedure Call)概述 RPC是一种通过网络从远程计算机上调用程序的技术,使得构建分布式计算更加容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性,提供一种透明调用机制,让使用者不…...
JavaScript 第18章:安全性
在JavaScript开发中,确保应用的安全性是非常重要的。下面我将根据你提到的几个方面来讲解如何增强Web应用程序的安全性。 XSS(跨站脚本)攻击防御 示例代码: function escapeHTML(unsafe) {return unsafe.replace(/&/g, &qu…...
基于workbox实现PWA预缓存能力
引言 Service Worker 是一项流行的技术,尽管在许多项目中尚未得到充分利用。基于本次项目首页加载优化的机会,决定尝试使用 Google 出品的 Workbox,以观察其优化效果。 开始 安装 项目使用 Webpack 打包,而 Workbox 提供了 We…...
探索Web3生态系统:社区、协议与参与者的角色
Web3代表着互联网的下一个演变阶段,旨在通过去中心化技术赋予用户更大的控制权和参与感。在这个新兴生态系统中,社区、协议和参与者扮演着不可或缺的角色,共同推动着Web3的建设与发展。 社区的核心作用 在Web3中,社区通过提供反馈…...
无人机电机故障率骤降:创新设计与六西格玛方法论双赢
项目背景 TBR-100是消费级无人机头部企业推出的主打消费级无人机,凭借其出色的续航能力和卓越的操控性,在市场上获得了广泛认可。在产品运行过程,用户反馈电机故障率偏高,尤其是在飞行一段时间后出现电机过热、损坏以及运行不稳定…...
samba禁用时拷贝服务器文件到本地的脚本
Android系统开发一般在ubuntu服务器上,我们办公电脑一般是windows。在将编译出来的模块push到板子上时,一般采用adb push 方式。 有时由于种种原因会出现服务器禁用了samba,导致无法直接用adb push 的情况。 下面介绍用winscp 走ssh 拷贝服…...
C#代码 串口通信晋中A2板,控制直流电机
1,在电脑中给晋中板中下载编译好的程序。 0x39 :开启电机的标识 代码: /********************************************************************************** **** 实验名称:串口通信实验 接线说明: 实验现象&…...
3 机器学习之假设空间
归纳(induction)与演绎(deduction)是科学推理的两大基本手段。前者是从特殊到一般的“泛化”(generalization)过程,即从具体的事实归结出一般性规律;后者则是从一般到特殊的“特化”(specialization)过程,即从基础原理推演出具体状况。例如&a…...
基于STM32的风速风向传感器设计
引言 本项目设计了一个基于STM32的风速和风向传感器系统,能够通过组合使用旋转式风速传感器和电子罗盘,实时测量风速和风向,并将数据通过显示屏或无线模块发送给用户。该系统适用于气象监测、环境监控、农业自动化等场景,具有准确…...
域名申请.
操作场景 Internet上有成千上万台主机,每一台主机都对应一个唯一的IP地址。IP地址因不具备实际意义,非常难于记忆,于是就产生了域名。 域名(Domain Name)是一串用点分隔的字符串组成的名称(例如huaweiclo…...
mysql5.7与mysql8.0身份认证插件的区别
MySQL 5.7 和 MySQL 8.0 在身份认证插件方面有一些重要的区别。这些变化主要集中在默认的身份验证插件、密码管理和安全性增强上。 默认身份验证插件 MySQL 5.7 默认插件: mysql_native_password mysql_native_password 是 MySQL 5.7 及更早版本中的默认身份验证插件。它使用…...
进化吧!原始人
如果你想体验一下人类的进化过程~ 如果你有一颗充满探索的好奇心~ 千万不要错过博主新开发的小游戏哦! 点击链接,立即体验! 🙋 欢迎来到冒险互动游戏《进化吧原始人》! 🦍 在这里,你将扮演一…...
SaaS架构:中央库存系统架构设计
大家好,我是汤师爷~ 近年来,越来越多的零售企业大力发展全渠道业务。在销售额增长上,通过线上的小程序、直播、平台渠道等方式,拓展流量变现渠道。在会员增长方面,通过多样的互动方式,全渠道触达消费者&am…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
