当前位置: 首页 > 软件库 > 管理和监控 > 安全相关 >

apparmor

应用程序访问控制系统
授权协议 未知
开发语言 C/C++
所属分类 管理和监控、 安全相关
软件类型 开源软件
地区 不详
投 递 者 司徒俊良
操作系统 Linux
开源组织
适用人群 未知
 软件概览

AppArmor 是一个类似于selinux  的东东,主要的作用是设置某个可执行程序的访问控制权限,可以限制程序 读/写某个目录/文件,打开/读/写网络端口等等。。


1.安装 Ubuntu 7.10里
sudo apt-get install apparmor apparmor-profiles apparmor-docs  apparmor-utils

2.启动服务
sudo /etc/init.d/apparmor restart

3.添加访问控制规则
3.1 先试编写一个小程序

代码:

#include
#include  

int main(int argc,char *argv[])
{
   FILE *  f;
   int nn,i;
   char ch;
   if (argc == 3){
      f =  fopen(argv[1],”w”);
      if (f ==NULL) {
         printf (”Open file  \”%s\” with w ERROR\n”,argv[1]);
         return 2;
      }
      nn =  strlen(argv[2]);
      i=0;
      while (i       {
          fputc(argv[2][i],f);
         ++i;
      }
      fclose(f);
   }  else if (argc == 2){
      f = fopen(argv[1],”r”);
      if (f == NULL)  {
         printf (”Open file \”%s\” with r ERROR\n”,argv[1]);
          return 2;
      }
      while ( (ch=fgetc(f)) != EOF )
      {
          printf(”%c”,ch);
      }
      fclose(f);
   } else {
       printf(”Usage: testapp file \”string\”     // write string to file \n”
             ”       testapp file              // read file and print it \n”);
       return 3;
   }

   return  0;
}

保存为/home/n1/Desktop/testapp.c,
程序很简单,带一个或两个参数,第一个参数是文件名,第二个参数是字符串,读或写文件
执行

代码:

cd /home/n1/Desktop
gcc -Wall -o testapp  testapp.c
./testapp abc “1abc”
./testapp abcd “2abcd”
./testapp abcde  “3abcde”
ls abc abcd abcde    #/// <- 可看到文件
./testapp abc
./testapp  abcd
./testapp abcde      #/// <- 可看到文件内容
rm abc abcd  abcde

以上测试在用户家目录里,有完全的读写权限,写入读取文件一切正常。
3.2 创建规则

代码:

cd /home/n1/Desktop
sudo genprof testapp #// 提示[(S)can  system log for SubDomain events] / (F)inish 时按F 完成
ls  /etc/apparmor.d/home.n1.*   #// 可以看到有一个 /etc/apparmor.d/home.n1.Desktop.testapp  文件,
                               #// 文件名就是文件的绝对路径,由/变为.  了

原始内容为

代码:

# Last Modified: Thu Oct  4 01:35:37 2007
#include<tunables/global>
/home/n1/Desktop/testapp flags=(complain) {
   #include<abstractions/base> 

  /home/n1/Desktop/testapp  mr,
}

在文件大括号内加入

代码:

/home/n1/Desktop/abcde rwm,
/home/n1/Desktop/abcd  w,
/home/n1/Desktop/abc r,

一部分为文件名,第二部分为权限,rwxm 之类与文件系统的权限类似。
4. 测试
执行下列命令

代码:

sudo /etc/init.d/apparmor reload      //  重装读取
./testapp abc “1abc00″
./testapp abcd “2abcd00″
./testapp abcde  “3abcde00″
ls abc abcd abcde    #/// <- 可看到文件
./testapp  abc
./testapp abcd
./testapp abcde      #/// <- 可看到文件内容 

gedit  /var/log/syslog  # 可以看到类似内容
kernel: [140321.028000] audit(1191433716.584:1578):  type=1502 operation=”inode_create” requested_mask=”w” denied_mask=”w” name=”/home/n1/Desktop/abc” pid=4864 profile=”/home/n1/Desktop/testapp”
kernel: [140362.236000] audit(1191433758.086:1579):  type=1502 operation=”inode_permission” requested_mask=”r” denied_mask=”r” name=”/home/n1/Desktop/abcd” pid=4877 profile=”/home/n1/Desktop/testapp”

#  可以看出 abc 文件在 写入时被“记帐”了,abcd  文件在读取时被“记帐”了。  因为在 /etc/apparmor.d/home.n1.Desktop.testapp 他们没有对应的权限

rm  abc abcd abcde

再执行

代码:

sudo enforce /etc/apparmor.d/home.n1.Desktop.testapp     // 启用“强制”
# 执行这个之后发现 /etc/apparmor.d/home.n1.Desktop.testapp 文件里   flags=(complain) 被去掉了
sudo /etc/init.d/apparmor reload   
./testapp abc  “1abc0011″      # 写入出错
./testapp abcd “2abcd0011″
./testapp abcde  “3abcde0011″
./testapp otherfile “teststest”  # 其它文件名,也是失败
ls abc abcd  abcde       #/// <- 看不到文件abc
echo “i am test” > abc  #  手工创建
./testapp abc
./testapp abcd          #读取出错
./testapp abcde     
cat abcd                # 内容为刚才加入的内容”2abcd0011″
  ## /var/log/syslog  里也有日记
rm abc abcd abcde

查看AppArmor在整个系统的状态

代码:

sudo apparmor_status  # 在启动时应该有
—–
apparmor module is loaded.
17 profiles are loaded.
4 profiles are in enforce  mode.
   …..
   /home/n1/Desktop/testapp
13 profiles are in complain  mode.
   /usr/sbin/traceroute
   …..
5 processes have profiles  defined.
1 processes are in enforce mode :
   /usr/sbin/cupsd (4812)
4  processes are in complain mode.
   …..
   /sbin/syslogd (4574)
0  processes are unconfined but have a profile defined.
——  之类的,

以上是最简单的应用,通过 genprof 创建规则文件,只添加最少需要的文件读写权限规则,
可实现除了文件系统权限以外对某未知程序的读写文件控制。
在规则文件里的文件名路径可带通配符

其它自动化工具包括 logprof  ,autodep,audit,complain,unconfined,查看状态 apparmor_status 等

要取消只要删除apparmor.d 里的文件,重启 apparmor 服务就行

有个问题就是把可执行文件复制到其它目录里就不能限制了

介绍内容来自 http://21nw.com/

  • Apparmor–linux内核强制访问控制 AppArmor(Application Armor)是Linux内核的一个安全模块,AppArmor允许系统管理员将每个程序与一个安全配置文件关联,从而限制程序的功能。简单的说,AppArmor是与SELinux类似的一个访问控制系统,通过它你可以指定程序可以读、写或运行哪些文件,是否可以打开网络端口等。作为对传统Unix的自主访问控制模块的补充,A

  • AppArmor AppArmor 类似于selinux ,主要的作用是设置某个可执行程序的访问控制权限,主要区别就在于apparmor是以路径(path)为基础,而selinux以i节点(inode)为基础 AppArmor是一个高效和易于使用的Linux系统安全应用程序。AppArmor对操作系统和应用程序所受到的威胁进行从内到外的保护,甚至是未被发现的0day漏洞和未知的应用程序漏洞所导致的

  • AppArmor是Linux内核的强制访问控制(MAC)一个实现方案,在Ubuntu等发行版上面默认开启。相比SELinux,AppArmor相对简单易用,更加适合日常使用。现在我们以node_exporter为例,介绍快速应用AppArmor的方法。 安装apparmor-utils apt install -y apparmor-utils 执行aa-genprof root@gw:~# a

  • Apparmor Overview tags: apparmor,安全 {% youtube %} https://www.youtube.com/watch?v=KYM-Dzivnjs {% endyoutube %} 1. 简介 AppArmor 是类似于 Linux 的安全系统的强制访问控制 (MAC)。AppArmor 将单个程序限制在一组文件、功能、网络访问和限制中,统称为程序的 App

  • 零、背景 本系列之前文章讲述了AppArmor的源码下载、安装及使用,其功能基本正常(没有日志功能的问题待查)。但是前提是完全按照默认选项安装AppArmor,尤其是将Python3.10放在了/usr/lib/下。如果是安装在/usr/local/lib/下,则在使用中则会出现一些问题。本文就来描述笔者实际遇到的问题,以及分析排查过程和最终解决方法。 一、问题现象 安装好apparmor之后,在

  • 本文内容参考: AppArmor · GitBook, Linux安全模块AppArmor总结-CSDN博客, AppArmor快速入门-CSDN博客, apparmor 初识(一)_domybest_nsg的博客-CSDN博客, AppArmor与SElinux_apparmor selinux_weixin_45216475的博客-CSDN博客, apparmor_什么是AppArmor?如何

  • AppArmor(Application Armor) 是一个 Linux 内核安全模块,可用于限制主机操作系统上运行的进程的功能。每个 进程都可以拥有自己的安全配置文件。安全配置文件用来允许或禁止特定功能,例如网络访问、文件读/写/执行权限等。 Linux发行版内置:Ubuntu、Debian 3.2.1 Apparmor两种工作模式 • Enforcement(强制模式) :在这种模式下,配置

  • 现在,想想在生产中实施 AppArmor的挑战。 首先,您必须为每个容器构建强大的配置文件,以在不阻塞日常任务的情况下防止攻击。 然后,您将必须跨集群中的所有节点管理多个配置文件。 我们将介绍kube-apparmor-manager如何帮助管理部分,以及Sysdig Secure 中的图像分析功能如何帮助构建这些配置文件。 Kube-apparmor-manager 有一些工具,比如apparm

  • 作者:杨涛涛 资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 引言 A

  • 本文内容参考: AppArmor · GitBook, Linux安全模块AppArmor总结-CSDN博客, AppArmor快速入门-CSDN博客, apparmor 初识(一)_domybest_nsg的博客-CSDN博客, AppArmor与SElinux_apparmor selinux_weixin_45216475的博客-CSDN博客, apparmor_什么是AppArmor?如何

  • @TAOC apparmor命令总结 安装相关工具 sudo apt-get install apparmor-utils 启动、停用、重启apparmor 启用: /etc/init.d/apparmor start 停用: /etc/init.d/apparmor stop 重启: /etc/init.d/apparmor restart 为指定的程序创建一个配置文件: sudo aa-gen

 相关资料
  • 我在Symfony2中有REST API,在AngularJS中有客户端应用。我有用户,用户有Symfony2角色(ROLE_ADMIN,ROLE_USER)。 在security.yml是部分,但在这里我只能设置Symfony2路由路径。 如何阻止对路径的访问,例如: 对于角色为_USER或匿名的用户? (#/某物-是Angular url)

  • 建议你使用声明式访问控制来实现业务网络定义中的访问控制规则。但是,你可以通过获取和测试当前参与者,在交易处理器中实现可编程的访问控制。你可以针对当前参与者的属性运行测试,以允许或拒绝交易处理器函数的执行。 在你开始之前 在你执行这些步骤之前,你必须对业务网络定义中的参与者进行建模,并将其部署为业务网络。你必须创建了这些参与者的一些实例,并向这些参与者发放身份。 下节的过程显示了使用下面参与者模型的

  • cmf_check_user_action($object = "", $countLimit = 1, $ipLimit = false, $expire = 0) 功能 检查用户对某个url内容的可访问性,用于记录如是否赞过,是否访问过等等;开发者可以自由控制,对于没有必要做的检查可以不做,以减少服务器压力 参数 $object: string 要检查权限的用户 ID $countLimit

  • 访问控制限制其他源文件和模块对你的代码的访问。这个特性允许你隐藏代码的实现细节,并指定一个偏好的接口让其他代码可以访问和使用。 你可以给特定的单个类型 (类,结构体和枚举)设置访问级别,比如说属性、方法、初始化器以及属于那些类型的下标。协议可以限制在一定的范围内使用,就像全局常量,变量,函数那样。 除了提供各种级别的访问控制,Swift 为典型场景提供默认的访问级别,减少了显式指定访问控制级别的需

  • 访问控制用于设置访问负载均衡的IP白名单或IP黑名单。 访问控制用于设置访问负载均衡的IP白名单或IP黑名单,在访问控制策略组中仅可以设置IP地址范围,在配置负载均衡实例监听时可设置是否启用访问控制,并设置针对具体的访问控制策略组设置访问白名单或黑名单。 访问控制来源: 同步公有云上被实例上的监听绑定的访问控制,并自动在访问控制缓存里添加一条记录,同步下来的访问控制默认本域共享。 在云管平台上创建

  • 问题内容: 第一个问题 请,请您解释一下如何在MVC中实现最简单的ACL。 这是在Controller中使用Acl的第一种方法… 这是非常糟糕的方法,它的缺点是我们必须将Acl代码添加到每个控制器的方法中,但是我们不需要任何其他依赖项! 下一种方法是制作所有控制器的方法,并将ACL代码添加到控制器的方法中。 它比以前的代码更好,但主要缺点是… 所有控制器的方法都应该是私有的 我们必须将ACL代码添

  • cmf_check_user_action($object = "", $countLimit = 1, $ipLimit = false, $expire = 0) 功能 检查用户对某个url内容的可访问性,用于记录如是否赞过,是否访问过等等;开发者可以自由控制,对于没有必要做的检查可以不做,以减少服务器压力 参数 $object: string 访问对象的id,格式:不带前缀的表名+id;如

  • 主要内容:1. 主机访问控制,2. 任意变量的访问控制,3. 使用mod_rewrite进行访问控制访问控制可以由几个不同的模块完成。其中最重要的模块是和。本文中还将讨论使用来实现访问控制。 1. 主机访问控制 如果您希望根据访问者的主机地址限制访问您网站的某些部分,则可以使用轻松完成此操作。 提供了各种允许或拒绝访问资源的不同方法。结合,和指令,这些要求可以以任意复杂的方式组合,以强制执行您的访问策略。 这些指令的用法是: 在第一种形式中,地址是完全限定的域名(或部分域名); 如果需要,您可以