系统安全与应用(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://www.hqwc.cn/news/643543.html

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

相关文章

2024 年选择安全运营中心 (SOC) 工具指南

安全运营中心 (SOC) 是对抗网络威胁的前线。他们使用各种安全控制措施来监控、检测和快速响应任何网络威胁。这些控制措施对于确保信息系统全天候安全至关重要。 大型组织中的现代 SOC 与各种安全供应商合作,处理 75 到 100 种不同的工具。让我们探讨一下您可能遇到…

数据结构基础:链表操作入门

数据结构基础:链表操作入门 数据结构基础:链表操作入门链表的基本概念链表的基本操作输出链表插入节点删除节点查找值 完整的链表操作示例结语 数据结构基础:链表操作入门 在计算机科学中,数据结构是组织和存储数据的方式&#x…

图书租赁系统-借阅图书

图中展示了所有可以借阅的图书&#xff0c;点击“借阅”按钮便可以借阅图书。 借阅成功后&#xff0c;可以到bookorder菜单中阅读该书。 阅读功能待开发。 add.html借阅图书页面 <!DOCTYPE html> <html lang"zh" xmlns:th"http://www.thymeleaf.org…

笔记本电脑耗电和发热比较厉害怎么处理

工作中会遇到有同事反馈笔记本电脑耗电和发热比较厉害&#xff0c;主要检查以下几个地方 1、CPU频率 很多人觉得是cpu使用率高就代表电脑跑得快&#xff0c;发热量就大&#xff0c;其实不是的&#xff0c;主要是看的cpu频率&#xff0c;频率越高&#xff0c;电脑发热量越大。如…

[论文笔记] EcomGPT:COT扩充数据的电商大模型

社区供稿 | EcomGPT:基于任务链数据的电商大模型(附魔搭推理实践) - 知乎 https://arxiv.org/pdf/2312.15696.pdf EcomInstruct指令数据集构建 数据集组成 COT方式构造垂域训练数据:把原本的垂域任务分解成了原子任务,构造了基于解决原子任务的数据。这样能用类似…

【学习】服务器解决:重新分配同样端口号后,连不上VScode

原来服务器分配的环境有问题&#xff0c;重新分配了一下。还是同样的端口号&#xff0c;Xshell和xftp能够连接上&#xff0c;但是VScode连接不上。 问题解决: 清除本地 SSH 缓存中与远程主机相关的条目可以通过编辑 known_hosts 文件来实现。这个文件包含了您曾经连接过的远程主…

java实现解析html获取图片或视频url

一、前言 有时在实际项目中&#xff0c;比如发布某篇文章&#xff0c;需要取文章中的某张图片作为封面&#xff0c;那么此时需要文章内容&#xff0c;获取html内容中的图片地址作为封面&#xff0c;下面讲下如何获取html中的图片或视频地址。 二、实现 1.先定义一个工具类&…

uniapp APP检测更新

需求&#xff1a; 1.首次进入APP给出弹窗提示是否存在最新版本APP&#xff0c;可选择更新或者取消 2.选择取消后&#xff0c;在使用期间不再弹出该弹窗 3.在设置中增加按钮&#xff0c;点击进行版本检测&#xff0c;再弹窗 效果图&#xff1a; 使用到的插件&#xff1a;APP升…

CentOS-7安装grafana

一、通用设置&#xff08;分别在4台虚拟机设置&#xff09; 1、配置主机名 hostnamectl set-hostname --static 主机名2、修改hosts文件 vim /etc/hosts 输入&#xff1a; 192.168.15.129 master 192.168.15.133 node1 192.168.15.134 node2 192.168.15.136 node33、 保持服…

【国产替代】航空电子通信总线航空电子通信总线产品为MIL-STD-1553和ARINC 429等协议提供原生支持

航空电子通信总线 航空电子通信总线产品为MIL-STD-1553和ARINC 429等协议提供原生支持。这些产品用于进行航空电子应用所需的开发、生产和系统测试。 PXIe&#xff0c;2通道PXI ARINC-664接口模块 AIM ARINC-664具有板载处理器&#xff0c;可自动处理所有与协议相关的活动&…

经典案例|使用Supabase解决可视化大屏项目的常见问题

敏博科技专业致力于应急管理行业&#xff0c;提供以物联网技术和感知预警算法模型为核心的先进产品和解决方案。应急管理行业的业务非常繁多和复杂&#xff0c;很多时候都需要在短时间内交付出稳定高效的业务系统。如下两张图某市的安全生产监测预警系统 MemFire Cloud应用开…

fnm:Rust开发的高效Node版本管理工具

简介 fnm 是一个基于 Rust 开发的 Node 版本管理工具&#xff0c;它的目标是提供一个快速、简单且可靠的方式来管理 Node.js 的不同版本。同时&#xff0c;它是跨平台的&#xff0c;支持 macOS、Linux、Windows。&#x1f680; Fast and simple Node.js version manager, buil…