Linux系统加固:如何有效管理系统账号
Linux系统加固:如何有效管理系统账号
- 1.1 口令重复次数限制
- 1.2 避免系统存在uid相同的账号
- 1.3 空密码的帐户
- 1.4 口令复杂度
- 1.5 口令生存期
- 1.6 登录失败次数锁定策略
| 💖The Begin💖点点关注,收藏不迷路💖 |
在Linux系统中,系统账号的安全性至关重要。恶意用户或黑客可能利用弱密码、未使用的账号或其他漏洞来入侵系统。
因此,加固系统账号是保护系统安全的重要一环。本文将介绍一些有效的方法来管理和加固Linux系统账号,以提高系统的安全性。
1.1 口令重复次数限制
口令重复次数限制是一种安全策略,用于限制用户在一定时间内重复使用相同的密码。这个策略的目的是防止用户频繁地在短时间内更改密码,从而增加系统的安全性。通过限制口令重复次数,可以减少密码被恶意破解或盗用的风险。
在实际应用中,口令重复次数限制通常会结合密码历史记录功能一起使用。当用户更改密码时,系统会检查新密码是否与之前使用过的密码相同,如果相同则不允许使用。同时,系统还会记录用户的密码历史,以便在限制口令重复次数时进行比对。
检查点:
检查是否设置口令重复次数限制。
加固步骤:
1、执行备份
cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
2、创建文件/etc/security/opasswd用于存储旧密码,并设置权限
touch /etc/security/opasswdchown root:root /etc/security/opasswdchmod 600 /etc/security/opasswd

3、修改策略设置
vi /etc/pam.d/system-auth
建立/etc/security/opasswd后,即可在配置文件中的pam_unix模块后面添加参数remember=N来开始记录旧密码。这个参数N的作用是指定系统要记住的旧密码数量,N代表要记住的旧密码数量。
查看配置文件/etc/pam.d/system-auth ,查看类似password sufficient pam_unix.so所在行是否存在remember=5,如果没有则新增,例如:
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5

检查加固结果:
将系统认证配置文件system-auth中的包含"password"关键字的行,使用grep命令筛选出包含"password"关键字的行并输出。
if ([ -f /etc/redhat-release ] && [ -f /etc/pam.d/system-auth ]);
then FILE=/etc/pam.d/system-auth
cat $FILE |sed '/^#/d'|sed '/^$/d'|grep password
fi

1.2 避免系统存在uid相同的账号
检查点:
查看文件/etc/passwd,检查是否存在uid相同的账号。
加固步骤:
1、检查系统中的UID情况
cat /etc/passwd | cut -d: -f1,3
这个命令的含义是:
cat /etc/passwd:显示/etc/passwd文件的内容,该文件包含了系统中所有用户的信息。
cut -d: -f1,3:使用冒号作为分隔符,提取每行中的第1列(用户名)和第3列(UID)
这个命令会输出系统中所有用户的用户名和对应的UID。
执行该命令后,可以看到类似以下的输出:
root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
shutdown:6
halt:7
mail:8
operator:11
games:12
ftp:14
nobody:99
systemd-network:192
dbus:81
polkitd:999
sshd:74
postfix:89
zyl:1000
2、检查是否存在相同UID的账号
for venus_test in `cat /etc/passwd|awk -F: '{print $3}'|uniq -d`
do
for venus_test1 in `cat /etc/passwd|grep "^\s*[^:]*\:[^:]*\:$venus_test"|awk -F: '{print $1}'`
do
echo "The same uuid account:"$venus_test1;
done
done

或者使用:
ut -d: -f3 /etc/passwd | sort | uniq -d
这个命令的含义是:
cut -d: -f3 /etc/passwd:使用冒号作为分隔符,提取/etc/passwd文件中每行的第3列(UID)。
sort:对提取出来的UID进行排序。
uniq -d:查找重复的行(即相同的UID),并只显示重复的行。
如果输出了重复的UID,则表示系统中存在相同UID的账号。
3、处理相同UID的账号
如果发现系统中存在相同UID的账号,需要根据实际情况进行处理。一般情况下,可以通过修改账号的UID或者删除重复的账号来解决这个问题。
1、修改账号的UID可以使用usermod命令,例如:usermod -u <new_uid> <username>2、删除重复的账号可以使用userdel命令,例如:userdel <username>3、其他命令:
1、#useradd username #创建账号
2、#userdel username #删除账号
3、#passwd username #设置密码修改权限
这里修改上面输出的ftp用户(ftp:14)为例:
usermod -u 15 ftp##检查修改结果
cat /etc/passwd | cut -d: -f1,3

如果当前修改用户有进程占用的话(如zyl用户),会有如下提示:
usermod: user zyl is currently used by process 1562
这个错误提示表明在尝试修改用户的UID时,系统发现该用户当前正在被一个进程(PID为1562)使用,因此无法修改。这种情况下,需要先停止使用该用户的进程,然后再尝试修改用户的UID。
查找并停止使用该用户的进程:
1、使用以下命令查找使用用户"zyl"的进程:
ps -u zyl2、根据输出结果找到相关的进程ID(PID),然后使用kill命令停止这些进程:
kill -9 <PID>

1.3 空密码的帐户
检查点:
系统中口令为空的账号个数为0则合规,否则不合规。
执行以下命令查看系统中是否存在空口令账号:
awk -F: '( $2 == "" ) { print $1 }' /etc/shadow

如果执行该命令后有输出,表示系统中存在口令为空的账号。如果输出为空,则表示系统中不存在口令为空的账号。
加固步骤:
1、执行备份
cp -p /etc/passwd /etc/passwd_bak
cp -p /etc/shadow /etc/shadow_bak
2、为口令为空的帐户设置满足密码复杂度的密码
passwd username
1.4 口令复杂度
查看配置文件/etc/pam.d/system-auth,是否存在如下配置:
password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
设置了口令复杂度则合规,否则不合规。这个配置指定了使用pam_cracklib.so模块来实现口令复杂度要求。
下面是各个参数的含义:
try_first_pass:如果前一个认证模块已经成功验证了用户的口令,那么尝试使用用户提供的口令。
retry=3:在用户输入错误口令时,允许重试的次数为3次。
dcredit=-1:至少包含一个数字(digit)。
lcredit=-1:至少包含一个小写字母(lowercase)。
ucredit=-1:至少包含一个大写字母(uppercase)。
ocredit=-1:至少包含一个特殊字符(other)。
minlen=8:口令最小长度为8个字符。
根据这个配置,用户在设置口令时必须满足以下要求:
1、口令长度至少为8个字符。
2、必须包含至少一个数字、一个小写字母、一个大写字母和一个特殊字符。
加固步骤:
1、编辑配置文件/etc/pam.d/system-auth,
vi /etc/pam.d/system-auth2、在文件中找到如下内容password requisite pam_cracklib.so,在其内容后面追加,例如:
password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
#至少包含一个数字、一个小写字母、一个大写字母、一个特殊字符、且密码长度>=8
这样的口令复杂度设置可以增强系统的安全性,防止用户设置过于简单的口令。
1.5 口令生存期
口令生存期是指用户在一定时间内必须更改其口令的频率。这有助于增强系统的安全性,因为定期更改口令可以减少口令泄露和被猜测的风险。
在Linux系统中,口令生存期通常由PAM(Pluggable Authentication Modules)模块来管理。可以在/etc/login.defs文件中查看口令生存期的相关设置。
PASS_MAX_DAYS不大于180天,PASS_MIN_DAYS至少为1天,PASS_WARN_AGE不小于28天则合规,否则不合规。
加固步骤:
1、执行备份cp -p /etc/login.defs /etc/login.defs_bak2、修改策略设置,编辑文件/etc/login.defs,在文件中加入如下内容(如果存在则修改,不存在则添加)
PASS_MAX_DAY 180
PASS_MIN_DAYS 1
PASS_WARN_AGE 28

下面是各个参数的含义:
PASS_MAXDAYS:指定口令的最大有效天数,超过这个天数后用户必须更改口令。
PASS_MIN_DAYS:指定用户更改口令之间的最小天数间隔。
PASS_WARN_AGE:在口令过期前多少天提醒用户更改口令。
加固结果检查:
cat /etc/login.defs |grep -v "^[[:space:]]*#"|grep -E '^\s*PASS_MAX_DAYS|^\s*PASS_MIN_DAYS|^\s*PASS_WARN_AGE'

1.6 登录失败次数锁定策略
检测方法
1、查看/etc/pam.d/system-auth文件是否存在类似如下配置:
cat /etc/pam.d/system-authauth required pam_faillock.so preauth audit deny=5 even_deny_root unlock_time=60
2、查看/etc/login.defs文件,检查LOGIN_RETRIES和LOGIN_TIMEOUT配置:
cat /etc/login.defsLOGIN_RETRIES 5
LOGIN_TIMEOUT 60
判定依据:
1、/etc/pam.d/system-auth文件配置:deny=5
2、/etc/pam.d/system-auth文件配置:unlock_time=60
3、/etc/login.defs文件配置:LOGIN_RETRIES 5
4、/etc/login.defs文件配置:LOGIN_TIMEOUT 60
条件1和条件2同时满足或条件3和条件4同时满足则合规;否则不合规。
加固步骤:
1、备份文件
cp /etc/login.defs /etc/login.defs.bakcp /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
2、编辑 /etc/login.defs 文件,
vi /etc/login.defs ## 添加以下类似配置:LOGIN_RETRIES 5
LOGIN_TIMEOUT 60

或者:
vi /etc/pam.d/system-auth 添加以下类似配置:
auth required pam_faillock.so preauth audit deny=5 even_deny_root unlock_time=60

| 💖The End💖点点关注,收藏不迷路💖 |
相关文章:
Linux系统加固:如何有效管理系统账号
Linux系统加固:如何有效管理系统账号 1.1 口令重复次数限制1.2 避免系统存在uid相同的账号1.3 空密码的帐户1.4 口令复杂度1.5 口令生存期1.6 登录失败次数锁定策略 💖The Begin💖点点关注,收藏不迷路💖 在Linux系统中…...
在Windows中安装PyTorch
文章目录 1. 创建虚拟环境2. 检查显卡版本和CUDA3. 下载链接4. 下载5. 等待6. 检测 1. 创建虚拟环境 具体查看我之前写的 《在Windows中利用Python的venv和virtualenv创建虚拟环境》 2. 检查显卡版本和CUDA 这种情况是需要电脑上有单独的英伟达的显卡、或者英伟达的显卡和集显…...
助力智能化农田作物除草,基于YOLOv7【tiny/l/x】不同系列参数模型开发构建农田作物场景下玉米苗、杂草检测识别分析系统
在我们前面的系列博文中,关于田间作物场景下的作物、杂草检测已经有过相关的开发实践了,结合智能化的设备可以实现只能除草等操作,玉米作物场景下的杂草检测我们则少有涉及,这里本文的主要目的就是想要基于YOLOv7系列的模型来开发…...
linux nasm汇编中调用printf不报错,但调用scanf报错。抛出了分段错误(核心转储)
当我写了如下汇编时 ; nasm -f elf64 -g -F dwarf charsin.asm ; gcc charsin.o -no-pie -o charsin ; ld -o eatclib eatclib.o ; gdb eatclib[SECTION .data]SPrompt db Enter string data, followed by Enter: ,0IPrompt db Enter an integer value, followed by Enter: ,1…...
Linux系统——Nginx负载均衡模式
目录 一、Nginx优点 二、Nginx配置项——Conf Upstream 模块 三、Nginx负载均衡 1.负载均衡策略 1.1轮询 1.2IP_hash 1.3URL_hash 1.4Least_conn 1.5Weight 1.6Fair 2.Nginx负载均衡配置状态参数 3.什么是会话保持 3.1会话保持有什么作用呢 3.2Nginx会话保持 3…...
【自然语言处理之语言模型】讲解
自然语言处理之语言模型 1. 前言2. 传统语言模型3. 神经语言模型4. 训练语言模型5. 评估语言模型6. 总结 1. 前言 自然语言处理(Natural Language Processing,NLP)是计算机科学、人工智能和语言学交叉的一个领域,它研究计算机和人…...
输入一个整数n,输出这个整数的二进制的0和1的个数
输入一个整数n,输出这个整数的二进制的0和1的个数:除二取余法 代码: #include <cstdio> int main() {int n;scanf_s("%d", &n);int arr[2] { 0 };while (n) {int yu n % 2;arr[yu];n n / 2;}printf("0的个数是:…...
初阶数据结构:链表相关题目练习(补充)
目录 1. 单链表相关练习题1.1 移除链表元素1.2 反转链表1.3 链表的中间结点1.4 链表的倒数第k个结点1.5 合并两个有序链表1.6 链表分割1.7 链表的回文结构1.8 相交链表1.9 判断一个链表中是否有环1.10 寻找环状链表相遇点1.11 链表的深度拷贝 1. 单链表相关练习题 注࿱…...
java: 错误: 不支持发行版本 5
目录 一、问题描述 二、解决办法 方法一:修改idea设置中的jdk版本 方法二:配置pom.xml文件 方法三:配置maven的xml文件(推荐) 三、结果 一、问题描述 问题描述:今天创建了一个maven项目,…...
springSecruity--->和springboot结合的跨域问题
🤦♂️这个是我在springboot中使用springSecruity写一个小demo时遇到的问题,记录下来🤦♂️ 文章目录 跨域请求springboot项目中使用springSecruity导致跨域请求CrossOrigin请求失效解决方法springboot 中的跨域方法 跨域请求 什么是跨…...
网关kong记录接口处理请求和响应插件 tcp-log-with-body的安装
tcp-log-with-body 介绍 Kong的tcp-log-with-body插件是一个高效的工具,它能够转发Kong处理的请求和响应。这个插件非常适用于需要详细记录API请求和响应信息的情景,尤其是在调试和排查问题时。 软件环境说明 kong version 2.1.4 - 2.8.3 [可用亲测]C…...
ElasticSearch之Completion Suggester
写在前面 通过completion suggester可以实现如下的效果: 其实就是做的like xxx%这种。通过FST这种数据结构来存储,实现快速的前缀匹配,并且可以将es所有的数据加载到内存中所以速度completion的查询速度非常快。 需要注意,如果…...
ant 布局组件 组件等高设置
背景: 想实现一个和content等高的侧边栏,并增加侧边栏导航。 ant组件概述 Layout:布局容器,其下可嵌套 Header Sider Content Footer 或 Layout 本身,可以放在任何父容器中。Header:顶部布局,…...
不可多得的干货,网易的朋友给我这份339页的Android面经
这里先放上目录 一 性能优化 1.如何对 Android 应用进行性能分析 android 性能主要之响应速度 和UI刷新速度。 首先从函数的耗时来说,有一个工具TraceView 这是androidsdk自带的工作,用于测量函数耗时的。 UI布局的分析,可以有2块&#x…...
Qt项目:网络1
文章目录 项目:网路项目1:主机信息查询1.1 QHostInfo类和QNetworkInterface类1.2 主机信息查询项目实现 项目2:基于HTTP的网络应用程序2.1 项目中用到的函数详解2.2 主要源码 项目:网路 项目1:主机信息查询 使用QHostI…...
软件测试有哪些常用的测试方法?
软件测试是软件开发过程中重要组成部分,是用来确认一个程序的质量或者性能是否符合开发之前提出的一些要求。软件测试的目的有两方面,一方面是确认软件的质量,另一方面是提供信息,例如,给开发人员或者程序经理反馈意见…...
【C语言基础】:深入理解指针(一)
文章目录 一、内存和地址1. 内存2. 如何理解编址 二、指针变量和地址2.1 取地址操作符(&)2.2 指针变量和解引用操作符(*)2.2.1 指针变量2.2.2 如何拆解指针变量2.2.3 解引用操作符 2.3 指针变量的大小 三、指针变量类型的意义3.1 指针的解引用3.2 指针 - 整数3.3 void*指针…...
单点故障解决方案之Smart Link与Monitor Link
-SmartLink技术,创建Smart Link 组。在该组中,加入两个端口。其中1个端口是主端口,也称之为Master端口。另外1个端口是备份端口:也称之为 Slave 端口。 -Monitor Link 组也称之为“监控链路组,由上行端口和下行端口共同组成。下行…...
QT之QSharedMemory共享内存
QSharedMemory是qt提供对共享内存操作的类,主要用来对内存卡写数据和读数据。 常用api: 1、void QSharedMemory::setKey(const QString &key) 为共享内存设置键值。如何当前的内存共享对象已经链接到底层的共享内存段(isAttached)&…...
string 类 经典习题之数字字符相加
题目: 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。 题目来源࿱…...
Docker登录凭证管理进阶:除了pass,还有哪些安全的Credential Helper可选?
Docker凭证安全存储全景指南:从Credential Helper选型到企业级实践 在容器化技术深度落地的今天,Docker作为事实上的标准运行时环境,其安全性问题日益受到重视。而登录凭证作为访问镜像仓库的第一道防线,却常常成为安全链条中最薄…...
RimSort:3分钟搞定环世界MOD加载顺序混乱的终极免费管理器
RimSort:3分钟搞定环世界MOD加载顺序混乱的终极免费管理器 【免费下载链接】RimSort RimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, community-…...
Kook Zimage真实幻想Turbo效果展示:幻想风格人物眼神光/皮肤次表面散射/布料物理模拟
Kook Zimage真实幻想Turbo效果展示:幻想风格人物眼神光/皮肤次表面散射/布料物理模拟 1. 项目概述 Kook Zimage真实幻想Turbo是一款专门为个人GPU设计的轻量化幻想风格图像生成系统。这个项目基于Z-Image-Turbo的快速生成架构,深度融合了专属的幻想风格…...
M2LOrder在在线教育中的应用:学生作业文本情绪倾向自动评估
M2LOrder在在线教育中的应用:学生作业文本情绪倾向自动评估 1. 项目概述 M2LOrder是一个专业的情绪识别与情感分析服务,专门设计用于处理文本中的情感倾向分析。该系统基于先进的.opt模型文件构建,为教育工作者和学生提供了强大的情感分析能…...
Windows Cleaner终极指南:简单三步彻底解决C盘爆红和电脑卡顿问题
Windows Cleaner终极指南:简单三步彻底解决C盘爆红和电脑卡顿问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是不是经常遇到C盘爆红、电脑卡顿…...
CentOS 7环境下利用yumdownloader高效导出离线软件包实战指南
1. 为什么需要离线软件包? 在CentOS 7的实际运维中,我们经常会遇到内网环境无法连接外网的情况。这时候如果需要安装软件,传统的yum在线安装方式就完全失效了。我曾经负责过一个银行系统的部署,他们的生产环境完全隔离外网&#x…...
AdaIN风格迁移实战:如何用预训练VGG-19快速打造你的艺术滤镜(附完整代码)
AdaIN风格迁移实战:如何用预训练VGG-19快速打造你的艺术滤镜(附完整代码) 想象一下,你只需要几行代码就能把梵高的《星空》风格转移到自己的照片上,或者用莫奈的笔触渲染旅行风景。AdaIN(自适应实例归一化&…...
使用Typora编写SDMatte技术文档:Markdown与图片工作流整合
使用Typora编写SDMatte技术文档:Markdown与图片工作流整合 1. 为什么选择Typora进行技术写作 在技术文档创作过程中,我们常常面临两个核心痛点:内容排版耗时和图片处理繁琐。Typora作为一款轻量级Markdown编辑器,完美解决了这些…...
Qwen3-14B镜像空间优化:精简日志+清理缓存+压缩模型权重技巧
Qwen3-14B镜像空间优化:精简日志清理缓存压缩模型权重技巧 1. 镜像空间优化背景 当我们在RTX 4090D 24GB显存的服务器上部署Qwen3-14B模型时,虽然镜像已经针对硬件进行了优化,但在实际使用过程中仍然会遇到磁盘空间不足的问题。系统盘50GB数…...
UE5 Lyra UI框架解析:从策略到容器的动态资产管理
1. Lyra UI框架的核心设计哲学 第一次打开Lyra示例项目时,最让我惊讶的是它的UI系统竟然能优雅处理这么多复杂场景:玩家突然加入时的HUD加载、菜单界面的无缝切换、甚至不同游戏模式下的动态布局变化。这背后其实是Epic精心设计的策略-容器-资产三层架构…...
