在 Ubuntu 22.04 上部署 AppArmor 应用安全教程

在这篇教程中,我们将为你设置 AppArmor 以增强应用程序的安全性。

AppArmor 是一个 Linux 安全模块,允许你限制各个程序的功能。通过强制执行强制访问控制策略,AppArmor 增强了你的应用程序和系统的安全性。

AppArmor 是一个易于使用的 Linux 安全模块实现,它通过为每个程序设置的配置文件来限制应用程序的功能和权限。它提供强制访问控制(MAC)来补充更传统的 UNIX 自由访问控制(DAC)模型。

在 Ubuntu 中,AppArmor 默认安装并加载——你可以通过运行 aa-status 来检查这一点。

它使用应用程序的配置文件来确定应用程序需要哪些文件和权限。一些软件包会安装自己的配置文件,其他配置文件可以在 apparmor-profiles 软件包中找到。

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

  • 到此为止,我们的云服务器就远程连接上了。

安装和配置步骤

第一步:更新系统

保持系统更新。

sudo apt-get update

第二步:安装 apparmor-utils

在像 Ubuntu 这样的基于 Debian 的系统上,你可以使用以下命令安装 apparmor-utils

sudo apt-get install apparmor-utils
sudo apparmor_status

注意: 默认情况下,AppArmor 安装在每个基于 Ubuntu、Debian 的系统中,但 apparmor-utils 包默认不安装。它包含命令行实用程序,你可以使用它们来更改 AppArmor 的操作模式,查找配置文件的状态,创建新的配置文件等。

第三步:了解 AppArmor 配置文件

AppArmor 使用配置文件来定义对应用程序的限制。配置文件可以处于以下三种模式之一:

  • Enforcing (强制执行):配置文件正在主动限制应用程序。
  • Complain (抱怨):违规行为会被记录但不会被强制执行。
  • Disabled (禁用):配置文件未加载。

AppArmor 配置文件是定义 Linux 系统中各个应用程序或进程的安全限制的核心组件。这些配置文件描述了应用程序可以访问哪些资源以及它可以执行哪些操作,从而将其功能限制在其操作所必需的范围内。

AppArmor 配置文件通常存储在 /etc/apparmor.d/ 中。每个配置文件都是一个文本文件,其名称是它所管理的的可执行文件的路径,斜杠被点替换(例如,/usr/bin/nginx 将会是 /etc/apparmor.d/usr.bin.nginx)。

配置文件包含指定应用程序可以执行的操作的规则,例如:

/usr/bin/nginx {# 允许读取配置文件/etc/nginx/** r,# 拒绝写入配置文件/etc/nginx/** w,# 允许访问日志目录/var/log/nginx/** rw,
}

示例:简单的 AppArmor 配置文件

这是一个基本的 AppArmor 配置文件示例,适用于位于 /usr/bin/myapp 的假设应用程序:

/etc/apparmor.d/usr.bin.myapp/usr/bin/myapp {# 允许读取配置文件/etc/myapp/config r,# 允许写入日志文件/var/log/myapp/** rw,# 拒绝访问其他所有内容deny /bin/** rw,deny /sbin/** rw,deny /usr/** rw,
}

在这个配置文件中:

  • 应用程序可以从 /etc/myapp/config 读取。
  • 它可以读取和写入 /var/log/myapp/ 中的文件。
  • 它被拒绝访问文件系统的大部分其余部分,通过限制其功能来增强安全性。

这是 AppArmor 配置文件的概述。在 官方文档 页面了解有关 AppArmor 的更多信息。

要查看可用配置文件的列表,请使用以下命令:

sudo aa-status

第四步:创建一个新配置文件

你可以使用 aa-genprof 实用程序为应用程序创建一个新的配置文件。

开始为应用程序创建配置文件:

sudo aa-genprof /usr/bin/myapp

该实用程序将引导你完成整个过程。它会要求你运行该应用程序,以便它可以观察其行为并建议规则。

运行完应用程序后,返回到终端并回答提示以完善配置文件。

保存配置文件并退出。

第五步:设置配置文件模式

创建配置文件后,你可以设置其模式:

要强制执行配置文件:

sudo aa-enforce /etc/apparmor.d/usr.bin.myapp

要将配置文件设置为抱怨模式:

sudo aa-complain /etc/apparmor.d/usr.bin.myapp

第六步:管理配置文件

你可以使用以下命令手动管理配置文件:

加载配置文件:

sudo apparmor_parser -r /etc/apparmor.d/usr.bin.myapp

卸载配置文件:

sudo apparmor_parser -R /etc/apparmor.d/usr.bin.myapp

重新加载所有配置文件:

sudo systemctl reload apparmor

第七步:监控日志

AppArmor 将违规行为记录在 /var/log/syslog/var/log/audit/audit.log 中。你可以监控这些日志来微调你的配置文件:

sudo tail -f /var/log/syslog | grep apparmor

第八步:微调配置文件

如果你注意到问题或违规行为,你可以通过直接编辑来完善你的配置文件:

sudo nano /etc/apparmor.d/usr.bin.myapp

更改后,重新加载配置文件:

sudo apparmor_parser -r /etc/apparmor.d/usr.bin.myapp

第九步:禁用 AppArmor(如果需要)

如果你出于任何原因需要禁用 AppArmor,你可以将所有配置文件设置为抱怨模式:

sudo aa-complain /etc/apparmor.d/*

或者,你可以通过编辑 GRUB 配置并删除 security=apparmor 选项来完全禁用 AppArmor,然后更新 GRUB 并重新启动。

结尾

AppArmor 是一个强大的工具,用于增强 Linux 系统上应用程序的安全性。通过遵循本教程,你已经学习了如何安装、配置和管理 AppArmor 配置文件,从而帮助你更好地保护你的应用程序免受潜在的安全威胁。

雨云 - 新一代云服务提供商: https://rainyun.ivwv.site

我的博客:https://blog.ivwv.site

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

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

相关文章

Nginx:动静分离

什么是动静分离? 动静分离 是指将网站中的静态资源(如图片、样式表、脚本等)和动态内容(如 PHP、Python、Node.js 等后端生成的内容)分开部署和处理。这样做的好处是可以利用不同的服务器或缓存策略来优化不同类型的资源。 动静分离的好处 提高性能:静态资源可以直接从…

每天40分玩转Django:Django插件开发

Django插件开发 一、插件开发概述表 阶段主要任务技术要点难度准备工作项目结构设计、环境配置项目布局、setup.py★★★☆☆开发实现功能开发、测试编写Django AppConfig、Signals★★★★☆文档编写API文档、使用说明Markdown、reStructuredText★★★☆☆发布部署PyPI打包…

什么是TDD测试驱动开发(Test Driven Development)?

什么是测试驱动开发? 软件开发团队通常会编写自动化测试套件来防止回归。这些测试通常是在编写应用程序功能代码之后编写的。我们将采用另一种方法:在实现应用程序代码之前编写测试。这称为测试驱动开发 (TDD)。 为什么要应用 TDD?通过在实…

后台管理系统用户退出登录方案实现

退出登录一直是一个通用的前端实现方案,对于退出登录而言,它的触发时机一般有两种: 1. 用户主动退出,即用户点击登录按钮之后退出; 2. 用户被动退出,Token过期或被 其他人"顶下来" 时退出&…

文献分享:BGE-M3——打通三种方式的嵌入模型

文章目录 1. \textbf{1. } 1. 背景与导论 1.1. \textbf{1.1. } 1.1. 研究背景 1.2. \textbf{1.2. } 1.2. 本文的研究 1.3. \textbf{1.3. } 1.3. 有关工作 2. M3-Embedding \textbf{2. M3-Embedding} 2. M3-Embedding 2.1. \textbf{2.1. } 2.1. 模型核心: 混合检索方式 2.1.1. \…

Hadoop•FinalShell连接VMware免密登录

听说这是目录哦 FinalShell连接VMware🌤️解决重连失效FinalShell的使用 免密登录⛈️能量站😚 FinalShell连接VMware🌤️ 保持虚拟机的开机状态,打开FinalShell,如果虚拟机关机或者挂起,连接就会断开。 …

一个在ios当中采用ObjectC和opencv来显示图片的实例

前言 在ios中采用ObjectC编程利用opencv来显示一张图片,并简单绘图。听上去似乎不难,但是实际操作下来,却不是非常的容易的。本文较为详细的描述了这个过程,供后续参考。 一、创建ios工程 1.1、选择ios工程类型 1.2、选择接口模…

《Rust权威指南》学习笔记(五)

高级特性 1.在Rust中,unsafe是一种允许绕过Rust的安全性保证的机制,用于执行一些Rust默认情况下不允许的操作。unsafe存在的原因是:unsafe 允许执行某些可能被 Rust 的安全性检查阻止的操作,从而可以进行性能优化,如手…

【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 3:算法实现

目录 1 三种多头编码(MHE)实现1.1 多头乘积(MHP)1.2 多头级联(MHC)1.3 多头采样(MHS)1.4 标签分解策略 论文:Multi-Head Encoding for Extreme Label Classification 作者…

docker中使用Dockerfile设置Volume挂载点

关于在docker中如何使用Volume,可以参考文章: docker中使用Volume完成数据共享-CSDN博客 如果想在生成docker镜像的时候设置好挂载点,而不是在运行镜像生成容器时生成。 下面以自建一个tomcat镜像为例,演示如何在生成镜像时设置…

springboot548二手物品交易boot代码(论文+源码)_kaic

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统二手物品交易信息管理难度大,容错率低&#x…

通往O1开源之路

“Scaling of Search and Learning: A Roadmap to Reproduce o1 from Reinforcement Learning Perspective”由复旦大学和上海人工智能实验室的研究者撰写。该论文从强化学习视角出发,深入分析了实现类似OpenAI o1模型性能的路线图,聚焦于策略初始化、奖…

SD下载、安装、使用、卸载-Stable Diffusion整合包v4.10发布!

目录 前言概述 SD安装1、安装软件2、启动3、配置4、运行5、测试 导入SD模型【决定画风】常用模型下载安装模型 SD卸载SD文生图提示词提示词使用技巧提示词的高级使用技巧强调关键词 前言 我向来不喜欢搞一些没有用的概念,所以直接整理可能用到的东西。 sd简单的说…

Mac iTerm2集成DeepSeek AI

1. 去deepseek官网申请api key,DeepSeek 2. 安装iTerm2 AI Plugin插件,https://iterm2.com/ai-plugin.html,插件解压后直接放到和iTerms相同的位置,默认就在/Applications 下 3. 配置iTerm2 4. 重启iTerm2,使用快捷键呼出AI对话…

MySQL数据库笔记——多版本并发控制MVCC

大家好,这里是Good Note,关注 公主号:Goodnote,本文详细介绍MySQL的并发控制:多版本并发控制MVCC。 文章目录 背景介绍数据库并发控制——锁机制悲观锁和乐观锁悲观锁乐观锁 数据库并发控制——MVCC 的引入MVCC 和锁机…

电脑里msvcr120.dll文件丢失怎样修复?

电脑里msvcr120.dll文件丢失的修复指南 在电脑的日常使用中,我们可能会遇到各种各样的系统文件丢失问题,其中msvcr120.dll文件的丢失就是较为常见的一种。作为一名在软件开发领域深耕多年的从业者,我将为大家详细解析msvcr120.dll文件的重要…

今日头条ip属地根据什么显示?不准确怎么办

在今日头条这样的社交媒体平台上,用户的IP属地信息对于维护网络环境的健康与秩序至关重要。然而,不少用户发现自己的IP属地显示与实际位置不符,这引发了广泛的关注和讨论。本文将深入探讨今日头条IP属地的显示依据,并提供解决IP属…

【Rust自学】10.3. trait Pt.1:trait的定义、约束与实现

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 题外话:trait的概念非常非常非常重要!!!整个第10章全都是Rust的重难点!&#x…

大白话拆解——多线程中关于死锁的一切(七)(已完结)

前言: 25年初,这个时候好多小伙伴都在备战期末 小编明天还有一科考试,日更一篇,今天这篇一定会对小白非常有用的!!! 因为我们会把案例到用代码实现的全过程思路呈现出来!&#xff…

GitLab集成Runner详细版--及注意事项汇总【最佳实践】

一、背景 看到网上很多用户提出的runner问题其实实际都不是问题,不过是因为对runner的一些细节不清楚导致了误解。本文不系统性的介绍GitLab-Runner,因为这类文章写得好的特别多,本文只汇总一些常几的问题/注意事项。旨在让新手少弯路。 二、…