Linux系统加固:如何有效管理系统账号

news2024/11/17 23:50:49

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/opasswd
 chown root:root /etc/security/opasswd
 chmod 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 zyl

2、根据输出结果找到相关的进程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-auth

2、在文件中找到如下内容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_bak

2、修改策略设置,编辑文件/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-auth

auth        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.defs

LOGIN_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.bak

cp /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.coloradmin.cn/o/1479262.html

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

相关文章

Mac OS 制作可引导安装器并重新安装系统

Mac 使用 U盘或移动固态硬盘制作可引导的安装器&#xff08;以 Monterey 为例&#xff09; 本教程参考 Apple 官网相关教程 创建可引导 Mac OS 安装器 重新安装 Mac OS 相关名词解释 磁盘分区会将其划分为多个单独的部分&#xff0c;称为分区。分区也称为容器&#xff0c;不同…

全面介绍HTML的语法!轻松写出网页

文章目录 heading(标题)paragraph(段落)link(超链接)imagemap(映射)table(表格)list(列表)layout(分块)form(表单)更多输入:datalistautocompleteautofocusmultiplenovalidatepatternplaceholderrequired head(首部)titlebaselinkstylemetascriptnoscript iframe HTML&#xff…

Linux 模拟实现shell【简单实现】

shell的模拟实现 我们知道shell是一个永不退出的程序&#xff0c;所以他应该是一个死循环&#xff0c;并且shell为了防止影响到自己&#xff0c;我们在命令行上输入的所有命令都是由shell的子进程来执行的&#xff0c;所以它应该要有创建子进程的相关函数&#xff0c;当然也会…

react 原理揭秘

1.目标 A. 能够知道setState()更新数据是异步的 B. 能够知道JSX语法的转化过程 C. 能够说出React组件的更新机制 D. 能够对组件进行性能优化 E. 能够说出虚拟DOM和Diff算法 2.目录 A. setState()的说明 B. JSX语法的转化过程 C. 组件更新机制 D. 组件性能优化 E. 虚拟DOM和D…

高效备考2025年AMC8数学竞赛:2000-2024年AMC8真题练一练

如何提高小学和初中数学成绩&#xff1f;小学和初中可以参加的数学竞赛有哪些&#xff1f;不妨了解一下AMC8美国数学竞赛&#xff0c;现在许多小学生和初中生都在参加这个比赛。如果孩子有兴趣&#xff0c;有余力的话可以系统研究AMC8的历年真题&#xff0c;即使不参加AMC8竞赛…

live555学习 - 环境准备

环境&#xff1a;Ubuntu 16.04.7 ffmpeg-6.1 1 代码下载 最新版本&#xff1a; http://www.live555.com/liveMedia/public/ 历史版本下载 https://download.videolan.org/pub/contrib/live555/ 选择版本live.2023.01.19.tar.gz ps&#xff1a;没有选择新版本是新版本在…

SuMa++代码阅读记录

文章目录 流程梳理1. 打开点云文件2. 播放点云数据3. SUMA部分的流程图说明3.1 SUMA核心流程分析&#xff0c;其中也包含部分SUMA3.2 preprocess部分3.3 updatePose部分3.4 updateMap部分 4. SUMA中有关语义模型rangenet的部分4.1 下面是解析模型引擎4.2 下面这块是从配置文件中…

洛谷P1044题解

复制Markdown 展开 题目背景 栈是计算机中经典的数据结构&#xff0c;简单的说&#xff0c;栈就是限制在一端进行插入删除操作的线性表。 栈有两种最重要的操作&#xff0c;即 pop&#xff08;从栈顶弹出一个元素&#xff09;和 push&#xff08;将一个元素进栈&#xff09…

stm32触发硬件错误位置定位

1.背景 1. 项目中&#xff0c;调试过程或者测试中都会出现程序跑飞问题&#xff0c;这个时候问题特别难查找。 2. 触发硬件错误往往是因为内存错误。这种问题特别难查找&#xff0c;尤其是产品到了测试阶段&#xff0c;而这个异常复现又比较难的情况下&#xff0c;简直头疼。…

CDH6.3.1离线安装

一、从官方文档整体认识CDH 官方文档地址如下&#xff1a; CDH Overview | 6.3.x | Cloudera Documentation CDH是Apache Hadoop和相关项目中最完整、测试最全面、最受欢迎的发行版。CDH提供Hadoop的核心元素、可扩展存储和分布式计算&#xff0c;以及基于Web的用户界面和重…

虚拟游戏理财【华为OD机试-JAVAPythonC++JS】

题目描述 题目描述&#xff1a; 在一款虚拟游戏中生活&#xff0c;你必须进行投资以增强在虚拟游戏中的资产以免被淘汰出局。现有一家Bank&#xff0c;它提供有若干理财产品m&#xff0c;风险及投资回报不同&#xff0c;你有N&#xff08;元&#xff09;进行投资&#xff0c;能…

Python:练习:编写一个程序,录入一个美元数量(int),然后显示出增加%5税率后的相应金额。

案例&#xff1a; 编写一个程序&#xff0c;录入一个美元数量&#xff08;int&#xff09;&#xff0c;然后显示出增加%5税率后的相应金额。格式如下所示&#xff1a; Enter an amount:100 With tax added:$105.0 思考&#xff1a; 1、录入一个美元数量&#xff0c;录入&am…

qt学习:实战 记事本 + 快捷键 + 鼠标滚轮 + 打开读取写入关闭文件

目录 功能 步骤 配置ui界面 添加图片资源 添加头文件和定义成员数据和成员函数 在构造函数里初始化 增加当前字体大小函数 减小当前字体大小函数 在用户按下 Ctrl 键的同时滚动鼠标滚轮时&#xff0c;执行放大或缩小操作 多选框变化后发出信号绑定槽函数来改变编码 …

flutter学习(一) 安装以及配置环境

首先需要下载flutter&#xff0c;然后解压 然后配置环境变量&#xff0c;配置到bin目录就行 配置完之后cmd运行flutter doctor 你就会发现&#xff0c;都是错 此时脑海里响起&#xff0c;卧槽&#xff0c;怎么回事&#xff0c;咋办 别着急&#xff0c;我教你。。。 问题 这…

【QQ案例-QQ框架-主流框架 Objective-C语言】

一、接下来,我们来做一下这个QQ, 1.接下来,我们来做一下这个QQ, QQ框架啊, 这个东西呢,我们管它叫做“主流框架”, 首先呢,要告诉大家一点,这个东西呢,我们管它,叫做“主流框架”, 算是一个简称啊, 只能说,这种框架的类型,上边儿带navigation,下边儿带tabb…

Linux centos 变更MySQL数据存储路径

Linux centos 变更MySQL数据存储路径 登录mysql&#xff0c;查看数据存储路径创建新目录准备迁移数据检查是否配置成功 登录mysql&#xff0c;查看数据存储路径 mysql -u root -pshow global variables like "%datadir%";创建新目录 查看磁盘空间 df -h选取最大磁…

论文阅读:2015ResNet深度残差网络(待补充)

top5错误率&#xff1a;每张图片算法都会给出它认为最可能的五个类别&#xff0c;五个里面有一个是正确则算法预测正确。 技术爆炸1&#xff1a;2012年&#xff0c;DL和CNN用于CV&#xff1b;技术爆炸2&#xff1a;2015年&#xff0c;超过人类水平&#xff0c;网络可以更深&…

Unity-PDF分割器(iTextSharp)

PDF分割器 Unity-PDF分割器前言核心思路解决过程一、Unity安装iTextSharp二、运行时计算将要生成文件的大小三、分割核心代码四、使用StandaloneFileBrowser五、其他的一些脚本六、游戏界面主体的构建MainWindowWarningPanel & FinishPanel By-Round Moon Unity-PDF分割器 …

Vue3 在SCSS中使用v-bind

template 先创建一个通用的页面结构 <template><div class"v-bubble-bg"></div> </template>js 在JS中先对需要用的数据进行定义&#xff1a; 可以是参数&#xff0c;也可以是data <script setup>const props defineProps({bgCol…

Linux零基础快速入门

Linux的诞生 Linux创始人:林纳斯 托瓦兹 Linux 诞生于1991年&#xff0c;作者上大学期间 因为创始人在上大学期间经常需要浏览新闻和处理邮件&#xff0c;发现现有的操作系统不好用,于是他决心自己写一个保护模式下的操作系统&#xff0c;这就是Linux的原型&#xff0c;当时他…