SELinux基础与AppArmor
一 SELinux
SELinux(Secure Enhanced Linux):安全增强的Linux 是一个Linux安全策略机制,允许管理员更加灵活的定义安全策略。
SELinux是一个内核级的安全机制,从2.6内核之后,集成到Linux内核中。SELinux定义了两个基本概念:
1.域:对进程进行限制;
2.上下文:对文件进行限制;
SELinux有很多预置策略,通常不需要自定义策略,除非需要对自定义程序、服务进行SELinux保护。CentOS/RHEL默认使用目标策略。
常用命令:
显示文件的SELinux上下文信息:ls -Z
显示进程的SELinux域信息:ps -Z
恢复一个文件的默认SELinux上下文:restorecon -R /var/www
修改一个文件的SELinux上下文:chcon --reference=/etc/named.conf.orig /etc/named.confSELinux有三种工作模式:
enforcing 强制模式。任何违反策略的行为都会被禁止,并且产生警告信息。
permissive 允许模式。违反策略的行为不会被禁止,只产生警告信息。
disabled 关闭SELinux。SELinux模式可以通过修改配置文件:/etc/sysconfig/selinux进行修改。
命令getenforce可以查看当前SELinux工作模式。
命令setenforce可以修改当前SELinux工作模式。
二 AppArmor
AppArmor同样是内核级别的安全机制,集成于内核中。与SELinux的最大区别是AppArmor使用路径名作为安全标签,而SELinux使用文件的inode
作为安全标签。
AppArmor通过一个配置文件来指定一个应用程序的相关权限。
配置文件的工作模式:
enforce:对程序的行为进行限制(依照配置文件),并对于违反限制的程序进行日志记录。
complain:不对程序的行为进行限制,只对程序的行为进行记录。
比较有用的命令:
自动生成程序的配置文件:aa-genprof
设置配置文件的工作模式: aa-enforce lightdm-guest-session / aa-complain light-guest-session
查看AppArmor当前的状态:apparmor_status
显示拥有tcp/udp端口,但未处于apparmor监控下的进程:aa-unconfined
配置文件的格式(自动生成的):
#include <tunables/global>
/usr/bin/mtr {
#include <abstractions/base>
/usr/bin/mtr mr, # 允许可执行映射,可读
}