2023-2024-1 20232828《Linux内核原理与分析》第十三周作业

Linux Capability是一个高级功能,它旨在通过细分传统的root权限来增强系统的安全性和灵活性。这种机制允许对特定的系统操作授权,而不是赋予完全的root权限。Linux系统中有多种Capabilities,例如网络管理或修改系统时间,每种都有其特定用途。在探索实验中,通过编程和配置实验来理解如何在实际场景中应用这些权限,同时评估使用细分权限相比全root权限的安全优势。这包括分析权限细分如何降低系统受攻击的风险,并通过具体案例展示Capabilities的使用。
摘要由CSDN通过智能技术生成

完成实验楼上Linux安全类实验中的一个,两人一组,题目不能重复。

在本周日晚12:00前发学习博客(标题 学号《Linux内核原理与分析》第十三周作业),重点是遇到的问题和解决方案。不按时交作业会扣分。































































































Linux Capability探索实验

下载Libcap

libcap 库能够使用户级别的程序与 capability 特性做交互,一些linux发行版不包括这个库,在环境中已经有 /usr/include/sys/capability.h 这个文件,为了避免老版本的影响,我们还是删掉以前的,然后重新下载一个。

$ cd
$ wget http://labfile.oss.aliyuncs.com/libcap-2.21.tar.gz
$ tar xvf libcap-2.21.tar.gz
$ sudo rm /usr/include/sys/capability.h
$ sudo rm /lib/libcap.so*
$ cd /home/shiyanlou/libcap-2.21/
$ sudo make
$ sudo make install

需要熟悉以下命令:

setcap: 给一个文件分配capabilities
getcap: 显示文件所带的capabilities
getpcaps: 显示线程所在的capabilities

在一个capability系统中,当一个程序运行时,对应的线程会初始化一系列capabilities(令牌)。当线程尝试访问某个对象时,操作系统会检查该线程的capabilities,并决定是否授权访问。

3.1 感受一下Capabilities

在操作系统中,有许多只允许超级用户使用的操作,比如配置网卡,备份所有用户文件,关闭计算机等,但如果要进行这些操作就必须先成为超级用户的话,那就违背了最小权限原则。

Set-UID程序允许用户暂时以root权限进行操作,即使程序中所进行的权限操作用不到root权限的所有权利,这很危险:因为如果程序被入侵了的话,攻击者可能得到root权限。

Capabilities将root权限分割成了权利更小的权限。小权限被称作capability。如果使用capabilities,那么攻击者最多只能得到小权限,无法得到root权限。这样,风险就被降低了。

在kernel版本2.6.24之后,Capabilities可以分配给文件(比如程序文件),线程会自带程序文件被分配到的capabilities。

下面这个例子演示capabilities如何移除root特权程序中的不必要的权利。

首先,以普通用户登录并运行以下命令:

$ ping -c 3 www.baidu.com

命令成功运行,如果你查看/bin/ping的属性会发现它是一个root所有的Set-UID程序。如果ping中包含漏洞,那么整个系统就可能被入侵。问题是我们是否能移除ping的这些权限。

接下来关闭程序的suid位:

$ sudo su

(注:1. 请先which ping确认ping的真正位置,2. #开头说明以root权限运行命令,普通用户下请自行在命令前加sudo)

现在再ping百度看会发生些什么:

# exit
$ ping www.baidu.com
ping: icmp open socket: Operation not permitted

在这里插入图片描述

它会提示你操作不被允许。这是因为ping命令需要打开RAW套接字,该操作需要root特权,这就是为什么ping是Set-UID程序了。但有了capability,我们就可以杯酒释兵权了,让我们分配cap_net_raw给ping,看看会发生什么:

$ sudo su
# setcap cap_net_raw=ep /bin/ping
# exit
$ ping -c 3 www.baidu.com

在这里插入图片描述

1.取消下列程序的Set-UID并不影响它的行为。

这一步证明一开始无法修改密码,但是在分配了cap之后就可以成功修改密码:

seed 用户的密码是 dees

$ 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值