【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命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...
