Linux系统安全与应用【一】

news2024/12/23 19:02:39

目录

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这两个文件被锁定,将无法再修改编辑,例如修改用户密码、删除和添加用户都不允许,包括超级用户root

useradd 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文件中历史命令已清除
history
    1  vim .bash_history
    2  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 zhangsan
  uid=1005(xiaozhang) gid=1005(zhangsan) 组=1005(zhangsan),10(wheel)
vim /etc/pam.d/su
  2 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 1500
        inet 192.168.80.34  netmask 255.255.255.0  broadcast 192.168.80.255
        ether 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 HOSTNAME
    HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
    LC_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.coloradmin.cn/o/1625025.html

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

相关文章

UEFI安全启动模式下安装Ubuntu的NVIDIA显卡驱动

UEFI安全启动模式下安装ubuntu的nvidia显卡驱动 实践设备&#xff1a;华硕FX-PRO&#xff08;NVIDIA GeForce GTX 960M&#xff09; 一、NVIDIA官网下载驱动 1.1在浏览器地址栏输入https://www.nvidia.cn/drivers/lookup/进入网站&#xff0c;接着手动驱动搜索&#xff0c;并…

GPB | RegVar:基于深度神经网络的非编码区突变功能预测新方法

Genomics, Proteomics & Bioinformatics &#xff08;GPB&#xff09;发表了由军事医学研究院辐射医学研究所张成岗研究员、周钢桥研究员和卢一鸣副研究员团队完成的题为“RegVar: Tissue-specific Prioritization of Noncoding Regulatory Variants”的方法文章。我们的“…

Linux常用监控命令(笔试面试常考)

1.、free命令 [rootRocky8-node1 ~]# free -htotal used free shared buff/cache available Mem: 1.7Gi 1.1Gi 69Mi 31Mi 554Mi 436Mi Swap: 2.0Gi 258Mi 1.7Gi free命令是Linux系统中用…

paddle ocr v4 微调训练文字识别模型实践

识别步骤参考&#xff1a;https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/recognition.md 微调步骤参考:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7.1/doc/doc_ch/finetune.md 训练必要性 原始模型标点符号和括号容易识别不到 数据准备…

【C++】---STL之list的模拟实现

【C】---STL之list的模拟实现 一、list模拟实现思路二、结点类的实现三、list迭代器的实现1、ListIterator类2、构造函数3、operator*运算符重载5、operator->运算符重载6、operator&#xff01;运算符重载7、operator运算符重载8、前置9、后置10、前置--11、后置-- 四、lis…

JavaScript云LIS系统概述 前端框架JQuery+EasyUI+Bootstrap医院云HIS系统源码 开箱即用

云LIS系统概述JavaScript前端框架JQueryEasyUIBootstrap医院云HIS系统源码 开箱即用 云LIS&#xff08;云实验室信息管理系统&#xff09;是一种结合了计算机网络化信息系统的技术&#xff0c;它无缝嵌入到云HIS&#xff08;医院信息系统&#xff09;中&#xff0c;用于连…

uniapp H5实现签名

第一种&#xff1a;跳转签名页面 1、创建审核页面audit.vue <template><view><uni-section title""><view class"auditClass"><uni-forms :model"baseFormData" ref"baseFormRef" :rules"rules&quo…

Docker镜像的创建 和 Dockerfile

一. Docker 镜像的创建 创建镜像有三种方法&#xff0c;分别为基于已有镜像创建、基于本地模板创建以及基于 Dockerfile 创建。 1 基于现有镜像创建 &#xff08;1&#xff09;首先启动一个镜像&#xff0c;在容器里做修改docker run -it --name web3 centos:7 /bin/bash …

第12章 最佳的UI体验——Material Design实战

第12章 最佳的UI体验——Material Design实战 其实长久以来&#xff0c;大多数人都认为Android系统的UI并不算美观&#xff0c;至少没有iOS系统的美观。以至于很多IT公司在进行应用界面设计的时候&#xff0c;为了保证双平台的统一性&#xff0c;强制要求Android端的界面风格必…

区块链技术与应用学习笔记(8-9节)——北大肖臻课程

目录 8.挖矿 对于全节点和轻节点思考问题&#xff1f; ①全节点在比特币的主要作用&#xff1f; ②挖矿时当监听到别人已经挖出区块并且延申了最长合法链此时应该立刻放弃当前区块在 本地重新组装一个指向最后这个新合法区块的候选区块&#xff0c;重新开始挖矿。节点这么做…

AbstractRoutingDataSource实现多数据源切换以及事务中无法切换问题

一、AbstractRoutingDataSource实现多数据源切换 为了实现数据源的动态切换&#xff0c;我们采用了AbstractRoutingDataSource结合AOP反射来自定义注解。通过这种机制&#xff0c;我们可以在运行时根据自定义注解来选择不同的数据源&#xff0c;从而实现灵活高效的数据访问策略…

Linux文件/目录高级管理一(头歌实训)

目录 任务描述 相关知识 Linux修改文件权限命令 Linux修改所有者权限 Linux修改同组用户权限 Linux修改其他用户权限 编程要求 任务描述 相关知识 Linux修改目录权限命令 Linux修改所有者权限 Linux修改同组用户权限 Linux修改其他用户权限 编程要求 任务描述 相…

Linux(Centos)服务器探索ffmpeg笔记 (命令行、Nvidia硬件加速、GPU、CPU、CUDA、h264_nvenc、过滤器、加水印)

目录 前言内容简介为什么会有这篇文章 1、服务器上怎么使用ffmpeg1.1 使用编译好的&#xff08;需要root权限&#xff09;1.2 自己怎么编译&#xff08;需要root权限&#xff09; 2 、非Root用户要怎么安装和使用3、ffmpeg命令的一些使用引导和参数介绍3.1 编译参数3.2 查询支持…

labview中TDMS读写波形图

TDMS与二进制读写速度区别不大&#xff0c;但是它具备关系型数据库的一些优点&#xff0c;经常用于存取波形数据。

数据库工程师的工作职责(合集)

数据库工程师的工作职责1 职责&#xff1a; 1. 日常数据库的基本安装&#xff0c;维护&#xff0c;升级&#xff0c;监控的; 2. 配合研发部门进行数据库设计支持&#xff0c;协助开发、设计和进行SQL语言优化; 3. 配合相关部门数据库相关的任务&#xff0c;比如数据导入导出&am…

单片机LCD1602显示电子时钟设计,含汇编程序、仿真、论文

目录 1、摘要 2 系统方案 2.1 系统整体方案的论证 3 硬件设计与实现 3.1单片机最小系统 3.2振荡电路的工作原理 3.2时钟电路的工作原理 3.3单片机最小系统电路图 3.4 时钟芯片 3.5 液晶显示电路 4 实物调试及测试 4.1 实物图 4.2仿真结果图如下所示 5、单片机源…

JAVA实现easyExcel动态生成excel

添加pom依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version> </dependency><!--工具类--> <dependency><groupId>cn.hutool</groupId><…

请编写一个函数void fun(char*ss),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 请编…

三星电脑文件夹误删了怎么办?恢复方案在此

在使用三星电脑的过程中&#xff0c;我们可能会不小心删除了某个重要的文件夹&#xff0c;其中可能包含了工作文件、家庭照片、视频或其他珍贵的数据。面对这种突发情况&#xff0c;不必过于焦虑。本文将为您提供几种有效的恢复方案&#xff0c;希望能帮助您找回误删的文件夹及…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-6

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…