Linux系统安全与应用【一】

目录

1.账号安全控制

1.1 系统账号清理

1.2 密码安全控制

1.3 命令历史限制

1.4 命令总结

2.系统引导和登录控制 

2.1 使用su命令切换用户

2.2 限制使用su命令的用户

3.可插拔式认证模块PAM 

 3.1 linux中的PAM安全认证

 3.2 PAM认证原理​编辑

 3.3 PAM认证的构成

 3.4 PAM安全认证流程

 3.5 使用sudo机制提升权限

3.6 配置sudo授权 


1.账号安全控制

1.1 系统账号清理

系统账号清理 

chattr + i [文件名]:锁定指定文件 

chattr +i /etc/passwd /etc/shadow  #锁定这两个文件/etc/passwd /etc/shadow
lsattr /etc/passwd #查看指定文件/etc/passwd的状态,是否被锁定
----i----------- /etc/passwd #----i-----------表示该文件被锁定
ll /etc/passwd 
-rw-r--r--. 1 root root 2298 4月  12 14:38 /etc/passwd  #查看可得所属主用户root具有编辑权限
echo 1111 >> /etc/passwd  #尝试编辑/etc/passwd文件
-bash: /etc/passwd: 权限不够  #/etc/passwd /etc/shadow这两个文件被锁定,将无法再修改编辑,例如修改用户密码、删除和添加用户都不允许,包括超级用户rootuseradd lisi  #/etc/passwd /etc/shadow这两个文件被锁定,无法增加新用户
useradd:无法打开 /etc/passwd
echo 123123 | passwd --stdin clr  #/etc/passwd /etc/shadow这两个文件被锁定,无法修改用户密码
更改用户 clr 的密码 。
passwd: 鉴定令牌操作错误
userdel clr  #/etc/passwd /etc/shadow 这两个文件被锁定,无法删除已有用户
userdel:无法打开 /etc/passwd

chattr - i [文件名]:解锁指定文件; 

chattr -i /etc/passwd /etc/shadow  #解锁指定文件
lsattr /etc/passwd  #查看指定文件/etc/passwd的状态,是否被锁定
---------------- /etc/passwd  #----------------表示该文件未被锁定
useradd lisi #添加用户
userdel lisi #删除用户
echo 123123 | passwd --stdin clr  #修改用户密码
更改用户 clr 的密码 。
passwd:所有的身份验证令牌已经成功更新。  #解锁这两个文件/etc/passwd /etc/shadow之后,可以删除、添加和修改用户密码which chattr  #查看命令chattr在系统中的位置
/usr/bin/chattr   

 md5sum [文件名]:通过校验和,判断一个指定文件的数据内容是否被修改;

注意:一个文件无法被写入或修改的可能原因:用户权限不够不具有对该文件的修改权限;该文件被锁定,无法修改编辑lsattr [文件名]:查看该文件是否被锁定。

1.2 密码安全控制

 

 /etc/login.defs文件:查看用户账号的基本属性;

useradd dingzhen  #修改/etc/login.defs文件,将密码有效期更改为30天,添加新用户 
vim /etc/shadow   #查看新用户的密码有效期
dingzhen:!!:19459:0:30:7:::   #可以看到新创建的用户丁真的密码有效期为30天

chage -M [密码有效期天数] [系统中已存在的用户名]:修改系统中已经存在用户的密码有效期

chage -d 0 [用户名]:强制指定用户在下次登录时修改密码;

1.3 命令历史限制

export HISTSIZE:export全局变量,实现在所有的shell环境中都有效,保留指定要求的历史命令条数; 

vim /etc/profile  #修改/etc/profile 文件,设置export HISTSIZE参数,更改保留历史命令条数export HISTSIZE=20     #export实现全局变量在所有的shell环境中都有效,修改HISTSIZE的参数为20,表示历史命令只保留20条source /etc/profile  #source命令用于在当前shell环境中重新加载/etc/profile文件. /etc/profile     #与同上效果一样

history -c:临时清空历史命令,系统重启之后历史命令会依然保留;

history -c  #临时清空历史命令
reboot  #重启系统
ls -A  
.bash_history     #历史命令保留在该文件中    、
vim .bash_history   #所有历史命令都保存在.bash_history文件中                                                                                               

echo ’ ’ > /.bash_history:将空数据内容重定向写入到/.bash_history文件中,实现开机登录,自动清空历史命令; 

vim /etc/profile   #修改/etc/profile文件,设置export HISTSIZE参数,更改保留历史命令条数,或者直接将~/.bash_history文件清空export HISTSIZE=20
echo '' > ~/.bash_history   #实现将~/.bash_history文件清空reboot #重启系统vim .bash_history   #.bash_history文件中历史命令已清除
history1  vim .bash_history2  history

 修改/etc/bashrc文件:实现开机登录,自动清空历史命令;

1.4 命令总结

账号安全

禁止用户登录系统

usermod -s /sbin/nologin  用户名  #禁止用户登录系统

 锁定用户

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

 查看指定用户是否被锁定 

passwd -s 用户名     #查看指定用户状态,是否被锁定

删除用户 

 userdel -r  用户名   #删除指定用户连同宿主目录一并删除

锁定指定文件:userdel -r 用户名    #删除指定用户连同宿主目录一起删除

解锁指定文件:chattr -i /etc/passwd,shadow

查看指定文件,是否被锁定:lsattr 文件名

 密码安全

 设置密码有效期 chage -M 天数 用户名   #针对已存在的用户,99999代表密码永不过时

                            /etc/login.defs -->PASS_MAX_DAYS  #针对新建用户

登录立即修改密码:chage -d 0 用户名

历史命令 

 闲置历史命令数:/etc/profile --> export HISTSIZE 历史命令条数----> source /etc/profile

 清空历史命令:history -c--->echo ' ' ~/.bash_history

2.系统引导和登录控制 

2.1 使用su命令切换用户

 su - 用户名:切换并加载目标用户的家目录和shell环境;

2.2 限制使用su命令的用户

 gpasswd -a [用户名] wheel:将指定用户加入到wheel组中;

vim /etc/group  #查看系统中已有的组名以及组账号
wheel:x:10:  #wheel组gpasswd -a zhangsan wheel   #将zhangsan用户加入到wheel组中
id zhangsanuid=1005(xiaozhang) gid=1005(zhangsan) 组=1005(zhangsan),10(wheel)
vim /etc/pam.d/su2 auth            sufficient      pam_rootok.so  #root用户可以免密切换到其他用户6 auth           required        pam_wheel.so use_uid #只有加入到wheel组的用户才可以认证登录,切换到其他用户[root@clr ~]# su zhangsan  #root用户可以免密切换到其他任意用户
[zhangsan@clr /root]$ su root  #没有加入到wheel组的普通用户没有切换到root用户的权限
密码:
su: 拒绝权限
[zhangsan@clr /root]$ su lisi  #没有加入到wheel组的普通用户没有切换到其他用户的权限
密码:
su: 拒绝权限[root@clr ~]# su zhangsan  
[xiaozhang@clr /root]$ su root  #加入到wheel组的zhangsan用户可以切换到普通用户root
密码:
[zhangsan@clr /root]$ exit
exit
[xiaozhang@clr /root]$ su root  #加入到wheel组的xiaozhang用户可以切换到超级用户root
密码:

修改su的PAM认证配置文件         vim /etc/pam.d/su -> 开启 auth   required   pam_wheel.so use_uid 的配置

总结

(1)将可信任能够使用su命令切换的用户加入到wheel组中;
(2)在/etc/pam.d/su文件中,取消第二行和第六行的注释,即可实现root用户可以免密切换到其他普通用户,只有加入到wheel组中 的可信任用户能够使用su命令,并输入正确的密码切换到其他用户中。

3.可插拔式认证模块PAM 

 3.1 linux中的PAM安全认证

 3.2 PAM认证原理

PAM认证模块 

/etc/pam.d:PAM配置文件; 

[root@localhost ~]# ls /etc/pam.d   #查看相关服务的PAM配置文件
atd                     gdm-pin           postlogin-ac       su
chfn                    gdm-smartcard     ppp                sudo
chsh                    ksu               remote             sudo-i
config-util             liveinst          runuser            su-l
crond                   login             runuser-l          system-auth
cups                    other             setup              system-auth-ac

 PAM认证模块文件

 3.3 PAM认证的构成

 3.4 PAM安全认证流程

 3.5 使用sudo机制提升权限

用户名 ALL=(root) /usr/sbin/ifconfig #赋予普通用户以root身份添加网卡IP地址的权限; 

[root@localhost ~]# su - zhangsan  #切换到普通用户zhangsan
[zhangsan@localhost ~]$ ifconfig ens33:0 192.168.80.120/24 #普通用户zhangsan给网卡添加IP地址,由于添加网卡属于超级管理员的操作,因此普通用户无法操作
SIOCSIFADDR: 不允许的操作
SIOCSIFFLAGS: 不允许的操作
SIOCSIFNETMASK: 不允许的操作
[zhangsan@localhost ~]$ sudo ifconfig ens33:0 192.168.80.120/24 #添加sudo命令后,仍然无法添加网卡地址

vim /etc/sudoers #修改/etc/sudoers配置文件 

 zhangsan ALL=(root) /usr/sbin/ifconfig #赋予普通用户zhangsan以root身份添加网卡IP地址的权限

 sudo ifconfig ens32:1 192.16.80.100/24

 此时zhangsan用户就可以修改网卡

GZY ALL = NOPASSWD: ADMIN:赋予别名GZY内的所有用户在所有主机上以root身份执行ADMIN程序内的所有命令权限,并且不需要使用密码 

[root@localhost ~]# vim /etc/sudoers
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL   #赋予wheel组成员在所有主机上对所有命令的权限,效果类似于超级用户root
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)#includedir /etc/sudoers.d
zhangsan ALL=(root) /usr/sbin/ifconfig    #赋予普通用户zhangsan,以root身份给网卡添加IP地址的权限
lisi ALL=!/bin/rm   #禁止lisi用户删除文件的权限
User_Alias GZY=zhangsan,lisi   #给zhangsan,lisi这两个用户设置别名GZY
Cmnd_Alias ADMIN=/sbin/*,!/usr/sbin/reboot,!/usr/sbin/poweroff,!/usr/sbin/init,!/usr/sbin/shutdown
#给指定程序命令设置别名ADMIN,(赋予超级管理员用户的所有权限,重启系统、立即关机命令除外)
GZY ALL = NOPASSWD: ADMIN   #赋予别名GZY内的所有用户在所有主机上以root身份执行ADMIN程序内的所有命令权限,并且不需要使用密码[root@localhost ~]# su - zhangsan
上一次登录:三 4月 12 23:44:03 CST 2023pts/0 上
[zhangsan@localhost ~]$ which route
/usr/sbin/route
[zhangsan@localhost ~]$ sudo route add -net 10.0.0.0/24 gw 192.168.80.20 dev ens33  #此时普通用户zhangsan可以使用超级用户root添加路由的权限
[zhangsan@localhost ~]$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.80.2    0.0.0.0         UG    100    0        0 ens35
0.0.0.0         192.168.80.2    0.0.0.0         UG    101    0        0 ens33
10.0.0.0        192.168.80.20   255.255.255.0   UG    0      0        0 ens33   #新添加的路由信息[zhangsan@localhost ~]$ sudo reboot  #禁止zhangsan用户的重启操作
对不起,用户 zhangsan 无权以 root 的身份在 localhost 上执行 /sbin/reboot。
[zhangsan@localhost ~]$ exit
登出
[root@localhost ~]# su - lisi
上一次登录:三 4月 12 23:48:56 CST 2023pts/0 上
[lisi@localhost ~]$ sudo ifconfig ens33:1 192.168.80.34  #此时普通用户lisi可以使用超级用户root添加网卡IP地址的权限
[lisi@localhost ~]$ ifconfig
ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.80.34  netmask 255.255.255.0  broadcast 192.168.80.255ether 00:0c:29:e6:e0:8a  txqueuelen 1000  (Ethernet)[lisi@localhost ~]$ sudo init 6   #禁止普通用户lisi重启系统的权限
对不起,用户 lisi 无权以 root 的身份在 localhost 上执行 /sbin/init 6。

sudo -l:查看当前登录用户获得那些sudo授权 

[lisi@localhost ~]$ sudo -l  #查看当前用户lisi获得那些sudo授权
匹配 %2$s 上 %1$s 的默认条目:!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAMEHISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATELC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin用户 lisi 可以在 localhost 上运行以下命令:(root) !/bin/rm(root) NOPASSWD: /sbin/*, !/usr/sbin/reboot, !/usr/sbin/poweroff, !/usr/sbin/init, !/usr/sbin/shutdown

3.6 配置sudo授权 

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

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

相关文章

itables, Python 大型数据集显示工具

目录 前言 安装 特性 基本功能 显示表格 排序功能 搜索功能 分页显示 高级功能 自定义列的显示格式 高级搜索功能 实现数据的动态更新 集成外部JavaScript库 总结 前言 iTables库是Python中一个强大的工具&#xff0c;专门用于在Jupyter Notebook和其他IPython环境中以交…

和泽彬一起创建的知识星球——AI交叉知识图谱领域

欢迎来到「AI星图」— 一个专注于人工智能与知识图谱交叉领域的知识社区&#xff01;在这里&#xff0c;我们汇集了来自全球的AI研究者、数据科学家以及行业实践者&#xff0c;共同探索数据的深层链接和智能的未来。 我们的特色亮点&#xff1a; 我们的亮点&#xff1a; 1 精…

All in One mini主机搭建全屋主路由方案----自己实现自己的路由器,实现路由器自由!

1 接线 首先&#xff0c;需要保证家里当前状态是有网的状态&#xff08;路由器有网并正常工作&#xff09; 将鼠标键盘接在mini主机的USB口&#xff0c;HDMP/DP/VGA等接上显示器。从路由器的lan口接一根网线出来接在mini主机的ETH0上&#xff0c;接在mini主机上保证mini主机在…

Leetcode—1329. 将矩阵按对角线排序【中等】(unordered_map、priority_queue)

2024每日刷题&#xff08;121&#xff09; Leetcode—1329. 将矩阵按对角线排序 实现代码 class Solution { public:vector<vector<int>> diagonalSort(vector<vector<int>>& mat) {const int m mat.size();const int n mat[0].size();unorder…

OceanBase 分布式数据库【信创/国产化】- OceanBase 集群配置项

本心、输入输出、结果 文章目录 OceanBase 分布式数据库【信创/国产化】- OceanBase 集群配置项前言OceanBase 数据更新架构OceanBase 集群配置项OceanBase 配置项级别配置项的生效方式查看配置项的级别和生效方式OceanBase 分布式数据库【信创/国产化】- OceanBase 集群配置项…

主流的虚拟机推荐

昨天提到微软与 IBM 合作在 MIT 许可证下发布了 MS-DOS 4.00 的源代码。此次发布的源代码包含了 MS-DOS 4.00 Beta版源码以及相关编译文档。 地址&#xff1a;https://blog.csdn.net/bugsycrack/article/details/138267118?spm1001.2014.3001.5501 感兴趣的人可以在各种虚拟…

【Spring AI】04. 转录 API-OpenAI

文章目录 OpenAI 转录功能先决条件自动装配&#xff08;Auto-configuration &#xff09;转录选项参数 运行时选项参数手动配置示例代码 OpenAI 转录功能 Spring AI 支持 OpenAI 的转录模型。 先决条件 您需要使用 OpenAI 创建一个 API 才能访问 ChatGPT 模型。在 OpenAI 注册…

【Vue】监听div宽高的变化(动态渲染echarts宽高)

一、问题 echarts 未监听到 echarts 宽高变化而动态变化 <template> <div id"echart" ref"echart" style"width: 100%; height: 300px"></div> </div> </template> <script> export default { data() {…

R语言--图形绘制

一&#xff0c;绘制简单图形 c1<- c(10,20,30,40,50) c2<-c(2,7,15,40,50) plot(c1,c2,typeb) 具体参数请参考R语言中的绘图技巧1&#xff1a;plot()函数参数汇总_r语言plot参数设置-CSDN博客 c1<- c(10,20,30,40,50) c2<-c(2,7,15,40,50) plot(c1,c2,typeb,col#…

这些小众工作软件让你事半功倍

大家好&#xff0c;我是追求高效工作的小红书种草小能手&#xff01;今天要和大家分享几款超实用的工作软件&#xff0c;它们可能不像那些大牌软件那样家喻户晓&#xff0c;但绝对能让你的工作生活焕然一新&#xff01;&#x1f31f; 1️⃣《亿可达》- &#x1f5a5;️自动化办…

中信银行深耕养老金融,构建多支柱养老金体系新格局

在应对人口老龄化这一全球性挑战的过程中&#xff0c;养老金融已成为中国金融领域的重要篇章。2024年4月25日&#xff0c;中信银行行长刘成在财新传媒主办的“2024中国养老产业论坛”上发表主旨演讲&#xff0c;深入阐述了养老金金融、养老服务金融、养老产业金融互促互进的大趋…

第8章 软件工程

一、软件工程概述 &#xff08;一&#xff09;软件危机 1、含义&#xff1a;落后的软件生产方式无法满足迅速增长的计算机软件需求&#xff0c;从而导致软件开发与维护过程中出现一系列严重问题的现象。 2、解决方案&#xff1a;引入软件工程的思想。 &#xff08;二&#x…

【Qt】无法创建或打开CMake项目

无法创建或打开CMake项目 没有CMake选项 原因 卸载重装了qt&#xff0c;安装时勾选了cmake&#xff0c;发现还是一样没有。。。 后面发现是插件里没有勾选上CMake。。。很无语 不是应该默认就有的吗 不懂了 解决 插件勾选重启就好了

加密,解密 crypto-js、 计算哈希值,js-sha3

加密&#xff0c;解密 crypto-js、 计算哈希值&#xff0c;js-sha3 文章目录 加密&#xff0c;解密 crypto-js、 计算哈希值&#xff0c;js-sha3crypto-js安装 crypto-js使用 crypto-js js-sha3安装 js-sha3使用 js-sha3 在项目中一些不能明文传输&#xff0c;就需要把明文进行…

Java List 获取部分组成new list,获取两个list相同/不同的内容

获取List中的一项 List<String> _outingCntry list.stream().map(OSzItem::getGroup). collect(Collectors.toList()); 获取List中的多项 List<vo> list new ArrayList<>(); Map<String, String> map list.stream().collect( Collectors.toMap(v…

Python 操作PDF图片 – 添加、替换、删除PDF中的图片

PDF文件中的图片可以丰富文档内容&#xff0c;提升用户的阅读体验。除了在PDF中添加图片外&#xff0c;有时也需要替换或删除其中的图片&#xff0c;以改进视觉效果或更新信息。文本将提供以下三个示例&#xff0c;介绍如何使用Python 操作PDF文件中的图片&#xff1a; 目录 …

qt学习篇---界面按键关联(信号和槽)

目录 1.qt基础 2.做一个界面 创建project UI界面设计 信号和槽 1.控件改名字 2.什么是信号和槽 3.怎么关联信号和槽 自动关联 手动关联 1.qt基础 qt可移植性强&#xff0c;不久会用到MCU。很有意义学习 2.做一个界面 创建project 不要中文路径 选择QWidget .pro文件…

机器学习之K-medians聚类

K-medians聚类是一种聚类算法,类似于K-means,但是它使用中位数来确定簇的中心,而不是平均值。这种方法在处理数据中存在离群值或异常值时比较有用,因为中位数对离群值不敏感。K-medians的步骤与K-means类似,但在每次迭代中,它使用中位数来更新簇的中心。 K-medians的算法…

基于Lucene的搜索引擎设计与实现:技术总结与展望

论文、答辩资料、源代码见下 引言 在大数据时代背景下&#xff0c;如何快速有效地从海量网络信息中检索出有价值的信息&#xff0c;是当前技术领域面临的一大挑战。本次毕业设计的核心工作是设计并实现一个基于Lucene的搜索引擎&#xff0c;旨在提高信息检索的效率和准确性。…

强力的应用容器引擎---------Docker的资源控制

目录 一、CPU 资源控制 1.1cgroups有四大功能 1.2设置CPU使用率上限 1.2.1查看CPU使用率 1.2.2进行CPU压力测试 1.2.3设置50%的比例分配CPU使用时间上限 1.3设置CPU资源占用比&#xff08;设置多个容器时才有效&#xff09; 1.3.1创建两个容器为hua1 和hua2&#xff0c…