账号安全基本措施1

一、系统账号清理

1.1 将用户设置为无法登录

useradd -s /sbin/nologin lisi

shell类型设置为/sbin/nologin用户将无法使用bash或其他shell来登录系统。

1.2 锁定用户。passwd -l 用户名

正常情况下是可以送普通用户切换到其他普通用户的

当锁定密码后passwd -l lisi就用普通用户zhangsan登录不进去了

exit退到root用户,再解锁lisi用户,passwd -uf lisi,又可以登录进去

1.3 删除账户

删除账户使用userdel -r 用户名。-r连家目录一起删除

1.4 锁定配置文件

锁定配置文件可用chattr +i /etc/passwd /etc/shadow命令

使用lsattr /etc/passwd /etc/shadow查看

被锁定的文件无法修改,包括root用户。

可用chattr -i /etc/passwd /etc/shadow 解锁

二、密码安全控制

2.1 设置密码规则chage

可以修改/etc/login.defs中的内容来设置密码规则:vim /etc/login.defs

第一行代表自1970年1月1日过99999天密码过期

第二行代表从上次修改密码后多少天后可再次修改

第三行代表密码的长度不低于5位

第四行代表密码过期前几天提醒用户

可以看到新建的用户自1970年1月1日99999天后才过期,意味着永不过期

可通过chage命令修改

强制lisi用户下一次登录修改密码,且符合密码要求的复杂性!

设置密码有效期:

chage -M 30 lisi。第五字段

三、命令历史

可以使用history查看历史命令。

但考虑安全问题,一般不想让别人看到做了哪些操作,所以会清除历史命令

(1)历史命令的记录条数由HISTSIZE控制,默认是1000条。可以修改/etc/profile文件中的HISTSIZE变量值,可以影响系统中的所有用户。设置20条历史命令。

vim /etc/profile

修改完之后,执行一下命令 启用:source /etc/profile

(2)可以使用以下命令临时清除历史命令
history -c 
clear

(3)可以把.bash_history的文件清空,该文件存放历史命令。清空:echo " " > .bash_history

由于history -c清空了历史文件,此时按上键只有cat .bash_history命令。

但这些方法不能彻底清除历史命令。可以写在开机启动文件.bashrc里面。

vim ~/.bashrc

这样一开启就会清空存放历史命令的文件。

四、切换用户

su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令

登录式切换:会读取该用户的配置文件,登录到自己的家目录。su - 用户名

非登录式切换:不会读取用户的配置文件。su 用户名

[root@localhost ~]# su zhangsan                # 非登录式切换
[zhangsan@localhost root]$ pwd                #还是在root下
/root
[zhangsan@localhost root]$ exit
exit
[root@localhost ~]# su - zhangsan             # 登录式切换
上一次登录:四 4月 18 22:41:29 CST 2024pts/0 上
[zhangsan@localhost ~]$ pwd                #在自己的家目录下
/home/zhangsan

说明:如果是root用户su切换用户时是不需要密码的,其他普通用户切换普通用户是需要密码的。

限制使用su命令的用户

默认所有用户都能使用su命令。

将用户加入到wheel组:gpasswd -a lisi wheel

 打开vim /etc/pam.d/su

第一列TYPE验证类型,验证是否能登录。

第二列控制位是否通过。

第三列调用的功能

第二行pam_rootok.so验证是否为uid为0的用户。也就是root用户可以直接登录不需要输入密码。

第六行中pam_wheel.so use_uid只有在wheel组内的用户才能使用su命令,root也会被禁用su

关闭第二行,开启第六行。也就是只有whell组中的用户才能使用su命令。

  root用户没有加入wheel组中,无法使用su命令。

 我们将root和lisi都加入到wheel组中。

到此:root,lisi都在wheel组中,zhangsan不在wheel组中。

五、PAM安全认证(可插拔式认证模块)

5.1 PAM相关文件

pam是一种高效而且灵活便利的用户级别的认证方式。

模块文件目录:/usr/lib64/security/*.so

特定模块相关的设置文件:/etc/security/

1.主配置文件:/etc/pam.conf。默认不存在,一般不使用主配置

2.为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP_NAME

3.注意:如/etc/pam.d存在,/etc/pam.conf将失效

可以通过rpm -qi pam 查看当前系统pam

rpm -ql pam 查看模块

ls /usr/lib64/security/*.so | wc -l可以看到有60个模块是二进制文件,不会直接修改。

打开配置文件:vim /etc/pam.d/su

5.2 PAM工作原理

Service(服务)→PAM(配置文件)→pam_*.so

PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证

5.3 专用配置文件/etc/pam.d/格式

我们查看 cat /etc/pam.d/system-auth文件

第一列代表模块类型module-type

Auth账号的认证和授权,是谁张三?李四?王五?。Account账户的有效性。passwd用户密码策略,如有效期,长度等。session用户会话期间的控制,最多打开几个文件。

第二列代表控制位Control

required一票否决权,

requisite一票否决权

sufficient一票通过

equired和requisite optional

第三列代表PAM模块

module-path:用来指明本模块对应的程序文件的路径名

Arguments:用来传递给该模块的参数。

5.4 shell模块

功能:检查有效shell

pam_shells.so只允许规定的shell类型通过,规定是在/etc/shells文件中存在的类型通过。

打开文件:vim /etc/pam.d/su

第一行添加auth required pam_shells.so

规定的文件中,去掉/bin/tcsh

创建一个用户,指定shell类型是/bin/csh。由于在/etc/shells文件中,我们删除了/bin/csh。可以看到lisi是无法登录的。

5.5 limit

功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间

显示当前所有的资源限制。可以看到打开的文件个数是1024。

通过命令ulimit -n 10000修改后

该修改是临时修改的。可以看到一些信息,以及选项-u设置最大用户进程数等。

要是永久修改,可以vim /etc/security/limits.conf

*代表所有用户。type限制类型。item进程打开的文件数量。value,个数

添加一条:

切换时用完全切换。可以看到用户进程和终端。

5.6 pam_nologin.so模块

功能:如果/etc/nologin文件存在,将导致非root用户不能登陆,当该用户登陆时,会显示/etc/nologin文件内容,并拒绝登陆

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

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

相关文章

LeetCode:组合求和III之回溯法

题目 题目链接 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。题目图解 ** ** cpp代码 class …

AI预测体彩排列3第2套算法实战化测试第1弹2024年4月22日第1次测试

从今天开始,开始新一轮的测试,本轮测试,以6码为基础,同步测试杀号情况,争取杀至4-5码。经过计算,假如5码命中,即每期125注,投入250元,十期共计2500元,则命中率…

牛客NC233 加起来和为目标值的组合(四)【中等 DFS C++、Java、Go、PHP】

题目 题目链接: https://www.nowcoder.com/practice/7a64b6a6cf2e4e88a0a73af0a967a82b 解法 dfs参考答案C class Solution {public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** param nums int整型…

日本二次元团建国内院线:一周一部,占据36.2%票房

从《你想活出怎样的人生》开始,到《哈尔的移动城堡》结束,日本动画正在占据国内院线的整个4月份档期。 包括《数码宝贝02:最初的召唤》、《间谍过家家 代号:白》多部作品在内,整个国内四月份院线日本动画平均一周上映…

【Linux实践室】Linux高级用户管理实战指南:Linux用户与用户组编辑操作详解

🌈个人主页:聆风吟_ 🔥系列专栏:Linux实践室、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 🔔Linux查看用户属性命令2.1.1 👻…

数据结构PT1——线性表/链表

1:顺序存储实现(数组实现) Data: a1 a2 .....ai ai1 .... an .... typedef struct LNode *List; //指向LNode的指针,这是typedef的,你可以随时声明,而不加typedef只是创建一个 struct LNode{ //结构体成员ElementT…

【前端】掌握按钮的显示与隐藏

目录 一、前言二、实现显示与隐藏的四种方式1、CSS属性控制2、JavaScript控制3、Vue.js响应式控制 三、需求背景四、代码实现1、定义变量2、绑定事件3、监听选中的学生4、返回return 五、整体效果1、没有勾选学生2、已勾选学生 六、设置按钮显示与隐藏的优势利弊1、优势2、劣势…

MySQL慢查询怎么办?需要关注Explain的哪些关键字?

目录 1-引言:什么是慢查询1-1 慢查询定义1-2 为什么排查慢查询 2-核心:慢查询排查2-1 慢查询定位2-2 慢查询解决2-2-1 Explain 排查慢查询2-2-2 Explain 重点关键字 3-总结:慢查询知识点小结 1-引言:什么是慢查询 1-1 慢查询定义…

C# 字面量null对于引用类型变量✓和值类型变量×

编译器让相同的字符串字面量共享堆中的同一内存位置以节约内存。 在C#中,字面量(literal)是指直接表示固定值的符号,比如数字、字符串或者布尔值。而关键字(keyword)则是由编程语言定义的具有特殊含义的标…

羊大师解读,春季羊奶VS夏季羊奶

羊大师解读,春季羊奶VS夏季羊奶 夏季的羊奶和春季的羊奶在营养成分上并没有本质的区别,都含有丰富的蛋白质、矿物质和维生素等。然而,由于季节和气候的变化,人们饮用羊奶的需求和效果可能会有所不同。 在夏季,天气炎热…

C语言 | Leetcode C语言题解之第35题搜索插入位置

题目&#xff1a; 题解&#xff1a; int searchInsert(int* nums, int numsSize, int target) {int left 0, right numsSize - 1, ans numsSize;while (left < right) {int mid ((right - left) >> 1) left;if (target < nums[mid]) {ans mid;right mid - …

使用vue3+ts+vite从零开始搭建bolg(二)

二、全局变量 2.1element-ui集成 pnpm i element-plus pnpm i element-plus element-plus/icons-vue main.ts配置文件 import ElementPlus from element-plus import element-plus/dist/index.css //ts-ignore import zhCn from element-plus/dist/locale/zh-cn.mjsapp.use…

浅说深度优先搜索(中)——回溯

写在最前 相信在你们不懈的努力之下&#xff0c;基本的递归一定可以写出来了&#xff0c;那么我们现在就来看看递归的升级版——回溯怎么写吧&#xff01; 简说回溯 递归是一种特别重要的解题策略。大部分题目需要找到最优解&#xff0c;而这个求解过程可能存在一定的规律性…

UE5(基础动作)多人游戏制作蹲伏

1.创建输入操作&#xff0c;IA_Crouch 在输入映射中添加 IA_Crouch,在触发器中创建两个索引&#xff0c;已按下已松开来创建蹲伏输入。 蹲伏操作必须要勾选角色-角色移动-crouch勾选可蹲伏否则你的人物无法真正蹲下。 为蹲伏创建函数&#xff0c;创建布尔来判断是否蹲伏。 通过…

CodeGemma初探

什么是 CodeGemma CodeGemma是一系列强大而轻量级的模型的集合&#xff0c;可以执行各种编码任务&#xff0c;包括填充中间代码补全、代码生成、自然语言理解、数学推理和指令跟随。 版本&#xff1a; instruct&#xff1a;7B, 这个版本专门针对自然语言到代码聊天和指令跟随…

day83 AJAX

1什么是AJAX AJAX语法 AJAX Asynchronous JavaScript and XML 异步js和XML 实现页面某一部份更新&#xff0c;无需服务器转发或重定向 1 $.ajax() 语法: $.ajax( { "url" : "url&qu…

数据库主从复制

一、主从复制概述 1、介绍&#xff1a; 主从复制是指将主数据库的 DDL 和 DML 操作写入到二进制日志中&#xff0c;将二进制日志传送到从库服务器&#xff0c;然后在从库上对这些日志重新执行&#xff08;重做&#xff09;&#xff0c;从而使得从库和主库的数据保持同步。 M…

百面算法工程师 | 分类网络总结

欢迎大家订阅我的专栏一起学习共同进步&#xff0c;主要针对25届应届毕业生 祝大家早日拿到offer&#xff01; lets go http://t.csdnimg.cn/dfcH3 目录 4. 经典分类网络与发展 4.1 AlexNet 4.2 VGGNet 4.3 GoogLeNet Inception 4.4 ResNet 4.5 DenseNet 4.6 MobileN…

C#中的浅拷贝(Shallow Copy)和深拷贝(Deep Copy),深拷贝的集中实现方式,浅拷贝深拷贝的案例

C#中的浅拷贝&#xff08;Shallow Copy&#xff09;和深拷贝&#xff08;Deep Copy&#xff09; 拷贝就是创建一个对象&#xff0c;这个对象有着原始对象数据&#xff08;属性和字段&#xff09;的一份精确拷贝&#xff08;只针对Object和Array这样的引用数据类型&#xff09;…