• SElinux


    SELinux 介绍

    	SELinux: 
    		Secure Enhanced Linux,是美国国家安全局(NSA=The National Security Agency) 和SCC(SecureComputing Corporation)开发的Linux 的一 个强制访问控制的安全模块。
    	DAC :Discretionary Access Control 自由访问控制
    	MAC :Mandatory Access Control  强制访问控制
    		DAC 环境下进程是无束缚的
    		MAC 环境下策略的规则决定控制的严格程度
    		MAC 环境下进程可以被限制的
    		策略被用来定义被限制的进程能够使用那些资源(文件和端口)
    		默认情况下,没有被明确允许的行为将被拒绝
    

    SELinux 工作类型

    	SELinux 有四种工作类型:
    		strict:
    			centos5, 每个进程都受到selinux 的控制
    		targeted:
    			用来保护常见的网络服务, 仅有限进程受到selinux 控制,只监控容易被入侵的进程,centos4 只保护13个服务,centos5 保护88 个服务
    		minimum:
    			centos7, 修改的targeted,只对选择的网络服务进行保护
    		mls:
    			提供MLS(多级安全)机制的安全性
    	targeted 为默认类型,minimum 和mls稳定性不足,未加以应用,strict 已不再使用
    

    SELinux 安全上下文

    	传统Linux,一切皆文件,由用户,组,权限控制访问
    	在SELinux 中,一切皆对象(object),由存放在inode的扩展属性域的安全元素所控制其访问
    	所有文件和端口资源和进程都具备安全标签,安全上下文(security context) 
    	安全上下文有五个元素组成:
    		user:role:type:sensitivity(敏感性):category(种类)
    		user_u:object_r:tmp_t:s0:c0
    	实际上下文:
    		存放在文件系统中
    		ls –Z;ps –Z
    	期望( 默认) 上下文 :
    		存放在二进制的SELinux 策略库(映射目录和期望安全上下文)中
    		semanage fcontext –l
    

    五个安全元素

    	User: 
    		指明登录系统的用户类型, 如root,user_u,system_u,多数本地进程都属于自由(unconfined )进程
    	Role:
    		定义文件,进程和用户的用途:
    		文件:object_r ;
    		进程和用户:system_r
    	Type:
    		指定数据类型,规则中定义何种进程类型访问何种文件,Target 策略基于type 实现, 多服务共用public_content_t
    	Sensitivity:
    		限制访问的需要,由组织定义的分层安全级别,如unclassified, secret(秘密),top, 一个对象有且只有一个sensitivity, 分0-15 级,s0 最低,Target 策略默认使用s0
    	Category :
    		对于特定组织划分不分层的分类,如FBI Secret,NSA secret,  一个对象可以有多个categroy, c0-c1023共1024个分类,Target 策略不使用category
    

    SELinux 策略

    	对象(object):
    		所有可以读取的对象,包括文件、目录和进程,端口等
    	主体:
    		进程称为主体(subject)
    	SELinux 中对所有的文件都赋予一个type的文件类型标签,对于所有的进程也赋予各自的一个domain 的标签。domain 标签能够执行的操作在安全策略里定义。
    	当一个subject试图访问一个object,Kernel中的策略执行服务器将检查AVC ( 访问矢量缓存Access Vector Cache)。
    	在 AVC中,subject 和object 的权限被缓存(cached) ,查找“应用+文件”的安全环境,然后根据查询结果允许或拒绝访问。
    	安全策略:
    		定义主体读取对象的规则数据库,规则中记录了哪个类型的主体使用哪个方法读取哪一个对象是允许还是拒绝的,并且定义了哪种行为是充许或拒绝。
    

    设置SELinux

    	配置SELinux:
    		SELinux 是否启用
    		给文件重新打安全标签
    		给端口设置安全标签
    		设定某些操作的布尔型开关
    		SELinux的日志管理
    	SELinux 的状态:
    		enforcing:强制,每个受限的进程都必然受限
    		permissive:允许,每个受限的进程违规操作不会被禁止,但会被记录于审计日志
    		disabled:禁用(需要重启机器才能生效)
    	相关命令:
    		getenforce: 获取selinux 当前状态
    		sestatus: 查看selinux 状态
    		setenforce 0|1(临时设置)
    		0:  设置为permissive
    		1:  设置为enforcing
    		
    	配置文件:
    		/boot/grub/grub.conf
    			使用selinux=0 禁用SELinux
    		/etc/selinux/config
    		/etc/sysconfig/selinux
    			SELINUX={disabled|enforcing|permissive}
    

    修改SELinux 安全标签

    	给文件重新打安全标签:
    		chcon - change file SELinux security context
    		chcon [OPTION]... CONTEXT FILE...
    		chcon [OPTION]... [-u USER] [-r ROLE] [-t TYPE] FILE...
    		chcon [OPTION]... --reference=RFILE FILE...
    			-R :	递归打标  
    			--dereference      	affect the referent of each symbolic link (this is the default), rather than the symbolic link itself
    			-h, --no-dereference   	affect symbolic links instead of any referenced file
    			-u, --user=USER        	set user USER in the target security context
    			-r, --role=ROLE        	set role ROLE in the target security context
    			-t, --type=TYPE        	set type TYPE in the target security context
    			-l, --range=RANGE      	set range RANGE in the target security context
    			--no-preserve-root  	do not treat '/' specially (the default)
    			--preserve-root   	fail to operate recursively on '/'
    			--reference=RFILE  	use RFILE's security context rather than specifying a CONTEXT value
    			-R, --recursive        	operate on files and directories recursively
    			-v, --verbose          	output a diagnostic for every file processed
    			-H                     	if a command line argument is a symbolic link to a directory, traverse it
    			-L                     	traverse every symbolic link to a directory  encountered
    			-P                     	do not traverse any symbolic links (default)
    			
    	恢复目录或文件默认的安全标签:
    		restorecon - restore file(s) default SELinux security contexts.
    		restorecon [-R] [-n] [-p] [-v] [-e directory] pathname...
    		restorecon -f infilename [-e directory] [-R] [-n] [-p] [-v] [-F]
    		restorecon [-R] /path/to/somewhere
    		-R -r  change files and directories file labels recursively
    

    默认安全上下文查询与修改

    	Semanage :
    		来自policycoreutils-python包
    		semanage - SELinux Policy Management tool
    		semanage [-h] {import,export,login,user,port,interface,module,node,fcontext,boolean,permissive,dontaudit}
    			import             	Import local customizations
    			export              	Output local customizations
    			login               	Manage login mappings between linux users and SELinux confined users
    			user                	Manage SELinux confined users (Roles and levels for an SELinux user)
    			port                	Manage network port type definitions
    			interface           	Manage network interface type definitions
    			module              	Manage SELinux policy modules
    			node                	Manage network node type definitions
    			fcontext            	Manage file context mapping definitions
    			boolean             	Manage booleans to selectively enable functionality
    			permissive          	Manage process type enforcement mode
    			dontaudit           	Disable/Enable dontaudit rules in policy
    		
    	看默认的安全上下文
    		semanage fcontext –l
    	添加安全上下文
    		semanage fcontext -a –t httpd_sys_content_t‘/testdir(/.*)?’
    		restorecon –Rv /testdir
    	删除安全上下文
    		semanage fcontext -d –t httpd_sys_content_t‘/testdir(/.*)?’
    	查看端口标签
    		semanage port –l
    	添加端口
    		semanage port -a -t port_label -p tcp|udp PORT
    		semanage port -a -t http_port_t -p tcp 9527
    	删除端口
    		semanage port -d -t port_label -p tcp|udp PORT
    		semanage port -d -t http_port_t -p tcp 9527
    	修改现有端口为新标签
    		semanage port -m -t port_label -p tcp|udp PORT
    		semanage port -m -t http_port_t -p tcp 9527
    

    SELinux 布尔值

    	布尔型规则:
    		getsebool
    			getsebool - get SELinux boolean value(s)
    			getsebool [-a] [boolean]
    		setsebool
    			setsebool - set SELinux boolean value
    			setsebool [ -PNV ] boolean value | bool1=val1 bool2=val2 ...
    	查看bool 命令:
    		getsebool [-a] [boolean]
    		semanage boolean –l
    		semanage boolean -l –C  查看修改过的布尔值
    	设置bool 值命令:
    		setsebool [-P] boolean value (on,off) 
    		setsebool [-P] Boolean=value (0 ,1) 
    

    SELinux 日志管理

    	yum install setroubleshoot(重启生效)
    		将错误的信息写入/var/log/message
    	grep setroubleshoot /var/log/messages
    	sealert -l UUID
    		查看安全事件日志说明
    	sealert -a /var/log/audit/audit.log
    		扫描并分析日志
    

    SELinux 帮助

    	yum –y install selinux-policy-devel ( centos7.2)
    	yum –y install selinux-policy-doc
    	mandb | makewhatis
    	man -k _selinux
    
  • 相关阅读:
    js,jQuery 排序的实现,网页标签排序的实现,标签排序
    SQL不规则排序,ORDER BY 不规则排序,case的使用
    XML methods are not allowed in a GROUP BY clause.XML不允许使用排序方法的处理
    DropDownList设置选定项,设置选择项,最安全的方法
    js 字符串转成货币格式, js转货币
    排名进入20000纪念
    jQuery对象和Dom对象互相转换
    屏蔽页面JS错误,拦截页面JS错误的代码,js禁止跳出错误提示
    枚举,以及中文对应解释
    insert into插入表,插入多条数据,sql插入表,插入多条数据,数据库插入表,插入多条数据
  • 原文地址:https://www.cnblogs.com/shenxm/p/8451893.html
Copyright © 2020-2023  润新知