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), 也不能直接将输入的字符串转换为整数形式。 题目来源࿱…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
.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 适用场…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
