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. 主机访问控制 如果您希望根据访问者的主机地址限制访问您网站的某些部分,则可以使用轻松完成此操作。 提供了各种允许或拒绝访问资源的不同方法。结合,和指令,这些要求可以以任意复杂的方式组合,以强制执行您的访问策略。 这些指令的用法是: 在第一种形式中,地址是完全限定的域名(或部分域名); 如果需要,您可以