linux基础学习第二十一天之SElinux

内容:

SElinux简介和使用


1、SElinux简介

SELinux: Secure Enhanced Linux,是美国国家安全局「NSA=The National Security Agency」和SCC(Secure Computing Corporation)开发的Linux的一个强制访问控制的安全模块。2000年以GNU GPL发布,Linux内核2.6版本后集成在内核中

2、SElinux和普通linux区别:

DAC:Discretionary Access Control自由访问控制

MAC:Mandatory Access Control 强制访问控制

DAC环境下进程是无束缚的

MAC环境下策略的规则决定控制的严格程度

MAC环境下进程可以被限制的

策略被用来定义被限制的进程能够使用那些资源(文件和端口)

默认情况下,没有被明确允许的行为将被拒绝

没有SElinux的linux系统就是DAC模式的,在该模式下,进程是无约束的,如以root身份运行的进程拥有一切权限

在SELinux中没有root这个概念,安全策略是由管理员来定义的,任何软件都无法取代它。这意味着那些潜在的恶意软件所能造成的损害可以被控制在最小。一般情况下只有非常注重数据安全的企业级用户才会使用SELinux。

SELinux提供了一种灵活的强制访问控制(MAC)系统,且内嵌于Linux Kernel中。SELinux定义了系统中每个【用户】、【进程】、【应用】和【文件】的访问和转变的权限,然后它使用一个安全策略来控制这些实体(用户、进程、应用和文件)之间的交互,安全策略指定如何严格或宽松地进行检查。

只有同时满足了【标准Linux访问控制】和【SELinux访问控制】时,主体才能访问客体。

MAC与DAC的最大区别就是:DAC只针对用户的权限,如,root,对所有文件都有至高的权限,或者一个文件的权限是664,那么这个文件的拥有者就拥有了读写的权限,而在MAC的模式下,即使是root,在使用不同程序时,你所取得的权限不一定是root,而要看当时该程序的设定而定,如此来,MAC体系中,针对的就是进程而不是用户的权限。

3、SElinux的运行机制

当一个subject(如: 一个应用)试图访问一个object(如:一个文件),Kernel中的策略执行服务器将检查AVC (Access Vector Cache), 在AVC中,subject和object的权限被缓存(cached)。如果基于AVC中的数据不能做出决定,则请求安全服务器,安全服务器在一个矩阵中查找“应用+文件”的安全环境。然后根据查询结果允许或拒绝访问,拒绝消息细节位于/var/log/messages中。

4、selinux的配置文件:

/etc/selinux/config或者/etc/sysconfig/selinux

[10:59 [email protected]/var/ftp/pub]# ll /etc/selinux/config 
-rw-r--r--. 1 root root 458 Jul 20 02:18 /etc/selinux/config
[10:59 [email protected]/var/ftp/pub]# ll /etc/sysconfig/selinux 
lrwxrwxrwx. 1 root root 17 Jul 20 02:18 /etc/sysconfig/selinux -> ../selinux/config

该配置文件定义了:

1) 打开或关闭SELinux

2) 设置系统执行哪一个策略(policy)

3) 设置系统如何执行策略(policy)

[19:48 [email protected]/usr/src/linux]# cat /etc/selinux/config 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

5、SElinux的策略类型

SELinux有四种策略类型:

strict: centos5,每个进程都受到selinux的控制

targeted: 用来保护常见的网络服务,仅有限进程受到selinux控制,只监控容易被入侵的进程,rhel4只保护13个服务,rhel5保护88个服务

minimum:centos7,修改过的targeted,只对选择的网络服务

mls:提供MLS(多级安全)机制的安全性

minimum和mls稳定性不足,未加以应用

其中centos5,6只有targeted和strick两种策略,一般默认是targeted策略,主要针对一些网络服务来进行监管,如http、samba等

6、查看SElinux的安全上下文(secure context)

如果开启了SElinux,在10为权限后面会有一个点(.)的标志

[10:59 [email protected]/var/ftp/pub]# ll
total 12
drwxr-xr-x. 2 root root 4096 Sep 14 09:57 hello
-rw-r--r--. 1 root root 1192 Sep 14 09:58 ks6.cfg
-rw-r--r--. 1 root root 1368 Sep 14 10:11 mylinux-ks.cfg
[11:05 [email protected]/var/ftp/pub]# ll -Z
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 hello
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 ks6.cfg
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 mylinux-ks.cfg

7、安全上下文(secure context)

所有操作系统访问控制都是以关联的客体和主体的某种类型的访问控制属性为基础的。在SELinux中,访问控制属性叫做安全上下文。所有客体(文件、进程间通讯通道、套接字、网络主机等)和主体(进程)都有与其关联的安全上下文,一个安全上下文由三部分组成:用户、角色和类型标识符。常常用下面的格式指定或显示安全上下文:

安全上下文有五个元素组成:

user:role:type:sensitivity:category

User:指示登录系统的用户类型,如root,user_u,system_u,多数本地进程都属于自由(unconfined)进程【以XXX_u表示】

Role:定义文件,进程和用户的用途:文件:object_r,进程和用户:system_r【以XXX_r表示】

Type:指定数据类型,规则中定义何种进程类型访问何种文件Target策略基于type实现,多服务共用:public_content_t【以XXX_t表示】

Sensitivity:限制访问的需要,由组织定义的分层安全级别,如unclassified,secret,top,secret, 一个对象有且只有一个sensitivity,分0-15级,s0最低,Target策略默认使用s0

Category:对于特定组织划分不分层的分类,如FBI Secret,NSA secret, 一个对象可以有多个categroy,c0-c1023共1024个分类,Target 策略不使用cateaory

在targeted模式下,主要的关键策略就是看domain/type是否符合已定的策略,所谓的domain值得就是程序本身,而type指的是file type,只有file type在domain本身可执行的范围内,该程序才能进程访问文件,当然就算符合了策略,还要看文件本身的权限,等于有两层保险。

8、SElinux的相关命令操作

(1)

getenforce: 获取selinux当前状态

sestatus:查看selinux状态

setenforce 0|1

0: 设置为permissive(每个受限的进程违规操作不会被禁止,但会被记录于审计日志)

1: 设置为enforcing(强制,每个受限的进程都必然受限)

(2)

给文件重新打安全标签:

chcon[OPTION]... [-u USER] [-r ROLE] [-t TYPE] FILE...

chcon[OPTION]... --reference=RFILE FILE...

-R:递归打标;

恢复目录或文件默认的安全上下文:

restorecon [-R] /path/to/somewhere

(3)

semanage:默认安全上下文查询与修改,semanage来自policycoreutils-python包,要使用semanage要先安装policycoreutils-python包

查看默认的安全上下文

semanage fcontext –l

添加安全上下文

semanage fcontext -a –t httpd_sys_content_t‘/testdir(/.*)?’

restorecon –Rv /testdir

删除安全上下文

semanage fcontext -d –t httpd_sys_content_t‘/testdir(/.*)?’

查看端口标签

semanageport –l

添加端口

semanage port -a -t port_label-p tcp|udpPORT

semanage port -a -t http_port_t -p tcp 9527

删除端口

semanage port -d -t port_label-p tcp|udpPORT

semanage port -d -t http_port_t -p tcp 9527

修改

semanage port -m -t port_label-p tcp|udpPORT

semanage port -m -t http_port_t-p tcp9527

(4)

布尔型规则:

getsebool

setsebool

查看bool命令:

getsebool[-a] [boolean]

semanageboolean –l

semanageboolean -l –C 查看修改过的布尔值

设置bool值命令:

setsebool [-P] booleanvalue

setsebool [-P] Boolean=value

时间: 2024-08-28 22:07:17

linux基础学习第二十一天之SElinux的相关文章

linux基础学习第二十一天之自动化安装linux系统(kickstart)

内容: 利用kickstart进行自动化安装linux系统 制作光盘.U盘启动盘 一.系统自动化安装: 1.anaconda 由前面的学习我们知道,系统的启动流程: bootloader-->kernel(initramfs)-->rootfs-->/sbin/init 所以,bootloader完全可以由光盘来进行引导,在引导的过程中在借助kickstart来进程自动安装 Anaconda是RedHat.CentOS.Fedora等Linux的安装管理程序.它可以提供文本.图形等安装管

linux基础学习笔记——操作大全

作者:liaoyi 更新时间:2014-6-2 ****************基本操作***************** 关机 shutdown -h now    root用户               init 0              root用户halt      root+一般用户poweroff 重启shutdown -r now    root用户init6     root用户reboot            root+一般用户 注意:1.shutdown 比较灵活,可

c/c++unix/linux基础学习笔记-常用命令和vi的使用

linux 基本命令的使用-命令在ubuntu下面执行,有些命令通用其他linux,有些不通用. 多条命令间用;号隔开,回车后可以一起执行. clear-前屏,pwd显示当前目录,cd跳转目录. sudo [命令]  -ubuntu 下以管理员身份运行命令. 一般情况下,运行当前目录下的程序,要用 ./文件名 执行. 查看当前shell名称:ps 进入另外一个shell,直接输入shell名称:ksh/tcsh/sh/bash,退出一个shell用:exit. 切换shell命令,如:exec

Linux基础学习-crond系统计划任务

系统计划任务 大部分系统管理工作都是通过定期自动执行某个脚本来完成的,那么如何定期执行某个脚本,从而实现运维的自动化,这就要借助Linux的cron功能了. 计划任务分为一次性计划任务和周期性计划任务. 一次性计划任务 每晚11店30分开启网站服务. 周期性计划任务 每周一的凌晨3点30分把/var/www/html目录打包备份为backup.tar.gz 顾名思义,一次性计划任务只执行一次,一般用于满足临时的工作需求,可以使用at命令实现. 如果你的Linux没有此命令可以使用yum inst

linux基础学习【4】

系统进程 一.什么是进程 进程 : 一个正在运行中的程序 程序被触发后,执行者的权限与属性,程序的程序码与所需数据等都会被载入内存中,操作系统会给予这个内存内的单元一个识别码 (PID). 二.查看进程 1.图形方式查看 命令:`gnome-system-monitor` 2.进程查看命令 命令:`ps` ps -A/-e 显示所有(包括不同终端不同用户)进程(PID,TTY,TIME,CMD) ps -a 当前环境中运行的进程,不包含环境信息(PID,TTY,TIME,CMD) ps -u (

linux基础学习【5】

sshd服务,服务管理及文件传输 一.控制服务 1.什么是服务 2.用什么控制服务 系统初始化进程可以进行相应的控制 3.当前系统初始化进程是什么 systemd 系统初始化进程 pstree 显示系统中的进程树 进程树 4.系统控制命令 ssh(client)客户端---->sshd(server)服务器 命令:`systemctl` systemctl status sshd 查看sshd服务的状态inactive(不可用)/active(可用) systemctl start sshd 开

linux基础学习随笔【根本没有排序哈】

直接整:init 3 5 6 0;init 3代表切换到字符界面,5代表切换到图形界面:6表示重启,等同于reboot:0表示关机=poweroff:改主机名:hostnamectl set-hostname centos7.localdomain;[记不住,TAB键补全]查看操作系统linux版本:cat /etc/centos-release;或者通过安装lsb_release -a ;查看内核版本: uname -rlscpu 查看CPU使用情况:lsblk查看硬盘:free - h查看内

一篇文章带你入门Linux——马哥Linux基础学习笔记

1.课程体系: 中级: 初级:系统基础 中级:系统管理.服务安全及服务管理.Shell脚本: 高级: MySQL数据库: cache & storage 集群: Cluster lb: 4layer 7layer ha: 分布式: zookeeper 分布式文件系统 虚拟化技术: xen kvm Openstack:IAAS云: 运维工具: ansible puppet(ruby), saltstack(python) 监控工具: zabbix 大数据处理: hadoop spark, stor

linux基础学习四

本次继续学习linux基础命令,包括stat.touch.cp.mv.rm.tree.mkdir.rmdir stat 命令格式 stat [OPTION]... FILE... 命令功能 显示文件的时间戳,即访问时间.修改时间和改变时间 stat [OPTION]... FILE...      [[email protected] ~]# stat newfile       File: `newfile'      Size: 0          Blocks: 0          I