AppArmor零知识学习十四、实操与实践(2)

news2025/3/12 1:02:17

本文内容参考:

Linux安全模块AppArmor总结-CSDN博客,

apparmor首页、文档和下载 - 应用程序访问控制系统 - OSCHINA - 中文开源技术交流社区,

AppArmor · GitBook,

AppArmor配置(二)_domybest_nsg的博客-CSDN博客

接前一篇文章:AppArmor零知识学习十三、实操与实践(1)

上一篇文章使能了AppArmor,但是目前系统中还没有具有配置文件的应用程序,本文就来添加访问控制规则以使系统中存在具有配置文件的应用程序。

二、添加访问控制规则

1. 编写测试例程

先编写一个测试例程,代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>


int main(int argc, char *argv[])
{
        FILE *f;
        int i = 0;
        char ch;

        if(3 == argc)
        {
                f = fopen(argv[1], "w");
                if(!f)
                {
                        fprintf(stderr, "fopen failed with w, error: %s\n", strerror(errno));
                        return 2;
                }
                while(i < strlen(argv[2]))
                {
                        fputc(argv[2][i], f);
                        i++;
                }
                fclose(f);
        }
        else if(argc == 2)
        {
                f = fopen(argv[1], "r");
                if(!f)
                {
                        fprintf(stderr, "fopen failed with r, error: %s\n", strerror(errno));
                        return 2;
                }
                while((ch=fgetc(f)) != EOF)
                        printf(" %c", ch);
                fclose(f);
        }
        else
        {
                printf("Usage:\n");
                printf("\ttest_app file \"string\"\n");
                printf("\ttest_app file\n");
                return 3;
        }

        return 0;
}

对测试例程进行编译和简单测试。如下所示:

$ gcc test_app.c -o test_app
$ ls
test_app  test_app.c
$ ./test_app kkk
fopen failed with r, error: No such file or directory

$ ./test_app kkk 1234
$ ./test_app kkk
 1 2 3 4

2. 创建规则

利用genprof创建规则。步骤如下:

(1)进入到创建测试例程的目录

penghao@Ding-Perlis-MP260S48:~/AppArmor$ cd sample_code/
penghao@Ding-Perlis-MP260S48:~/AppArmor/sample_code$ ls
kkk  test_app  test_app.c

penghao@Ding-Perlis-MP260S48:~/AppArmor/sample_code$ rm kkk
penghao@Ding-Perlis-MP260S48:~/AppArmor/sample_code$ ls
test_app  test_app.c

(2)创建规则

$ aa-genprof test_app
正在在 /etc/apparmor.d 中更新 AppArmor 配置文件。Writing updated profile for /home/penghao/AppArmor/sample_code/test_app.

ERROR: [Errno 13] Permission denied: '/etc/apparmor.d/tmpdy6clx3q~'

前边加上sudo,再次执行以上命令:

$ sudo aa-genprof test_app
[sudo] penghao 的密码:正在在 /etc/apparmor.d 中更新 AppArmor 配置文件。Writing updated profile for /home/penghao/AppArmor/sample_code/test_app.
正在将 /home/penghao/AppArmor/sample_code/test_app 设置为投诉模式。
在开始之前,您可能希望检查您希望限制的应用程序的配置文件是否已经存在。有关详细信息,请参考以下维基页面:https://gitlab.com/apparmor/apparmor/wikis/Profiles

分析中: /home/penghao/AppArmor/sample_code/test_app

请启动要在另一个窗口中分析的应用程序,并立即执行其功能。
完成后,选择下面的“扫描”选项,以扫描系统日志中的AppArmor事件。
对于每个 AppArmor 事件,您将有机会选择是应允许还是拒绝访问。
[扫描系统日志以查找 AppArmor 事件(S)] / 完成(F)

按'F'键(无需回车)完成过程,如下所示:

[扫描系统日志以查找 AppArmor 事件(S)] / 完成(F)
正在设置 /home/penghao/AppArmor/sample_code/test_app 到强制模式
重启 AppArmor 到强制模式
请考虑贡献您的新配置文件!参阅以下 wiki 页面获取更多信息:https://gitlab.com/apparmor/apparmor/wikis/Profiles

已完成为 /home/penghao/AppArmor/sample_code/test_app 生成配置文件。

查看/etc/apparmor.d/下的内容:

对比之前的内容:

可以看到,最大的变化是在/etc/apparmor.d/下多了一个home.penghao.AppArmor.sample_code.test_app文件,文件名就是该文件的绝对路径,只是由'/'变为了'.'。文件内容如下:

# Last Modified: Wed Apr 19 10:23:02 2023
abi <abi/3.0>,

include <tunables/global>

/home/penghao/AppArmor/sample_code/test_app {
  include <abstractions/base>

  /home/penghao/AppArmor/sample_code/test_app mr,

}

此时再使用上一篇文章中提到的aa-status命令查看当前AppArmor的运行状态和具有配置文件的应用程序。命令及结果如下所示:

$ sudo aa-status 
apparmor module is loaded.
1 profiles are loaded.
1 profiles are in enforce mode.
   /home/penghao/AppArmor/sample_code/test_app
0 profiles are in complain mode.
0 profiles are in kill mode.
0 profiles are in unconfined mode.
0 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
0 processes are in mixed mode.
0 processes are in kill mode.

对比之前没有设置规则时的结果:

$ sudo apparmor_status 
apparmor module is loaded.

(3)修改规则

修改/etc/apparmor.d/home.penghao.AppArmor.sample_code.test_app文件,在文件大括号内加入以下内容:

/home/penghao/AppArmor/sample_code/abcde rwm,
/home/penghao/AppArmor/sample_code/abcd  w,
/home/penghao/AppArmor/sample_code/abc r,

前一部分为文件名,后一部分为权限。

修改后的文件内容如下:

# Last Modified: Wed Apr 19 10:23:02 2023
abi <abi/3.0>,

include <tunables/global>

/home/penghao/AppArmor/sample_code/test_app {
  include <abstractions/base>

  /home/penghao/AppArmor/sample_code/test_app mr,
  /home/penghao/AppArmor/sample_code/abcde rwm,
  /home/penghao/AppArmor/sample_code/abcd w,
  /home/penghao/AppArmor/sample_code/abc r,

}

(4)重新装载

 

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

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

相关文章

CESM 地球系统模式

详情点击链接&#xff1a;地球系统模式&#xff08;CESM&#xff09; CESM 运行的系统和软件环境 1.CESM需要什么运行环境 2.CESM2.0运行环境的搭建CESM 运行需要掌握的Linux及编译 1.Linux 2.Linux编译 3.基于Make 和CMake的编译体系CESM 的基本结构 1.CESM的几大功能模块 2…

德赛西威上海车展重磅发布Smart Solution 2.0,有哪些革新点?

4月18日&#xff0c;全球瞩目的第二十届上海车展盛大启幕&#xff0c;作为国际领先的移动出行科技公司&#xff0c;德赛西威携智慧出行黑科技产品矩阵亮相&#xff0c;并以“智出行 共创享”为主题&#xff0c;重磅发布最新迭代的智慧出行解决方案——Smart Solution 2.0。 从…

“量子+金融”!摩根大通和QC Ware拓展量子深度对冲

​ &#xff08;图片来源&#xff1a;网络&#xff09; 近日&#xff0c;QC Ware和摩根大通完成了一项关于量子“深度对冲”的研究&#xff0c;为提高未来的金融服务风险应对能力铺平了道路。 利用市场摩擦和交易约束的数据驱动模型&#xff0c;可以降低投资组合的风险。相关论…

Flink学习——基本概述

目录 一、Flink概述 二、单机版安装配置 1.开启hadoop 2.解压Flink压缩包 3.修改文件名 4.开启客户端 5.访问webUI 三、集群配置 1.jobmanager配置 2.master配置 3.workers配置 4.分发配置 5.开启Flink集群 6.访问webUI 7.查看Job Manager 8.查看Task Managers…

不同批次板子采集到的传感器压力值不同

问题描述&#xff1a; M340B空压机主控板在接正常压力气源时&#xff0c;显示屏显示压力值过高并报警。 问题排查&#xff1a; 确认可能的故障点&#xff1a;压力传感器、硬件电路&#xff08;供电电路、分压电路、ADC采样电路等&#xff09;、单片机、软件&#xff1b; 排…

MySQL-----表的约束

文章目录 前言一、空属性二、默认值三、列描述四、zerofil五、主键六、自增长七、唯一键八、外键总结 前言 真正约束字段是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性, 从业务逻辑角度保证数据的正确性.比如有一个字段是email,要求是唯一的…

十八、市场活动备注:修改

功能需求 用户在市场活动明细页面,点击"修改"市场活动备注的图标,弹出修改市场活动备注的模态窗口; 用户在修改市场活动备注的模态窗口,填写表单,点击"更新"按钮,完成修改市场活动备注的功能. *备注内容不能为空 *修改成功之后,关闭模态窗口,刷新备注列表…

VC++ | 编译、运行Debug版本报错-20230419-01

VC++ | 编译、运行Debug版本报错-20230419-01 1.LOG如下 1>------ 已启动生成: 项目: CamManager, 配置: Debug Win32 ------ 1>stdafx.cpp 1>UnicodeLib.cpp 1>MultiLanguage.cpp 1>d:\01_project\02_grain\pdv-tools

DSAI130D 3BSE003127R1在机器视觉系统中主要负责光束调制

DSAI130D 3BSE003127R1在机器视觉系统中主要负责光束调制 如今&#xff0c;随着工业4.0的到来&#xff0c;机器视觉技术在工业自动化中逐渐起着十分重要的地位&#xff0c;机器视觉技术的不断创新&#xff0c;推动了工业自动化、智慧安防以及人工智能等行业的进步&#xff0c;…

Maven打包跳过测试的5种方式

Maven打包跳过测试的5种方式 1、命令行方式跳过测试 我们可以通过使用命令将项目打包&#xff0c;添加跳过测试的命令就可以了&#xff0c;可以用两种命令来跳过测试&#xff1a; -DskipTeststrue mvn package -DskipTeststrue-DskipTeststrue&#xff0c;不执行测试用例&a…

SpringCloud网关——GateWay

GateWay 本专栏学习内容来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 概述 SpringCloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;基于 Spring 5.0Spring Boot 2.0 和 Project Reactor 等技术开发的网关&#xff0c;它旨在为微服务架构提供一种简…

c++11 标准模板(STL)(std::queue)(三)

定义于头文件 <queue> template< class T, class Container std::deque<T> > class queue; std::queue 类是容器适配器&#xff0c;它给予程序员队列的功能——尤其是 FIFO &#xff08;先进先出&#xff09;数据结构。 类模板表现为底层容器的包…

asp.net+sqlserver企业人力资源信息网站系统

下面分别论述本系统的各个功能模块的作用&#xff1a; &#xff08;1&#xff09;员工管理模块&#xff1a;该模块主要是查看自己/同事的资料&#xff0c;以更好促进公司员工之间的相互了解。同时也可以修改自己的部分信息&#xff0c;管理员可以实现对员工信息的添加&#xff…

Wi-Fi 6(802.11ax)解析14:非主动形式的BSR(Buffer Status)反馈

序言 该机制的基本思想就是通过AP竞争&#xff0c;获得TXOP传输时间后&#xff0c;根据各个终端的缓存情况&#xff0c;进行RU资源的分配&#xff0c;当分配完成后&#xff0c;进行上行OFDMA的传输。在这个过程中&#xff0c;缓存情况的反馈可以通过AP询问的方式主动完成&…

Visual Studio Code.app/vscode学习

vscode快速上手使用。 目录&#xff1a; 前言快捷键篇布局篇插件篇vscode问题&#xff08;调试step into无法跳入&#xff09; 建议阅读时间&#xff1a;7min x.1 前言 vscode是一款免费的轻量级编辑器&#xff0c;搭配vim可以实现带debug能力的vim自由。 vim自由&#xf…

OpenAI-ChatGPT最新官方接口《错误代码大全》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(九)(附源码)

Error codes 错误码 前言Introduction 导言API errors API 错误401 - Invalid Authentication 401 -验证无效401 - Incorrect API key provided 401 -提供的API密钥不正确401 - You must be a member of an organization to use the API 401 -您必须是组织的成员才能使用API429…

Apollo配置中心2.0版本详解

目的 部署一个单节点的Apollo配置中心,且包含dev和pro环境的配置。 需要部署的服务 Portal Service, Admin Service, Config Service(包含Meta service 和 Eureka) 架构图 部署图 部署过程: 数据库脚本: portaldb: https://github.com/apolloconfig/apollo/blob/mast…

HTML+CSS+JS 学习笔记(三)———Javascript(上)

&#x1f331;博客主页&#xff1a;大寄一场. &#x1f331;系列专栏&#xff1a;前端 &#x1f331;往期回顾&#xff1a;HTMLCSSJS 学习笔记&#xff08;一&#xff09;———HTML(上) HTMLCSSJS 学习笔记&#xff08;一&#xff09;———HTML(中) HTMLCSSJS 学习笔记&#…

2023年14届蓝桥杯省赛“日期统计”题解

问题描述 小蓝现在有一个长度为 100 的数组&#xff0c;数组中的每个元素的值都在 0 到 9 的范围之内。数组中的元素从左至右如下所示&#xff1a; 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 5 7 0 9 9 1 9 4 4 6 8 6 3 …

cubase elements12中文免费版 详细安装流程

cubase9免费版下载是由Steinberg公司开发的一款音乐制作软件&#xff0c;具有音频编辑处理、多轨录音缩混、视频配乐及环绕声处理等功能&#xff0c;对作曲家和混合工程师来说十分好用&#xff0c;可以大大提高编辑效率&#xff0c;需要的朋友赶快下载吧&#xff01; 软件地址&…