Linux中的ACL以及加固

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://xiahunao.cn/news/351145.html

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

相关文章

分享140个HTML公司企业模板,总有一款适合您

分享140个HTML公司企业模板,总有一款适合您 140个HTML公司企业模板下载链接:https://pan.baidu.com/s/1C38R80gdY8SMGz3FpDDzAA?pwddl21 提取码:dl21 Python采集代码下载链接:采集代码.zip - 蓝奏云 商务网站手机wap模板下载…

也谈用户体验这件小事

对于我这种非产品经理出身的普通人,谈“用户体验”是不是有点不自量力? 用户体验是“小事”吗?普通人懂吗?可能在产品经理的眼中,用户体验不是一般人都能懂的。可是产品做出来之后,是给谁体验的呢&#xff…

怎么学习linux

内容简介 本书源自日均阅读量近万次火爆的线上同名课程,口碑与影响力俱佳,旨在打造简单易学且实用性强的轻量级 Linux 入门教程。 本书基于红帽 RHEL 系统编写,且内容通用于 CentOS、Fedora 等系统。本书共分为20章,内容涵盖了部…

Android最新面试实战总结

热文导读 | 点击标题阅读 金九银十跳槽季如何进阶找到合适满意的工作? Spring中的9种设计模式汇总 凛冬将至?对互联网行业人员流动性的一些看法(深度好文) 作者:骑小猪看流星 来源:http://www.apkbus.com/blog-973383-79263.html…

基于java的学生信息管理系统(含源文件)

欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 内容摘要 - 2 - 引言 - 4 - 学生信息管理系统开发的意义和目的 - 4 - 国内研究现状和应用前景 - 4 - 研究课题主要内容 - 5 - 第1章 需求分析 - 6 - 第2章…

基于java的学生学籍管理系统(含源文件)

欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 目录 内容摘要 - 2 - 引言 - 4 - 学生学籍管理系统开发的意义和目的 - 4 - 国内研究现状和应用前景 - 4 - 研究课题主要内容 - 5 - 第1章 需求分析 - 6 - …

“独裁”的张小龙和他的微信帝国诞生记

2010年11月20日这一天,在广州,一个六七人的产品小组正式组建。2011年10月1日,这个产品小组的一款产品登上了中国移动互联网即时通讯工具软件第一的位置。 这款产品叫“ 微信”,主导了这款产品的人是 张小龙,时任腾讯…

罗永浩“咬定”微信不放松

作者 | 胡巍巍 来源 | CSDN(CSDNnews) 昨天,1月15日,听起来是很普通的一天。 但是,历史上的这一天——公元8年1月15日,是王莽建立新朝、西汉结束的日子。 2011年后的这一天,有一个八岁的国民社交…

Nginx:Rewrite

Nginx:Rewrite 一、常用的Nginx 正则表达式二、location2.1 location 大致可以分为三类2.2 location 常用的匹配规则2.3 location 优先级2.4 实际网站使用中,至少有三个匹配规则定义 三、rewrite3.1 rewrite功能3.2 rewrite跳转实现3.3 rewrite 执行顺序…

一文读懂微信之父张小龙:失败天才、颠覆者、独裁者、人性操控师

本文内容原载于《博客天下》总第136期,网络版原文首发于钛媒体(原文链接:tmtpost.com/62285.html),原文撰稿:杨林、王万圆、苏雄、甘韵仪。 1、背景和概述 2010年11月20日这一天,在广州&#x…

vite技术揭秘--环境变量

目录 环境变量 生产环境替换 自定义环境变量 .env 文件 环境加载优先级 自定义环境变量 模式 TypeScript 的智能提示 在node环境里使用环境变量 前言 我们开发中不可避免的要根据环境变量来做一些逻辑分支,在vite中有两种实现方式,即define和.env…

Python接口自动化之yaml配置文件

Python自动化测试:7天练完这60个实战项目,年薪过35w。 软件测试技术分享总结 在自动化过程中,需要使用配置文件储存数据,比如数据库信息、账号信息、域名等。 其中,yaml文件是一种配置文件类型,相比较in…

基于大模型构建本地知识库

基于大模型构建本地知识库 图文概述一、知识库构建1.文本加载和读取2.文本分割3.文本向量化英文排行版中文SOTA 二、向量搜索1.向量存储2.用户问题向量化3.知识库中搜索和问题最相似的topK个向量 三、大模型理解四、问题 图文概述 一、知识库构建 1.文本加载和读取 支持的格式…

Jenkins重启报错解决

在Jenkins上安装了一些插件后,需要重启Jenkins,由于忘了当初是怎么重启的,所以就问了GPT,下面是它的回答: 我想着,jenkins运行的好好的,还看什么状态,直接restart,然后……

智能出行更安全,亚马逊云科技携手木卫四助汽车客户安全合规出海

木卫四(北京)科技有限公司在汽车网络安全领域拥有独特专业知识,其融合人工智能算法的安全检测引擎可以不依赖车辆中安装的代理软件,只需几周即可快速部署实施,是汽车网络安全领域的技术领先者。 在亚马逊云科技初创团…

经典的设计模式——UML类图的一些规范

文章目录 一、类的表示二、接口的表示三、继承的表示四、接口实现的表示五、关联关系六、聚合关系七、合成关系八、依赖关系 一、类的表示 矩形框第一层表示名称,如果是抽象类,则用斜 体表示 第二层是属性 第三层是方法 号表示公有,-表示私有…

基于粒子群优化算法的电动汽车充放电V2G研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

chat聊天系统消息消费时遇到的问题及优化思路(二)

1、前言 考虑下面几个条件下如何提升kafka的消费速度 消息要求严格有序,如chat聊天消息业务处理速度慢,如处理一条数据需要100ms分片不合理,如有的分区很闲,有的分区消息数量积压 2、解决方案 1、顺序问题 关于消息消费时存在…

docker卷--docker volumes 使用学习

一、在Docker中管理数据 1.1、Docker 保存容器数据的方法 Docker 卷(Docker Volumes):可以将数据保存在 Docker 卷中,这样可以在容器和宿主机之间共享数据,并保证容器中的数据不会因为容器被删除而丢失。Docker 卷可以…

Halcon得出三角形内切圆

Halcon得出三角形内切圆 news2023/5/27 7:14: 目录 一、得出三角形的三个角点二、用类似尺规作图法得出三角形圆心 1、以三角形三角点画出圆形轮廓2、求出三角形轮廓与圆形轮廓之间的交点3、获得角平分线,三边角平分线交点为圆心三、求出圆心到边最短距离即半径 …