Android系统和开发--安全性和权限管理 SELinux 策略 安全架构

news2024/11/18 5:58:14

学习android权限知识
SElinux
chmod -R 777 ./
setenforce 0
adb root
su
fastboot oem at-unlock-vboot
adb disable-verity

Android权限

Android系统是基于Linux内核构建的,因此它继承了Linux的权限管理机制。Android应用需要通过声明权限来访问系统的某些功能(如摄像头、存储、位置等)。开发者在AndroidManifest.xml中声明权限,用户在安装应用时或者运行时可以授予或拒绝这些权限。

1. SELinux(Security-Enhanced Linux)

  • 简介:SELinux 是一个 Linux 内核模块,提供了强制访问控制 (MAC)。它通过定义安全策略来控制进程和文件系统之间的交互,限制恶意软件和未经授权的访问。
  • 命令
    • setenforce 0: 将 SELinux 设置为“宽容模式 Permissive”,此时系统会记录违反 SELinux 策略的行为但不实际阻止操作。
    • setenforce 1: 将 SELinux 设置为“强制模式 Enforcing”,此时 SELinux 会强制执行安全策略。
      在这里插入图片描述

2. chmod -R 777 ./

  • 简介chmod 是一个用于修改文件或目录权限的命令。

  • 含义

    • -R:递归更改权限,即对目录及其子目录下的所有文件应用更改。
    • 777:为文件或目录的所有用户(所有者、组、其他人)提供读、写、执行权限。
    • ./:表示当前目录。
  • 注意:赋予 777 权限可能带来安全风险,因为它允许所有用户完全控制文件或目录。

3. adb root

  • 简介adb(Android Debug Bridge)是 Android 开发和调试工具。adb root 命令用于在有 root 权限的设备上,以 root 身份重新启动 adb 服务。
  • 注意:并非所有设备都支持 adb root,且开启 root 可能会影响设备的安全性。

4. su

  • 简介su(substitute user)命令用于切换到另一个用户,通常是切换到 root 用户。执行此命令后,用户可以获得超级用户权限。
  • 在 Android 上的作用:很多设备上的 su 命令是通过安装 SuperSU 或 Magisk 实现的,允许用户临时或永久获得 root 权限。

5. fastboot oem at-unlock-vboot

  • 简介fastboot 是一个可以通过 USB 连接与 Android 设备通信的工具。oem 是用于设备制造商自定义命令的子命令。

  • at-unlock-vboot:该命令通常用于解锁设备的 bootloader,以允许自定义固件或 ROM 的安装。不过,每个设备的具体命令可能不同,因此解锁 bootloader 命令因设备而异。

  • 警告:解锁 bootloader 可能会使设备失去保修,并且增加设备被恶意软件攻击的风险。

6. adb disable-verity

  • 简介adb disable-verity 命令用于禁用 Android 的验证 (verity) 机制。Verity 是一种保护机制,防止系统分区被修改。

  • 用途:在修改系统分区或安装自定义 ROM 之前,通常需要禁用 verity 才能使系统正常启动。

  • 注意:禁用 verity 可能会使设备更容易受到恶意攻击。

这些工具和命令在Android系统开发和调试中非常有用,但它们也有一定的风险,尤其是在处理系统级别的权限时,可能会影响设备的稳定性和安全性。因此,建议在充分了解这些命令的作用和后果之后再使用。

SELinux

安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 主要由美国国家安全局开发。linux 2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。Android4.4上正式推出以SELinux为核心的系统安全机制。

在没有使用 SELinux 的操作系统中,决定一个资源是否能被访问的因素是:某个资源是否拥有对应用户的权限(读、写、执行)。
而最致命问题是,root 用户不受任何管制,系统上任何资源都可以无限制地访问。
这种权限管理机制的主体是用户,也称为自主访问控制(DAC)。

2.1 SELinux 的作用

SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。

SELinux 策略有哪些? Permissive模式可以执行哪些操作?

SELinux 策略类型

SELinux 的策略主要有以下几种类型:

  1. Targeted Policy(目标化策略)

    • 这是最常见的SELinux策略,主要针对系统中重要的进程(如 initsystem_server 等)应用SELinux策略。非关键进程通常运行在非强制(permissive)模式下。
  2. MLS Policy(多级安全策略)

    • 多级安全策略(Multi-Level Security)被设计用于极高安全性需求的系统中,它基于敏感度和类别(如秘密、机密)进行访问控制。
  3. Strict Policy(严格策略)

    • 在严格策略下,系统中所有进程都受到SELinux的控制。它为每个进程定义了严格的访问权限,确保进程只能执行被允许的操作。

Permissive 模式下的操作

在SELinux的Permissive模式下:

  • 记录策略违规:系统仍然会检查SELinux策略,任何违反策略的操作都会被记录在审计日志中。开发者和管理员可以查看这些日志来调试SELinux策略。
  • 不阻止操作:尽管策略被违反,系统不会阻止这些操作,所有的操作都可以继续执行。也就是说,Permissive模式允许所有操作的执行,即使这些操作在Enforcing模式下会被阻止。

Permissive 模式的常见用途

  1. 调试和策略开发:开发者可以使用Permissive模式来调试SELinux策略,记录所有潜在的策略违规行为,而不实际阻止操作。

  2. 测试系统行为:在切换到Enforcing模式之前,使用Permissive模式来测试系统和应用在SELinux下的行为,确保一旦切换到Enforcing模式,系统仍然能够正常运行。

需要注意的风险

使用Permissive模式时,系统实际上处于无强制访问控制的状态。这意味着,如果系统中存在恶意软件或其他安全威胁,可能会利用这个状态来执行未经授权的操作。因此,Permissive模式通常仅在开发、调试或故障排除时使用,在生产环境中则应尽量避免。

android 安全架构

Android系统的安全架构设计具有多层次的防护机制,以确保用户数据和设备的安全。以下是对Android系统主要安全架构和机制的详细介绍:

1. 应用沙盒 (App Sandbox)

每个Android应用都在一个独立的用户空间中运行,这被称为“沙盒”机制。沙盒通过以下方式保护应用之间的隔离:

  • 用户ID (UID): 每个应用在安装时都会分配一个唯一的用户ID。这个UID确保每个应用只能访问其自身的数据和文件,除非明确通过权限授予或跨进程通信 (IPC) 来共享。
  • 进程隔离: 每个应用都运行在单独的进程中,通过Linux内核的进程隔离特性,防止应用直接访问其他应用的进程或数据。

2. 权限模型

Android应用通过声明权限来请求访问敏感的设备功能或用户数据。例如,访问相机、地理位置、联系人等。用户在安装应用时或运行时(针对特定权限,如危险权限)可以选择是否授予这些权限。这种模型确保应用只能访问用户明确授权的资源。

3. SELinux (Security-Enhanced Linux)

SELinux为Android增加了强制访问控制 (MAC) 层次,在应用和系统服务之间提供额外的安全保护。SELinux策略规定了哪些进程可以访问哪些资源,并在违反策略时阻止操作。在默认的“Enforcing”模式下,SELinux会严格执行这些策略,防止未授权的访问。

4. 加密

Android系统提供了设备级和文件级加密,以保护存储在设备上的数据。主要包括:

  • 全盘加密 (Full Disk Encryption, FDE): 对整个设备的存储进行加密,通常使用设备的硬件加速器来提高加密效率。
  • 文件加密 (File-based Encryption, FBE): 在Android 7.0及以上版本中引入,允许在文件级别进行加密,以便更灵活地管理加密密钥和加密策略。

5. 密钥库 (Keystore)

密钥库系统提供了一种安全存储加密密钥的方法。密钥库可以生成和存储密钥,这些密钥只在特定条件下(如设备解锁时)可用,确保应用程序即使遭到攻击,也无法直接访问密钥材料。

6. 应用签名

每个Android应用在发布时都必须由开发者使用私钥进行数字签名。应用签名提供了以下好处:

  • 身份验证: 通过签名,用户和系统可以验证应用的发布者身份,防止恶意软件伪装成合法应用。
  • 版本控制: 签名还用于管理应用更新,确保新版本应用只能由原发布者发布。

7. 安全启动 (Verified Boot)

安全启动机制在设备启动时验证引导加载程序、内核、系统映像等关键系统组件的完整性。它使用信任链和设备密钥确保这些组件没有被篡改,防止恶意软件在启动时加载。

8. Google Play Protect

Google Play Protect是Android设备内置的安全服务,它在后台自动扫描应用和设备,检测并移除潜在的恶意软件。它还包括以下功能:

  • 应用扫描: 定期扫描已安装的应用程序,以发现并删除有害应用。
  • 安全提示: 提供安全建议,如禁止安装来自未知来源的应用。

9. 安全更新

Android定期发布安全补丁来修复系统中的漏洞。厂商和运营商有责任将这些更新推送到用户设备,以确保设备始终受到最新安全防护。

10. TrustZone

TrustZone是一种硬件隔离技术,它将处理器划分为“安全世界”和“非安全世界”。安全世界用于处理敏感操作,如密钥管理、加密等,确保这些操作不受非安全世界的影响。

11. 应用隔离 (Isolated Processes)

对于一些敏感的应用或组件,Android支持在隔离进程中运行,这种进程没有直接访问系统资源的能力。通常用于处理敏感数据的任务,如WebView进程,避免数据泄露风险。

12. 网络安全

Android网络安全机制包括:

  • 网络安全配置: 开发者可以在应用中定义网络安全策略,如禁用明文流量、定义信任的CA证书等。
  • VPN和代理支持: Android支持虚拟专用网络 (VPN) 和代理服务,提供数据流量的加密和匿名访问。

这些机制共同构成了Android系统的多层次安全架构,为用户和开发者提供了强大的安全保障。这些机制的有效运作依赖于系统、应用和用户的协同,确保设备能够抵御各种潜在的安全威胁。

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

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

相关文章

使用docker compose一键部署redis服务

使用docker compose一键部署redis服务 1、创建安装目录 mkdir /data/redis/ -p && cd /data/redis2、创建docker-compose.yml文件 version: 3 services:redis:image: registry.cn-hangzhou.aliyuncs.com/xiaopangpang/redis:7.0.5container_name: redisrestart: al…

Cpython解释器下实现并发编程——多进程、多线程、协程、IO模型

一、背景知识 进程即正在执行的一个过程。进程是对正在运行的程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 一&#xff09…

专利审查信息查询

1 登录国知局 国家知识产权局 政务服务平台 (cnipa.gov.cn) 进入网上办事 2 中国及多国专利审查信息查询 3 输入条件 弹出窗口 下载。 我们学校没有授权电子申请,没有办法,得自己关注!

MySQL-进阶篇-存储引擎

文章目录 1. MySQL 的体系结构1.1 连接层1.2 服务层1.3 存储引擎层1.4 存储层 2. 存储引擎2.1 存储引擎简介2.2 查看数据库支持的引擎2.3 指定存储引擎2.4 InnoDB 引擎2.4.1 InnoDB 的特点2.4.2 与 InnoDB 有关的磁盘文件2.4.3 InnoDB 的逻辑结构 2.5 MyISAM 引擎2.5.1 MyISAM …

虚拟机安装centos7-NAT网络模式安装

1、打开虚拟机,点击编辑,选择虚拟网络配置器 2、选择VMnet8的NAT类型 3、点击NAT设置,修改网关 4、点击应用及确定,如果你的子网IP及子网掩码没有的情况下,请优先设置 5、点击文件,选择新建虚拟机 6、选择典…

42、Python之面向对象:元类应用于定义检查、动态注入、插件注册

引言 在上一篇文章中,我们简单聊了一下Python中元类的概念,以及如何定义一个简单的元类。虽然,我们已经学会了定义元类,但是,相信不少刚接触Python的同学,大多会产生这样的疑问:这个不太好理解…

【Leetcode 1189 】 “气球” 的最大数量 —— 数组模拟哈希表

给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)。 字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。 示例 1: 输入&#…

YOLOv5改进 | 融合改进 | C3融合重写星辰网络之Rewrite the Stars⭐【CVPR2024】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录: 《YOLOv5入门 改…

Positional Encoding | 位置编码【详解】

文章目录 1、位置编码的2种方案2、位置编码3、公式详解 : 绝对位置 、 相对位置4、代码4.1 代码14.2 代码2 1、位置编码的2种方案 transformer的作者刚开始说固定的位置编码和可学习的位置编码的效果是差不多的,后来证明可学习的位置编码没有太大的必要&…

聊一下订单超时自动关闭的几种方式以及使用场景

订单超时自动关闭的本质其实是一种延时的功能实现,具体实现方式有很多种,但是我们方式的选择是需要结合业务场景的,没有更好的方案,只有更适合的方案,所以我们必须要结合自己的实际业务,以及业务的后续发展…

政务大数据解决方案(六)

政务大数据解决方案通过构建全面的数据集成平台,将来自不同政府部门和公共服务领域的多维度数据汇聚起来,运用先进的数据分析和人工智能技术进行深度挖掘与预测,从而为政府提供实时、精准的信息支持,优化决策流程,提高…

工业4.0下的防勒索病毒策略:主机加固在工控机防病毒中前行

MCK主机加固产品是一款专注于数据安全解决方案的软件,它在防勒索病毒和工控机防病毒方面具备一系列独特的功能和优势。 防勒索病毒方面: 内核级签名校验技术:MCK系统通过这项技术对操作系统启动及加载的所有模块进行可信认证,确…

电脑只有一个盘怎么分区?单盘电脑的解决方案

在现代计算机使用中,硬盘分区是一个重要的环节,它有助于我们更好地管理数据、提高系统运行效率,并在一定程度上保护数据的安全。 然而,当我们购买了一台新电脑后发现电脑里只有一个硬盘分区,这时候我们可能就需要对电…

Golang | Leetcode Golang题解之第349题两个数组的交集

题目&#xff1a; 题解&#xff1a; func intersection(nums1 []int, nums2 []int) (res []int) {sort.Ints(nums1)sort.Ints(nums2)for i, j : 0, 0; i < len(nums1) && j < len(nums2); {x, y : nums1[i], nums2[j]if x y {if res nil || x > res[len(re…

什么是CDN,CDN的作用是什么?

CDN CDN英文全称Content Delivery Network&#xff0c;即为内容分发网络。它是建立并覆盖在承载网之上&#xff0c;将内容存储在分布式的服务器上&#xff0c;使⽤户可以从距离较近的服务器获取所需的内容&#xff0c;从⽽减少数据传输的时间和距离&#xff0c;提⾼内容的传输…

基于Java的同城宠物服务预约系统的设计与实现---附源码78744

摘要 随着人们对宠物的喜爱和关注度不断增加&#xff0c;对宠物服务的需求也日益增长。为了提供更便捷、高效的宠物服务&#xff0c;设计并实现了一款基于 Java 的同城宠物服务预约系统。 本系统旨在满足宠物主人对各种宠物服务的需求&#xff0c;同时为宠物服务提供者提供一个…

C++ 设计模式——抽象工厂模式

抽象工厂模式 抽象工厂模式 抽象工厂模式主要组成部分代码实现抽象工厂模式模式的 UML 图抽象工厂模式 UML 图解析优点和缺点适用场景 抽象工厂模式提供一个接口&#xff0c;用于创建一系列相关或相互依赖的对象&#xff0c;而无需指定它们的具体类。它通常用于需要创建多个产品…

电脑怎么截图?截屏电脑快捷键ctrl加什么?

截图是我们日常使用电脑过程中非常常见的操作之一。无论是想保存有用的信息、分享有趣的内容&#xff0c;还是记录某个错误信息&#xff0c;截图都是一个简单而有效的方式。但是&#xff0c;不同的操作系统和需求会决定使用不同的方法来截图。接下来&#xff0c;我们将详细介绍…

opencascade Bnd_Range源码学习区间计算

opencascade Bnd_Range 前言 这个类描述了由两个实数值限定的 1D 空间中的区间。 一个区间可以是无效的&#xff0c;这表示区间中不包含任何点。 方法 1 默认构造函数。创建一个无效区间。 Bnd_Range() &#xff1b; 2 构造函数。创建最小最大值区间 Bnd_Range(const Sta…

使用LoRA对Llama3微调

使用LoRA&#xff08;Low-Rank Adaptation of Large Language Models&#xff09;技术对Llama-3语言模型进行微调。 理论知识参考百度安全验证 微调的前提条件 现在huggingface上下载llama2或llama3的huggingface版本。 我下载的是llama-2-13b-chat。 大语言模型微调方法 …