Linux系统安全与应用【一】

embedded/2024/10/18 16:49:29/

目录

1.账号安全控制

1.1 系统账号清理

1.2 密码安全控制

1.3 命令历史限制

1.4 命令总结

2.系统引导和登录控制 

2.1 使用su命令切换用户

2.2 限制使用su命令的用户

3.可插拔式认证模块PAM 

linux%E4%B8%AD%E7%9A%84PAM%E5%AE%89%E5%85%A8%E8%AE%A4%E8%AF%81-toc" style="margin-left:80px;"> 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 

linux%E4%B8%AD%E7%9A%84PAM%E5%AE%89%E5%85%A8%E8%AE%A4%E8%AF%81"> 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.ppmy.cn/embedded/16951.html

相关文章

Github 2024-04-22 开源项目日报Top10

根据Github Trendings的统计,今日(2024-04-22统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4C++项目2Go项目2JavaScript项目1TypeScript项目1非开发语言项目1Zig项目1免费编程书籍和学习资源清单 创建周期:3762 天协议类型:…

three.js 制作卡牌正反面 旋转

1.效果图 2.代码 <template><div><div id"container"></div></div> </template><script> import * as THREE from "three"; import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.…

npm cnpm pnpm yarn 有什么区别? 哪个更好用呢?

npm、cnpm、pnpm 和 yarn 都是流行的 JavaScript 包管理工具&#xff0c;它们在安装和管理 Node.js 项目的依赖方面有所不同。选择哪一个主要取决于你的项目需求和个人喜好。下面是每个工具的基本概述和它们之间的主要区别&#xff1a; npm (Node Package Manager) 概述&#x…

[Flutter3] 记录Dio的简单封装(一)

文章目录 效果使用ResponseEntity类DioManager封装_onResponse / _onDioException 的设计Response的处理catch处理 效果 请求成功/失败/异常的日志输出效果 成功: 失败:500 失败:404 网络异常: 使用 举个使用的例子, 在调用 DioManager的时候, 直接通过返回值的状态, 来…

Stable Diffusion WebUI 使用 VAE 增加滤镜效果

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 大家好&#xff0c;我是水滴~~ 本文主要介绍 VAE 模型&#xff0c;主要内容有&#xff1a;VAE 模型的概念、如果下载 VAE 模型、如何安装 VAE 模型、如…

问答机器人学习资料

longchain 5 分钟内搭建一个免费问答机器人&#xff1a;Milvus LangChain-腾讯云开发者社区-腾讯云 chatglm大模型 基于本地知识的问答机器人langchain-ChatGLM 大语言模型实现方法详解_python_脚本之家 探索QRobot&#xff1a;智能对话与聊天机器人的开源奇缘-CSDN博客 如何…

暴雨服务器,驱动AI未来无限

今日&#xff0c;由DOIT主办的“2024数据基础设施技术峰会”在成都隆重举办。本次峰会聚焦算力、存力与数据要素如何协同推动数字经济发展&#xff0c;吸引了众多业界专家、学者、技术开发者和企业决策者等齐聚一堂&#xff0c;共同探讨数据基础设施技术的未来趋势&#xff0c;…

web server apache tomcat11-17-default-servlet

前言 整理这个官方翻译的系列&#xff0c;原因是网上大部分的 tomcat 版本比较旧&#xff0c;此版本为 v11 最新的版本。 开源项目 从零手写实现 tomcat minicat 别称【嗅虎】心有猛虎&#xff0c;轻嗅蔷薇。 系列文章 web server apache tomcat11-01-官方文档入门介绍 web…