【linux基础】23、SElinux基础

一、SElinux概述

1、SElinux简介

SEliunx: Secure Enhanced Linux  安全增强的linux

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

DAC:自主访问控制

依据进程的所有者与文件资源的rwx权限来决定有无访问能力

DAC环境下进程是无束缚的

控制能力太弱,安全性低

MAC:强制访问控制

以策略规则制定特定程序读取特定文件

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

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

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

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

安全上下文:process --> resource

沙箱:sandbox

1个进程启动后,进程所能访问的资源不再是全局而是有限的

2、SElinux的运行模式

SElinux是通过MAC方式的方式管理进程,它控制的主体为进程,而目标则是该进程能否读取的“文件资源”

系统上的所有操作大致都可以归类为:一个主语对宾语进行操作

一个进程操作一个资源就是:主 谓 宾

主体:subject,主语

SElinux主要管理的就是进程,所以这里可以将主体就当作进程

目标:object,宾语

主体进程能否访问的目标资源,一般就是文件系统。 所有可以读取的对象,包括文件、目录和进程,端口等

3、策略 policy

由于进程和文件的数量庞大,因此SElinux会根据某些服务制定基本的安全访问策略。这些策咯内还会有较为详细的规则(rule)来指定不同的服务开放某些资源的访问与否。

目前的策略(SElinux工作类型)有四种:

[[email protected] ~]# 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=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

strict:每个进程都受到selinux的控制                #centos5默认使用的策略?

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

minimum:修改过的targeted,只对选择的网络服务         #centos7默认使用的策略

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

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

SELinux中对所有的文件都赋予一个type的文件类型标签,对于所有的进程也赋予各自的一个domain(域)的标签。domain标签能够执行的操作由安全策略里定义。

当一个subject试图访问一个object,Kernel中的策略执行服务器将检查AVC (访问矢量缓存Access Vector Cache), 在AVC中,subject和object的权限被缓存(cached),查找“应用+文件”的安全环境。然后根据查询结果允许或拒绝访问

selinxu规则库:

规则:哪种域能访问那种或那些种类型的文件

4、SELinux安全上下文

传统Linux,一切皆文件,由用户,组,权限控制访问

在SELinux中,一切皆对象,由存放在Inode的扩展属性域的安全元素所控制其访问。

所有文件、端口资源和进程都具备安全标签这就是SElinux安全上下文” ( security context)

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

SElinux启动后,为每一个资源引入5种属性:用户,角色,类型 #对于centos只有3种属性有效

user:role:type:sensitivity:category

user_u:object_r:tmp_t:s0:c0

[[email protected] html]# ls -Z
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html
[[email protected] html]# ps auxZ|grep httpd
unconfined_u:system_r:httpd_t:s0 root     2904  0.3  0.2 177812  3892 ?        Ss   07:39   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   2932  0.0  0.1 177812  2524 ?        S    07:39   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   2933  0.0  0.1 177812  2500 ?        S    07:39   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   2934  0.0  0.1 177812  2500 ?        S    07:39   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   2935  0.0  0.1 177812  2500 ?        S    07:39   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   2937  0.0  0.1 177812  2500 ?        S    07:39   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   2940  0.0  0.1 177812  2500 ?        S    07:39   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   2942  0.0  0.1 177812  2500 ?        S    07:39   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   2943  0.0  0.1 177812  2500 ?        S    07:39   0:00 /usr/sbin/httpd
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 2946 1.0  0.0 103256 880 pts/1 S+ 07:39   0:00 grep httpd

实际上下文:存放在文件系统中,可以使用ls –Z和ps –Z命令查看

期望(默认)上下文:存放在二进制的SELinux策略库(映射目录和期望安全上下文)中

查看命令: semanage fcontext –l

4、SELinux的五个安全因素

SElinux为每个文件提供了安全标签,也为进程提供了安全标签;

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

Role:定义文件,进程和用户的用途

文件:object_r,进程和用户:system_r

Typ:指定数据类型,规则中定义何种进程类型访问何种文件,Target策略基于type实现

多服务共用: public_content_t

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

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

二、设置SElinux

chcon restorecon

改标签

chcon

-t type:修改为指定类型

-R 递归

--reference=RFILE:以RFTIE为参照

-u user

-r role

restorecon

-R 改回原来的属性

修改受selinux控制的文件的属性

setsebool

-P 永久生效

开放匿名用户上传

allow_ftpd_anon_write on

allow_ftpd_full_access on

getsebool

-a

rsylog:

日志:历史日志

级别:

syslog syslogd klogd

facility:设施,从功能或程序上对日志进行分类,并由专门的工具复制记录其日志

centos6 rsyslog

ModLoad imudp加载udp协议

-:表示异步写入

日志收集、分析工具:

logstash

分析工具hadoop

作业:

分析rsylog产生的日志

把日志计入mysql数据库

使用loganalyzer分析

分析httpd日志

webanalyzer

awstats

时间: 2024-08-11 12:28:14

【linux基础】23、SElinux基础的相关文章

Linux系统自动化安装基础

Linux系统自动化安装基础 安装程序CentOS系统安装系统启动流程:bootloader-->kernel(initramfs)-->rootfs-->/sbin/init注意:安装过程中与启动过程中的文件不同 anaconda系统安装程序tui: 基于图形库curses的文本窗口gui:图形窗口 安装程序启动过程MBR: boot.catstage2: isolinux/isolinux.bin配置文件: isolinux/isolinux.cfg每个对应的菜单选项:加载内核: i

Linux安全与加密基础(二)

Linux安全与加密基础(二) 常见的加密算法 SSL: Openssl与CA认证 ssh服务 dropbear AIDE sudo gpg gpg亦可用于对称加密与文件检验. 文件完整性的两种实施方式 被安装的文件     MD5单向散列     rpm --verify package_name (or -V) 发行的软件包文件     GPG公钥签名     rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*     rpm --checks

Linux运维常见基础面试练习题(2)

Linux运维常见基础面试练习题(2) 11 如何查看占用端口8080的进程. 方法一 [[email protected] data]# ps -ef|grep 8080 root       3886   3804  0 17:11 pts/1    00:00:00 grep 8080 [[email protected] data]# 12 Linux所有服务的启动脚本都存放在(/etc/rc.d/init.d )目录中. A /etc/rc.d/init.d  B /etc/init.

Linux最常用的基础命令 下篇

Linux最常用的基础命令个人总结 shell脚本 脚本就是:写一堆指令存成一个文本,用于完成一些小任务 a="123" linux中定义一个变量 echo $a echo $b 显示的是空 echo $master 打印的是根/ ----------------------------------- Ubuntu中安装一个vim apt-get install -y vim ----------------------------------- /etc/bashrc 对整个系统中的

61   Linux系统调优基础

01 Linux系统调优基础 #显示进行在哪个cpu上运行 [[email protected] ~]# ps axo psr,     2 ntpd   1 qpidd   3 pickup   3 sshd   0 bash   2 pscomm     #显示进行在哪个cpu上运行,并显示进程的pid  [[email protected] ~]# ps axo psr,comm,pid   2 ntpd             3775   1 qpidd            9998

OC基础(23)

NSArray基本概念 NSArray 遍历 NSArray排序 NSArray文件读写 NSArray 与字符串 *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30p

Linux学习系列——零基础开始

第一部分 Linux基础命令 1.查看系统信息命令 2.Linux内核版本 Linux学习系列--零基础开始,布布扣,bubuko.com

Linux服务器入侵检测基础

最近遇到了很多服务器被入侵的例子,为了方便日后入侵检测以及排查取证,我查询了一些linux服务器入侵取证的相关资料,并在此总结分享,以便日后查询. 一般服务器被入侵的迹象,包括但不局限于:由内向外发送大量数据包(DDOS肉鸡).服务器资源被耗尽(挖矿程序).不正常的端口连接(反向shell等).服务器日志被恶意删除等.那么既然是入侵检测,首先要判断的是服务器是否被入侵,必须排除是管理员操作不当导致的问题,因此入侵检测的第一项工作就是询问管理员服务器的异常现象,这对之后入侵类型的判断非常重要. 在

Linux Shell学习之基础篇

在学习Linux和OpenStack过程中,感觉不管是大规模部署部署还是运维,Shell脚本都已经是标配,所以学好脚本很有必要. 以下仅为Linux Shell的一些基础笔记,这里作为笔记记下. ===============linux shell简介====================== 1.命令补全:连续按两次Tab   文件或者文件夹补全:一次Tab   命令帮助:--help 2.chmod u=rwx,g+w,o+r filename   chown root.root file

Linux C 程序设计多线程基础篇

   Linux C 程序设计多线程基础篇 题记:因为 Linux 网络入侵检测系统的设计与实现希望使用多线程,因此希望系统的学习一下 Linux C程序设计多线程的知识 注意事项:因为 pthraed 库不是 Linux 系统默认的库,因此在进行多线程开发的时候,需要加上头文件#include <pthread.h>,编译时要加参数 -lpthread;了:gcc thread.c -o thread -lpthread. 进程和线程: 进程是程序执行,资源分配的基本单位,每个进程都拥有自己