系统安全与应用(1)

目录

1、账号安全管理

(1)禁止程序用户登录

(2)锁定禁用长期不使用的用户 

(3)删除无用的账号

(4)禁止账号和密码的修改

2、密码安全管理

设置密码有效期

1)针对已有用户

2)针对新建用户

3)强制用户下次登录修改密码

3、历史命令安全管理

(1)查看历史命令

(2)限制历史命令数量

(3)清空历史记录

(4)登录后自动清空

(5)自动注销

4、限制su切换用户

5、ssh登录用户输入三次密码错误则锁定用户

6、sudo提权


1、账号安全管理

(1)禁止程序用户登录

usermod -s /sbin/nologin 用户名

(2)锁定禁用长期不使用的用户 

    passwd -l 用户名       usermod -L 用户名        #查看锁定账号状态  passwd -S 用户名

(3)删除无用的账号

userdel -r 用户名

(4)禁止账号和密码的修改

chattr +i 文件名       #锁定文件状态

chattr -i 文件名        #解锁文件状态

lsattr 文件名            #查看文件状态

输出一个文件,然后锁定其文件状态,无法再往里编辑内容

锁定账号文件/etc/passwd,将无法添加账号,修改账号和删除账号等操作

锁定密码文件/etc/shadow,将无法修改其密码

2、密码安全管理

用户密码文件:/etc/shadow

设置密码有效期

1)针对已有用户

:chage -M 有效期天数 用户名

修改wangwu账号的有限期为30天,查看密码文件发现wangwu的第五个字段密码最长期限为30

2)针对新建用户

vi/etc/login.defs文件里修改PASS_MAX_DAYS  30

修改etc/login.defs文件里PASS_MAX_DAYS值为30,新建用户zhangsan并给其设置密码,查看zhangsan的密码文件,其第五个字段密码最长期限为30

要想使账号永不过期,只需将etc/login.defs文件里PASS_MAX_DAYS值修改为99999

3)强制用户下次登录修改密码

chage -d 0 用户名

3、历史命令安全管理

(1)查看历史命令

history  

(2)限制历史命令数量

vim /etc/profile -->export HISTSIZE=数量
source /etc/profile

使查看历史命令只能查看最近30条命令

(3)清空历史记录

history -c(临时清空)

(4)登录后自动清空

历史命令所在文件:vim .bash_history

vim /etc/profile--> echo > ~/.bash_history

编辑/etc/profile文件

重启后查看.bash_history文件

(5)自动注销

   vim /etc/profile  -->  export TMOUT=XX  -->  source /etc/profile

设置30秒不操作自动注销

4、限制su切换用户

1、将信任的用户加入到wheel组中:gpasswd wheel -a 用户名
2、修改su的PAM认证配置文件:vim /etc/pam.d/su ->开启第六行的配置

补充:PAM的介绍

Linux-PAM,是linux可插拔认证模块,是一套可定制、可动态加载的共享库,使本地系统管理员可以随意选择程序的认证方式。
PAM使用/etc/pam.d/下的配置文件,来管理对程序的认证方式。应用程序调用相应的PAM配置文件,从而调用本地的认证模块,模块放置在/lib64/security下,以加载动态库的形式进行认证。比如使用su命令时,系统会提示输入root用户的密码,这就是su命令通过调用PAM模块实现的。

PAM 认证原理:
1.PAM 认证一般遵循的顺序:Service(服务)--> PAM(配置文件)--> pam_*.so;
2.PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于 /lib64/security/下)进行安全认证。
3.用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM 模块也是不同的。
如果想查看某个程序是否支持 PAM 认证,可以用 ls 命令进行查看/etc/pam.d/。

PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用

第一列代表PAM认证模块类型
auth:认证模块接口,如验证用户身份、检查密码是否可以通过,并设置用户凭据
account:账户模块接口,检查指定账户是否满足当前验证条件,如用户是否有权访问所请求的服务,检查账户是否到期
password:密码模块接口,用于更改用户密码,以及强制使用强密码配置
session:会话模块接口,用于管理和配置用户会话。会话在用户成功认证之后启动生效

第二列代表PAM控制标记
required:模块结果必须成功才能继续认证,如果在此处测试失败,则继续测试引用在该模块接口的下一个模块,直到所有的模块测试完成,才将结果通知给用户。
requisite:模块结果必须成功才能继续认证,如果在此处测试失败,则会立即将失败结果通知给用户。
sufficient:模块结果如果测试失败,将被忽略。如果sufficient模块测试成功,并且之前的required模块没有发生故障,PAM会向应用程序返回通过的结果,不会再调用堆栈中其他模块。
optional:该模块返回的通过/失败结果被忽略。一般不用于验证,只是显示信息(通常用于 session 类型)。
include:与其他控制标志不同,include与模块结果的处理方式无关。该标志用于直接引用其他PAM模块的配置参数

第三列代表PAM模块,默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。
同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。

第四列代表PAM模块的参数,这个需要根据所使用的模块来添加。
传递给模块的参数。参数可以有多个,之间用空格分隔开


控制标记的补充说明:
required:表示该行以及所涉及模块的成功是用户通过鉴别的【必要条件】。换句话说,只有当对应于应用程序的所有带required标记的模块全部成功后,该程序才能通过鉴别。同时,如果任何带required标记的模块出现了错误,PAM并不立刻将错误消息返回给应用程序,而是在所有此类型模块都调用完毕后才将错误消息返回调用他的程序。 
反正说白了,就是必须将所有的此类型模块都执行一次,其中任何一个模块验证出错,验证都会继续进行,并在执行完成之后才返回错误信息。这样做的目的就是不让用户知道自己被哪个模块拒绝,通过一种隐蔽的方式来保护系统服务。就像设置防火墙规则的时候将拒绝类的规则都设置为drop一样,以致于用户在访问网络不成功的时候无法准确判断到底是被拒绝还是目标网络不可达。

requisite:与required相仿,只有带此标记的模块返回成功后,用户才能通过鉴别。不同之处在于其一旦失败就不再执行堆中后面的其他模块,并且鉴别过程到此结束,同时也会立即返回错误信息。与上面的required相比,似乎要显得更光明正大一些。

sufficient:表示该行以及所涉及模块验证成功是用户通过鉴别的【充分条件】。也就是说只要标记为sufficient的模块一旦验证成功,那么PAM便立即向应用程序返回成功结果而不必尝试任何其他模块。即便后面的层叠模块使用了requisite或者required控制标志也是一样。当标记为sufficient的模块失败时,sufficient模块会当做optional对待。因此拥有sufficient标志位的配置项在执行验证出错的时候并不会导致整个验证失败,但执行验证成功之时则大门敞开。所以该控制位的使用务必慎重。

optional:他表示即便该行所涉及的模块验证失败用户仍能通过认证。在PAM体系中,带有该标记的模块失败后将继续处理下一模块。也就是说即使本行指定的模块验证失败,也允许用户享受应用程序提供的服务。使用该标志,PAM框架会忽略这个模块产生的验证错误,继续顺序执行下一个层叠模块。

PAM实例:
                                    用户1        用户2        用户3        用户4
auth       required     模块1        pass        fail        pass        pass
auth       sufficient   模块2        pass        pass        fail        pass
auth       required     模块3        pass        pass        pass        fail
  结果                                           pass        fail        pass        pass

5、ssh登录用户输入三次密码错误则锁定用户

vim /etc/pam.d/sshd  
auth       required     pam_tally2.so  deny=3 unlock_time=60 even_deny_root root_unlock_time=60

在 /etc/pam.d/sshd 文件中添加auth       required     pam_tally2.so  deny=3 unlock_time=60 even_deny_root root_unlock_time=60

用别的虚拟机终端连接,连续输入三次错误密码会锁定用户,就算你输入正确密码也登不上去,只能等60秒后才能登录成功

6、sudo提权

visudo  vim/etc/sudoers(要用wq!强制保存)

#用户/组授权
用户名 主机名=程序列表     #命令要用绝对路径表示,支持通配符*表示所有,!表示取反
%组名 主机名=程序列表
用户名 主机名=NOPASSWD:程序列表   #NOPASSWD:表示sudo不要密码验证
#别名设置
User_Alies 大写的别名=用户1,用户2.....
Host_Alies 大写的别名=主机名1,主机名2....
Cmnd_Alies 大写的别名=命令路径1,命令路径2....
用户别名 主机别名=命令别名
sudo 授权命令

#设置sudo日志路径
Defaults logfile = "/var/log/sudo.log"


sudo -l           #普通用户查看有哪些sudo权限  

wangwu账户是没有临时修改网卡IP的权限

编辑/etc/sudoers文件,在里添加wangwu ALL=/sbin/ifconfig内容

我们再切换到wangwu用户,发现wanngwu用户可以通过sudo来临时修改网卡IP

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

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

相关文章

《ElementPlus 与 ElementUI 差异集合》el-select 差异点,如:高、宽、body插入等

宽度 Element UI 父元素不限制宽度时,默认有个宽度 207px; 父元素有固定宽度时,以父元素宽度为准; Element Plus 父元素不限制宽度时,默认100%; 父元素有固定宽度时,以父元素宽度为准&#x…

【模电】常见经典运放电路(持续更新)

反相 反相输入比例电路 仿真文件 链接:https://pan.baidu.com/s/1nft1B3mgNpoPfgWo6pFE1g?pwdfpd2 提取码:fpd2 同相 同相输入比例电路 仿真文件 链接:https://pan.baidu.com/s/151OzVgJ2M1iLJ9GCH3xp_A?pwdelec 提取码:…

ROS1快速入门学习笔记 - 04创建工作环境与功能包

一、定义 工作空间(workspace)是一个存放工程开发相关文件的文件夹。 src:代码空间(Source Space)build: 编辑空间(Build Space)devel:开发空间(Development Space)install:安装空间(Install …

OpenHarmony实战开发-页面布局检查器ArkUI Inspector使用指导

DevEco Studio内置ArkUI Inspector工具,开发者可以使用ArkUI Inspector,在DevEco Studio上查看应用在真机上的UI显示效果。利用ArkUI Inspector工具,开发者可以快速定位布局问题或其他UI相关问题,同时也可以观察和了解不同组件之间…

TiDB 6.x 新特性解读 | Collation 规则

对数据库而言,合适的字符集和 collation 规则能够大大提升使用者运维和分析的效率。TiDB 从 v4.0 开始支持新 collation 规则,并于 TiDB 6.0 版本进行了更新。本文将深入解读 Collation 规则在 TiDB 6.0 中的变更和应用。 引 这里的“引”,…

【服务器部署篇】Linux下Ansible安装和配置

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产…

碳课堂|什么是碳市场?如何进行碳交易?

近年来,随着全球变暖问题日益受到重视,碳达峰、碳中和成为国际社会共识,为更好地减缓和适应气候变化,同时降低碳关税风险,以“二氧化碳的排放权利”为商品的碳交易和碳市场应时而生。 一、什么是碳交易、碳市场 各国…

python爬虫 - 爬取html中的script数据(36kr.com新闻信息)

文章目录 1. 分析页面内容数据格式2. 使用re.findall方法,爬取新闻3. 使用re.search 方法,爬取新闻 1. 分析页面内容数据格式 打开 https://36kr.com/ 按F12(或 在网页上右键 --> 检查(Inspect)) 找…

17.Nacos与Eureka区别

Nacos会将服务的提供者分为临时实例和非临时实例。默认为临时实例。 临时实例跟eureka一样,会向注册中心报告心跳监测自己是否还活着。如果不正常了nacos会剔除临时实例。(捡来的孩子) 非临时实例,nacos会主动询问服务提供者是否…

Unity进阶之ScriptableObject

目录 ScriptableObject 概述ScriptableObject数据文件的创建数据文件的使用非持久数据让其真正意义上的持久ScriptableObject的应用配置数据复用数据数据带来的多态行为单例模式化的获取数据 ScriptableObject 概述 ScriptableObject是什么 ScriptableObject是Unity提供的一个…

ElasticSearch笔记一

随着这个业务的发展,我们的数据量越来越庞大。那么传统的这种mysql的数据库就渐渐的难以满足我们复杂的业务需求了。 所以在微服务架构下一般都会用到一种分布式搜索的技术。那么今天呢我们就会带着大家去学习分布搜索当中最流行的一种ElasticSearch,Ela…

锂电池3.7V-4.2V降3.3V2.8V同步降压WT6015

锂电池3.7V-4.2V降3.3V2.8V同步降压WT6015 WT6015 是一款高效单片同步步降稳压器,采用恒定频率和电流模式架构。该设备提供可调节版本,适应不同的应用需求。在无负载条件下,其电源电流仅为40微安,而在关断状态下,电流…

HTB Runner

Runner User Nmap ──(root㉿kali)-[/home/…/machine/SeasonV/linux/Runner] └─# nmap -A runner.htb -T 4 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-22 23:07 EDT Stats: 0:00:01 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Sca…

【ks爬虫软件】把快手评论API接口封装成GUI采集工具

用Python开发爬虫采集软件,可自动抓取快手评论数据,且包含二级评论。 快手的评论接口URL: # 请求地址 url https://www.kuaishou.com/graphql开发者模式分析过程: 进而封装成GUI界面软件,如下: 软件效…

BI系统在银行有哪些应用场景?为什么说银行BI国产化是必然趋势?

银行业作为我国信息化程度最高的行业之一,最早开始迈出 IT国产化的步伐。然而,由于银行业数据的高度保密性、密集性、敏感性,以及业务的多元且复杂、对国家运行影响程度大,银行 IT国产化道阻且长。银行 IT国产化的核心问题去 IOE&…

【笔试强训】day9

1.添加逗号 思路&#xff1a; 没思路 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include<string> #include<algorithm> using namespace std;int main() {string a;cin >> a;string ans;int p 1;for (int i a.si…

大模型-入门小知识

大模型是什么 大量参数&#xff08;上亿&#xff09;深度学习模型 人工只能包含机器学习&#xff0c;深度学习,深度学习包括大模型 单个神经元的计算模型&#xff1a; 大模型是怎么训练的 之前是算法&#xff08;神经网络&#xff09;----> 训练&#xff08;门槛降低&…

【IR 论文】Google 对通过 prompt LLM 做 Query Expansion 的工作

论文&#xff1a;Query Expansion by Prompting Large Language Models ⭐⭐⭐ Google Research, arxiv:2305.03653 论文速读 之前我在论文笔记 Query2doc 中介绍了信息检索&#xff08;IR&#xff09;以及 Query Expansion 的相关背景知识。 本篇文章是 Google 发表的关于对…

【NUCLEO-G071RB】005——RCC-PLL时钟配置

NUCLEO-G071RB&#xff1a;005——RCC-PLL时钟配置 设计目标芯片配置程序修改仿真测试 设计目标 将HSI通过PLL倍频到64MHz&#xff0c;并作为系统时钟。 芯片配置 切换到Clock Configuration选项卡&#xff0c;以图形化界面配置时钟。System Clock Mux是CPU核心的时钟源选择…

QT初识

通过图形化界面输出helloworld 既然学习了QT&#xff0c;那么自然要做经典的输出helloworld字符串的实验。 QT有两好几种方案输出helloworld&#xff0c;一种是通过图形化界面输出&#xff0c;一种是通过代码实现。 这里先了解图形化界面的方案。 创建项目后&#xff0c;点…