Linux中的ACL以及加固

news2024/12/21 1:52:29

ACL访问控制

 

// ACL:Access Control List 访问控制列表
// -p :以原始格式显示 ACL

[root@zbx ~]# getfacl -p /root/  // 查看ACL策略
# file: /root/
# owner: root
# group: root
user::r-x
group::r-x
other::---

 设置ACL策略

 

// -m : 修改文件的ACL
// -b : 表示删除所有的 ACL
// mask: 限制其他用户和用户组的权限上限

[root@zbx ~]# ls -ld /root
dr-xr-x---. 5 root root 4096  4月 23 14:54 /root
[root@zbx ~]#
[root@zbx ~]# setfacl -m u:student:rw /root/  // 给student用户单独设置rw权限
[root@zbx ~]#
[root@zbx ~]# getfacl -p /root/
# file: /root/
# owner: root
# group: root
user::r-x
user:student:rw-
group::r-x
mask::rwx
other::---

[root@zbx ~]# su - student
[student@zbx ~]$ touch /root/a.txt   // 提示权限不够(因为创建文件需要w+x权限)
touch: 无法创建 '/root/a.txt': 权限不够

[student@zbx ~]$ getfacl -p /root/
# file: /root/
# owner: root
# group: root
user::r-x
user:student:rw-   // 没有执行权限,只有w权限也创建不了(创建文件需要w+x权限)
group::r-x
mask::rwx
other::---

[student@zbx ~]$ exit
注销
[root@zbx ~]# setfacl -m u:student:rwx /root/  // 添加执行权限
[root@zbx ~]# getfacl -p /root/
# file: /root/
# owner: root
# group: root
user::r-x
user:student:rwx
group::r-x
mask::rwx
other::---

[root@zbx ~]# su - student
[student@zbx ~]$ touch /root/a.txt

// getfacl -c : -c 代表在显示内容时不显示注释头
[student@zbx ~]$ getfacl -pc /root/
user::r-x
user:student:rwx
group::r-x
mask::rwx
other::---

删除ACL策略

 

[root@zbx ~]# getfacl -p /root/
# file: /root/
# owner: root
# group: root
user::r-x
user:student:rwx
group::r-x
mask::rwx
other::---

[root@zbx ~]# setfacl -x u:student /root/  //删除acl策略
[root@zbx ~]# getfacl -p /root/
# file: /root/
# owner: root
# group: root
user::r-x
group::r-x
mask::r-x
other::---

密码复杂性要求

设置密码长度、密码复杂性、密码历史等,防止黑客密码爆破

/* PAM: Pluggable Authentication Modules 可插拔身份验证模块
作用:
认证(Authentication):验证用户的身份。例如,通过比较用户提供的密码和系统中存储的密码进行认证。

账号管理(Account Management):检查用户的访问权限,例如检查用户是否在访问时间范围内,账户是否过期等。

密码管理(Password Management):负责密码的更新和管理。

会话管理(Session Management):进行登录后的各种初始化工作,例如记录登录信息、挂载用户的家目录等。
*/

[root@zbx ~]# vim /etc/pam.d/system-auth  //系统认证配置文件(一般做本地认证)

// 修改此行
password requisite pam_pwquality.so minlen=8 minclass=3 retry=3 enforce_for_root
// 添加此行
password required pam_pwhistory.so use_authtok remember=5 enforce_for_root

[root@zbx ~]# vim /etc/pam.d/password-auth      //密码认证配置文件(一般做远程认证)
// 修改此行
password requisite pam_pwquality.so minlen=8 minclass=3 retry=3 enforce_for_root
// 添加此行
password required pam_pwhistory.so use_authtok remember=5 enforce_for_root

测试:
[root@zbx ~]# passwd student
更改用户 student 的密码 。
新的密码:
无效的密码: 密码少于 8 个字符
新的密码:
无效的密码: 密码少于 8 个字符
新的密码:
无效的密码: 密码少于 8 个字符
passwd: 已经超出服务重试的最多次数

密码有效期

密码有效期信息包括密码的有效天数、允许修改密码的间隔天数、密码过期前的警告天数等

[root@zbx ~]# vim /etc/login.defs

PASS_MAX_DAYS   99999   // 密码最长的使用天数
PASS_MIN_DAYS   0       // 密码最小的使用天数
PASS_MIN_LEN    5       // 密码最小长度
PASS_WARN_AGE   7       // 密码过期警告天数

通过chage修改和查看密码有效期:

chage:用于更改用户账户和密码的过期信息

[root@zbx ~]# chage  -M 180 root 
[root@zbx ~]# chage -l root
最近一次密码修改时间                                    :从不
密码过期时间                                    :从不
密码失效时间                                    :从不
帐户过期时间                                            :从不
两次改变密码之间相距的最小天数          :0
两次改变密码之间相距的最大天数          :180
在密码过期之前警告的天数        :7
 

登错锁定时间

登录时输错密码达3次,将会被锁定禁止再登录。延长锁定时间,可以提高密码的安全性,防止被人恶意猜测。

[root@zbx ~]# vim /etc/pam.d/system-auth
auth        required      pam_faillock.so preauth audit deny=3 unlock_time=900 even_deny_root 
auth        [default=die] pam_faillock.so authfail audit deny=3 unlock_time=900 even_deny_root 
auth        sufficient    pam_faillock.so authsucc audit deny=3 unlock_time=900 even_deny_root

/*

preauth行是在用户提供密码之前运行的,用于检查用户是否已经因为过去的失败尝试而被锁定。
authfail行是在用户提供了无效密码之后运行的,用于增加失败尝试的计数器。
authsucc行是在用户成功认证之后运行的,用于重置失败尝试的计数器

deny=3 表示如果一个用户在一段时间内连续认证失败3次,那么该用户账户将被锁定。

unlock_time=900 是一个参数,表示锁定的用户账户在多少秒后将被自动解锁。在这个例子中,用户账户将在900秒(即15分钟)后自动解锁。

even_deny_root 表示这个规则甚至对 root 用户也有效。也就是说,如果 root 用户连续3次登录失败,那么 root 用户也会被锁定 900 秒。

required:这意味着此模块必须成功执行。如果此模块失败,那么即使其他模块成功,整个认证过程也会在所有模块执行完后被标记为失败。然而,即使这个模块失败,其他模块还会继续执行。

[default=die]:这是一个更复杂的选项,其中"die"是对模块失败的处理方式。如果模块失败,那么不会执行后面的任何模块,整个认证过程立即结束,并返回失败。这在你希望一旦某个关键模块失败就立即停止认证的场景中非常有用。

sufficient:如果此模块成功,并且到目前为止没有其他模块失败,那么整个认证过程被标记为成功,并且跳过剩余的模块。如果此模块失败,那么PAM会忽略这个失败,继续执行后续的模块。

举个例子,你可能希望首先执行一个检查用户密码的模块,标记为 required,然后执行一个检查一次性密码(如OTP)的模块,标记为 sufficient。这样,如果用户提供了正确的一次性密码,那么他们可以跳过其他认证步骤。然后,你可能有一个检查是否是在工作时间登录的模块,如果标记为 [default=die],那么如果这个模块检查失败(也就是说,用户在非工作时间尝试登录),那么整个认证过程立即失败,不再执行任何其他模块。
 

登错锁定时间

登录时输错密码达3次,将会被锁定禁止再登录。延长锁定时间,可以提高密码的安全性,防止被人恶意猜测

[root@zbx ~]# vim /etc/pam.d/system-auth
auth        required      pam_faillock.so preauth audit deny=3 unlock_time=900 even_deny_root 
auth        [default=die] pam_faillock.so authfail audit deny=3 unlock_time=900 even_deny_root 
auth        sufficient    pam_faillock.so authsucc audit deny=3 unlock_time=900 even_deny_root

/*

preauth行是在用户提供密码之前运行的,用于检查用户是否已经因为过去的失败尝试而被锁定。
authfail行是在用户提供了无效密码之后运行的,用于增加失败尝试的计数器。
authsucc行是在用户成功认证之后运行的,用于重置失败尝试的计数器

deny=3 表示如果一个用户在一段时间内连续认证失败3次,那么该用户账户将被锁定。

unlock_time=900 是一个参数,表示锁定的用户账户在多少秒后将被自动解锁。在这个例子中,用户账户将在900秒(即15分钟)后自动解锁。

even_deny_root 表示这个规则甚至对 root 用户也有效。也就是说,如果 root 用户连续3次登录失败,那么 root 用户也会被锁定 900 秒。

required:这意味着此模块必须成功执行。如果此模块失败,那么即使其他模块成功,整个认证过程也会在所有模块执行完后被标记为失败。然而,即使这个模块失败,其他模块还会继续执行。

[default=die]:这是一个更复杂的选项,其中"die"是对模块失败的处理方式。如果模块失败,那么不会执行后面的任何模块,整个认证过程立即结束,并返回失败。这在你希望一旦某个关键模块失败就立即停止认证的场景中非常有用。

sufficient:如果此模块成功,并且到目前为止没有其他模块失败,那么整个认证过程被标记为成功,并且跳过剩余的模块。如果此模块失败,那么PAM会忽略这个失败,继续执行后续的模块。

举个例子,你可能希望首先执行一个检查用户密码的模块,标记为 required,然后执行一个检查一次性密码(如OTP)的模块,标记为 sufficient。这样,如果用户提供了正确的一次性密码,那么他们可以跳过其他认证步骤。然后,你可能有一个检查是否是在工作时间登录的模块,如果标记为 [default=die],那么如果这个模块检查失败(也就是说,用户在非工作时间尝试登录),那么整个认证过程立即失败,不再执行任何其他模块。

测试:

C:\Users\tedu>ssh student@192.168.10.223

Authorized users only. All activities may be monitored and reported.
student@192.168.10.223's password:
Connection closed by 192.168.10.223 port 22    // 3次 锁定

 

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

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

相关文章

RedisGraph的图存储模型

1 overview 在RedisGraph的整体架构中,非常简略的概括了RedisGraph的图存储模型: RedisGraph使用DataBlock来存储node和edge的属性。RedisGraph使用稀疏矩阵来表示图,稀疏矩阵的存储格式为按行压缩的稀疏矩阵(Compressed Sparse…

同浏览器下多窗口进行跨源通信、同源通信

同浏览器下多窗口进行跨源通信、同源通信 多页面通信运用到了“发布订阅”的设计模式,一个页面发布指令,其他页面进行订阅并进行相应的行为操作! 一、跨源通信 window.postMessage() window.postMessage() 方法可以安全地实现跨源通信。通常…

Qt6之调用Windows下vc生成的动态链接库dll

Qt是跨平台工具,显然能和windows的动态库一起使用。 在Windows操作系统上,库以文件的形式存在,并且可以分为动态链接库(DLL) 和静态链接库两种。动态链接库文控以.dll为后缀名,静态链接库文控以.lib为后缀名。不管是动态链接库还是…

独立站卖家如何应对PayPal风险?3大策略教你安全收款!

PayPal是全球风险控制做得最好的第三方在线支付平台,PayPal付款是钱直接到卖家PayPal账户。但随着外贸交易的日益发展,恶意买家的问题也越来越多。如何防范风险,保证收款安全,成为独立站卖家们所关注的问题。下面为大家分享三种策…

背包DP-入门篇

目录 01背包: 完全背包: 多重背包: 分组背包: 01背包: [NOIP2005 普及组] 采药 - 洛谷https://www.luogu.com.cn/problem/P1048 01背包背景 在一个小山上,有个n个黄金和一个容量为w的背包,…

【Python】深度理解Class类、Object类、Type元类的概念和关系

深度理解Class类、Object类、Type元类 1.Class类、Object类、Type元类的表面关系2.Class、Object、Type解释3.关系详解4.那么如何看待object、type在Python面对对象概念中的一席之地呢?5.那么object、type扮演了什么样的角色呢?他们对class又分别做了什么…

【计算机组成】Cache与CPU的直接映射、全相联映射与组相联映射

一.Cache与CPU需要映射的原因 CPU准备访问内存时,会先问问cache存储器有没有已经提前准备好了数据,如果没有则再找内存要: 如果Cache刚好命中,则直接从Cache中读取数据: 如果Cache没有命中(Cache失效&#…

时序数据库InfluxDB快速入门使用

推荐博客: Influxdb中文文档 linux安装influxdb Influxdb安装、启动influxdb控制台、常用命令、Influx命令使用、Influx-sql使用举例、Influxdb的数据格式、Influxdb客户端工具 1.安装 1、influxdb数据库官网的下载链接: https://portal.influxdata.c…

如何利用MES系统进行生产防呆防错?

一、认识MES系统的防呆防错功能 首先,我们要清楚了解,什么是MES系统的防呆防错。MES系统防呆防错是指利用MES系统来避免生产过程中的错误和缺陷,保障生产排程和生产过程顺利进行的过程。MES系统防呆防错包括以下方面: 1. 自动识别…

relation-graph关系图谱组件2.0版本遇到的问题

前提:之前已经写过一篇1.1版本的问题,这里就不过多讲了(如果想要解决火狐低版本兼容,看那个就行) 这次主要讲的是和1.X版本的区别和一些其它问题 区别 参数名不同:以前的links>lines (虽然现在links也…

遇见未来,降低职场焦虑——中国人民大学与加拿大女王大学金融硕士来助力

身在职场的你有感到一丝丝的焦虑吗?偶尔的小焦虑可以作为我们工作中的动力,时刻提醒我们保持奋进。预见未来才能遇见未来,随着社会经济不断发展,没有什么是一成不变的。处于职场上升期的我们更要懂得未雨绸缪,增加自身…

ClickHouse集群搭建总结

简介 ClickHouse是俄罗斯最大的搜素引擎Yandex于2016年开源的列式数据库管理系统,使用C 语言编写, 主要应用于OLAP场景。 使用理由 在大数据量的情况下,能以很低的延迟返回查询结果。 笔者注: 在单机亿级数据量的场景下可以达到毫秒级的查询…

SpringCloudAlibaba 微服务生态

一 微服务架构 1.1 微服务 微服务其实是一种架构风格,我们在开发一个应用的时候这个应用应该是由一组小型服务组成,每个小型服务都运行在自己的进程内;小服务之间通过HTTP的方式进行互联互通。 1.2 微服务架构的常见问题 一旦采用微服务系…

ChatGPT 之后,B 端产品设计会迎来颠覆式革命吗?| Liga妙谈

近日,脑机接口公司 Neuralink 宣布,其植入式脑机接口设备首次人体临床研究已被准许启动。遥想当年,我们还嘲讽罗老师「动嘴做 PPT」,谁曾想不久后我们可能连嘴都不用动🙊。 脑机接口何时会引爆人机交互革命尚未可知&a…

简述三观;

文章目录 三观世界观人生观价值观三观不合怎么看三观不正: 教养育儿教育心智不成熟的表现 三观 指人生观,世界观和价值观; https://wenku.baidu.com/view/102a655fd4bbfd0a79563c1ec5da50e2534dd1d8.html?fraladdin664466&ind1&_wkts_1685949448098&…

深入理解API网关Kong:动态负载均衡配置

深入理解API网关Kong:动态负载均衡配置 背景 在 NGINX 中,负载均衡的配置主要在 upstream 指令中进行。upstream 指令用于定义一个服务器群组和负载均衡方法。客户端请求在这个服务器群组中进行分发。 NGINX 提供了以下几种负载均衡方法: …

python接口自动化 —— 什么是接口、接口优势、类型(详解)

简介 经常听别人说接口测试,接口测试自动化,但是你对接口,有多少了解和认识,知道什么是接口吗?它是用来做什么的,测试时候要注意什么?坦白的说,笔者之前也不是很清楚。接下来先看一下…

从简历被拒到收割 8 个高薪 offer,我用了 3 个月...

半年前我一个小老弟从外包离职了,本以为有两年经验进个一般的公司没有问题的,结果人家一看是外包出来的,面试问的问题也不是很懂,简历被拒了好几次。还好这个小老弟没有气馁,在论坛博客和里面的大佬虚心学习&#xff0…

地震勘探基础(八)之地震动校正

地震动校正 在地震资料数字处理过程中,速度分析,动校正和水平叠加三个处理内容是相互关联的。水平叠加是为了提高地震资料的信噪比,要想得到好的叠加效果,必须做好动校正。而做好动校正,需要进行准确的速度分析。只有…

Tomcat部署

目录 Tomcat 什么是 servlet? 什么是 JSP? Tomcat 功能组件结构: Container 结构分析: Tomcat 请求过程: ---------------------Tomcat 服务部署------------------------- 1.关闭防火墙,将安装 Tomcat 所需软…