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💖点点关注,收藏不迷路💖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/711340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么软考报名人数越来越多?

2020年软考报名人数404666人&#xff0c;广东省报考人数超过14万人。 ●2021年软考通信考试报名人数突破100万人&#xff0c;估计软考有90多万。 ●2022年软考通信考试共129万人&#xff0c;估计软考占了120多万人。 ●2023年软考具体报名人数没有公布&#xff0c;但工业和信…

【AI+应用】aliyun的EMO图生视频模型引起的思考如何做AI数字人

昨天2 月 29 日消息&#xff0c;2 月 28 日&#xff0c;阿里巴巴集团智能计算研究院日前上线了一款新的 AI 图片 - 音频 - 视频模型技术 EMO&#xff0c;官方称其为 " 一种富有表现力的音频驱动的肖像视频生成框架 "。据悉&#xff0c;用户只需要提供一张照片和一段任…

springboot235基于SpringBoot的房屋交易平台的设计与实现

房屋交易平台设计与实现 摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互…

死记硬背spring bean 的生命周期

1.bean的生命周期 我们平常经常使用类似于new Object()的方式去创建对象&#xff0c;在这个对象没有任何引用的时候&#xff0c;会被gc给回收掉。而对于spring而言&#xff0c;它本身存在一个Ioc容器&#xff0c;就是用来管理对象的&#xff0c;而对象的生命周期也完全由这个容…

性能测试-反编译jar

方法一&#xff0c;使用jd-gui 1、官网下载&#xff1a;Java Decompiler 2、下载mac版本后&#xff0c;解压&#xff0c;如下所示&#xff1a; 双击 JD_GUI&#xff0c;提示错误&#xff0c;如下所示&#xff1a; 已经安装了java 17&#xff0c;是java 1.8以上版本&#xff0…

Unity中URP下实现水体(水面高光)

文章目录 前言一、实现高光反射原理1、原理&#xff1a;2、公式&#xff1a; 二、实现1、定义 _SpecularColor 作为高光反射的颜色2、定义 _SpecularIntensity 作为反射系数&#xff0c;控制高光反射的强度3、定义 _Smoothness 作为高光指数&#xff0c;用于模型高光范围4、模拟…

深入理解c指针(四)

目录 六、assert断言 七、指针的使用和传址调用 1、strlen的模拟实现 2、传值调用和传址调用 3、练习-字符串逆序 在深入理解c指针&#xff08;三&#xff09;提到&#xff0c;在实际使用指针前可以检测其是否指到有效空间&#xff1a; #include<stdio.h> int mai…

度量与评估客户体验:以客户为中心的方法和工具

在当今的市场环境中&#xff0c;客户体验已经成为企业成功的关键因素。一个优秀的客户体验不仅能够提升客户满意度&#xff0c;增强客户忠诚度&#xff0c;还能够吸引新的潜在客户。然而&#xff0c;要实现这一目标&#xff0c;企业首先需要了解如何度量和评估客户体验。本文将…

day08_分类品牌管理商品规格管理商品管理

文章目录 1 分类品牌管理1.1 菜单添加1.2 表结构介绍1.3 页面制作1.4 品牌列表加载1.4.1 后端接口BrandControllerBrandServiceBrandMapperBrandMapper.xml 1.4.2 前端对接brand.jscategoryBrand.vue 1.5 分类数据加载1.6 列表查询1.6.1 需求说明1.6.2 后端接口需求分析Categor…

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…

Dsco Dropship EDI需求分析

供应商要想从Dsco处通过EDI获取订单&#xff0c;需要部署自己的EDI系统&#xff0c;与Dsco的EDI供应商CommerceHub 建立连接&#xff0c;分为两个方向&#xff1a; 1.从CommerceHub 的 Dsco 平台获取 EDI 850 采购订单 2.向Dsco发送库存&#xff08;846&#xff09;、订单状态…

2024-02学习笔记

1.当我们向Set集合中添加一个已经存在的元素时 当我们向Set集合中添加一个已经存在的元素时&#xff0c;Set集合会如何处理呢&#xff1f;实际上&#xff0c;Set集合不会将重复的元素添加到集合中。当我们向Set集合中添加一个元素时&#xff0c;Set集合会首先判断该元素是否已…

华为配置WLAN高密业务示例

配置WLAN高密业务示例 组网图形 图1 配置高密WLAN环境网络部署组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 体育场由于需要接入用户数量很大&#xff0c;AP间部署距离较小&#xff0c;因此AP间的干扰较大&#xff0c;可能导致用户上网网…

新王炸:文生视频Sora模型发布,能否引爆AI芯片热潮

前言 前方高能预警&#xff0c;Sora来袭&#xff01; 浅析Sora的技术亮点 语言模型中构建关键词联系 视频素材分解为时空碎片 扩散模型DiT Not for play, But change world! OpenAI的宏大目标 未来已来&#xff0c;只是尚未流行 Sora的成本与OpenAI的7万亿美金豪赌 算…

【探索AI】人人都在讲AIGC,什么是AIGC?

AIGC 概述示例展示我们日常用到的一些工具/应用核心技术介绍核心技术的算法解析案例及部分代码实现1. 艺术作品2. 设计项目3. 影视特效4. 广告创意总结 一张图先了解下&#xff1a; 概述 "人工智能生成创造&#xff08;Artificial Intelligence Generated Content&#x…

从CPU缓存结构到原子操作

一、CPU缓存结构 1.1 CPU的多级缓存 因为CPU的计算速度非常快&#xff0c;但内存的访问速度相对较慢。因此&#xff0c;如果CPU每次都要从内存读取数据&#xff0c;会造成大量的等待时间&#xff0c;降低整体性能。 通过引入多级缓存&#xff0c;可以在CPU和内存之间建立数据…

vue3中实现elementPlus表格选中行的上移下移

先看效果&#xff1a; 实现步骤&#xff1a; 1、给el-table添加current-change事件、高亮属性及ref属性 2、给上移下移按钮添加事件 // 定义当前选中的行参数 const currentRow ref<any>(null); // 定义表格的ref const singleTableRef ref(); // 行选中事件 const ha…

正信晟锦:借了钱的人一直不接电话不回信息咋办

在金钱往来中&#xff0c;遇到借出的钱款无法按时回收&#xff0c;且借款人如同人间蒸发一般不接电话、不回信息&#xff0c;确实让人焦虑。面对这种情形&#xff0c;我们需采取明智而有效的措施&#xff0c;以保护自身的权益。 首要策略是保持冷静&#xff0c;不要让情绪主导行…

四、《任务列表案例》后端程序实现和测试

本章概要 准备工作功能实现前后联调 4.1 准备工作 数据库脚本 CREATE TABLE schedule (id INT NOT NULL AUTO_INCREMENT,title VARCHAR(255) NOT NULL,completed BOOLEAN NOT NULL,PRIMARY KEY (id) );INSERT INTO schedule (title, completed) VALUES(学习java, true),(学…

【前端素材】推荐优质在线高端蜂蜜商城电商网页Beejar平台模板(附源码)

一、需求分析 1、系统定义 在线高端蜂蜜商城是指一个专门销售高品质、高端蜂蜜产品的电子商务平台。这种商城致力于向消费者提供各种经过精心挑选、具有高营养价值和健康功效的蜂蜜产品。 2、功能需求 在线高端蜂蜜商城是指一个专门销售高品质、高端蜂蜜产品的电子商务平台…