【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…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
Python爬虫实战:研究Restkit库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...
