【Linux】系统安全及应用

news/2024/12/22 20:22:21/

目录

一、账号安全基本措施

1.系统账号清理

2.密码安全控制

3.历史命令安全管理

4.限制su切换用户

1)将信任的用户加入到wheel组中    

2)修改su的PAM认证配置文件

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

 二、Linux中的PAM安全认证

1.su命令的安全隐患

2.PAM

3.PAM认证原理

4.PAM的配置文件

 三、使用sudo提权

1.使用sudo

2.配置sudo

3.使用别名进行授权


一、账号安全基本措施

1.系统账号清理

将非登录用户的Shell设为/sbin/nologin

usermod -s /sbin/nologin 用户名

锁定长期不使用的账号

usermod -L 用户名
passwd -l 用户名
passwd -S 用户名

删除无用的账号

userdel [-r] 用户名

锁定账号文件passwd、shadow

chattr  +i  /etc/passwd /etc/shadow
lsattr  /etc/passwd  /etc/shadow        #锁定文件并查看状态
chattr  -i  /etc/passwd  /etc/shadow    #解锁文件

2.密码安全控制

设置密码有效期

要求用户下次登录时修改密码

参数说明
-m密码可更改的最小天数,为0时代表任何时候
-M密码保持有效的最大天数
-w用户密码到期前,提前收到警告信息的天数
-E账号到期的日期
-d上一次更改的日期
-i停滞时期。如果一个密码已过期这些天,那么此账号将不可用
[root@bogon ~]# useradd lisi
[root@bogon ~]# echo 123456 | passwd --stdin lisi
更改用户 lisi 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@bogon ~]# chage -M 30 lisi        #密码有效期为30天[root@bogon ~]# chage -M 99999 lisi        #99999代表密码永不过期[root@bogon ~]# chage -d 0 lisi        #用户下次登录修改密码

3.历史命令安全管理

查看历史命令        history
限制历史命令数量    vim /etc/profile  -->  export HISTSIZE=XX  -->  source /etc/profile

清空历史命令        history -c      #临时清空
                            vim /etc/profile  -->  > ~/.bash_history 

4.限制su切换用户

1)将信任的用户加入到wheel组中    

gpasswd wheel -a 用户名

[root@bogon ~]# useradd zhangsan
[root@bogon ~]# gpasswd wheel -a zhangsan        #将用户加入到wheel组中,就可以实现su切换用户
正在将用户“zhangsan”加入到“wheel”组中
[root@bogon ~]# su zhangsan
[zhangsan@bogon root]$ su root
密码:
[root@bogon ~]#

2)修改su的PAM认证配置文件

vim /etc/pam.d/su -> 开启 auth   required   pam_wheel.so use_uid 的配置

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

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

 

 二、Linux中的PAM安全认证

1.su命令的安全隐患

        默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
        为了加强su命令的使用控制,可借助PAM认证模块,只允许极个别用户使用su命令进行切换

2.PAM

(Pluggable Authentication Modules)可拔插式认证模块
        是一种高效而且灵活便利的用户级别的认证方式
        也是当前Linux服务器普遍使用的认证方式

3.PAM认证原理

        一般遵循的顺序:service(服务)->PAM(配置文件)->pam_*.so

        首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
        用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
        不同的应用程序所对应的PAM模块是不同的

4.PAM的配置文件

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

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

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

第三列代表PAM模块

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

第四列代表PAM模块的参数

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

 三、使用sudo提权

1.使用sudo

用途:以其他用户身份(如root)执行授权的命令

用法:sudo 授权命令

2.配置sudo

vi  /etc/sudoers(此文件的默认权限为 440,保存退出时必须执行“:wq!”命令来强制操作)

3.使用别名进行授权

User_Alias  大写别名=用户1, 用户2, ...
Host_Alias  大写别名=主机名1, 主机名2, ...
Cmnd_Alias  大写别名=命令路径1, 命令路径2, ...
用户别名  主机别名=命令别名

补充知识:
#设置sudo日志路径
Defaults logfile = "/var/log/sudo.log"
sudo -l           #普通用户查看有哪些sudo权限    


http://www.ppmy.cn/news/1429155.html

相关文章

mfc140.dll丢失如何修复,分享多种有效的修复方法

在日常操作和使用电脑的过程中,我们可能会遇到一种较为常见的问题,即在尝试启动或运行某个应用程序时,系统突然弹出一个错误提示窗口,明确指出“mfc140.dll文件丢失”。这个mfc140.dll实际上是一个动态链接库文件(DLL&…

虚幻引擎源码版安装下载,点击GenerateProjectFiles.bat报错 error NU1101NuGet包问题解决参考方案

开发环境配置与源码安装使用 安装VS2022 按照官方文档安装需要的vs配置 虚幻引擎源代码下载 Epic里面下载的引擎与源代码引擎区别:Epic里面下载的引擎是已经编译过的它的源代码访问权限不完整,源代码版本提供比较完整引擎代码,并且可以修…

【iOS安全】iOS ARM汇编

mov指令 MOV X22, X0 将X0的值移到X22中 参数传递 参数1:寄存器X0传递 参数2:寄存器X1传递 参数3:寄存器X2传递 参数4:寄存器X3传递 (这里的X0传递的就是第一个实际参数,而不是self、selector之类的&…

mac tcp实现客户端与服务端进行图像传输及处理

客户端发送图像到服务端&#xff0c;服务端对图像进行处理&#xff0c;在将处理后的图像发送到客户端&#xff0c;并且服务端持续监听客户端。 客户端 #include <iostream> #include <fstream> #include <vector> #include <unistd.h> #include <…

Jackson知识点记录

文章目录 一.Jackson模块说明 二.ObjectMapper基本功能使用ObjectMapper的一些核心方法&#xff1a;示例代码1. 序列化示例2. 反序列化示例3. JsonNode 处理示例 高级配置 三.各种Node1. ObjectNode2. ArrayNode3. ValueNode4. MissingNode示例 一.Jackson Jackson 库主要分为…

Cjson 库使用

1. JSON简介 JSON全称 JavaScript Object Notation&#xff0c;即 JS对象简谱&#xff0c;是一种轻量级的数据格式。 它采用完全独立于编程语言的文本格式来存储和表示数据&#xff0c;语法简洁、层次结构清晰&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解析和生成…

耀斑层-如何在Unity中实现耀斑亮光效果

在Unity中实现耀斑亮光效果可以通过以下步骤来实现&#xff1a; 创建一个空物体作为光源&#xff1a;在场景中创建一个空物体&#xff0c;并将其放置在需要发出耀斑亮光效果的位置上。 添加光源组件&#xff1a;选中空物体&#xff0c;在Inspector面板中点击"Add Compone…

利用Django中的缓存系统提升Web应用性能

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在构建现代Web应用时&#xff0c;性能通常是至关重要的考虑因素之一。为了提高用户体验和应…