Chinaunix首页 | 论坛 | 博客
  • 博客访问: 451961
  • 博文数量: 191
  • 博客积分: 10987
  • 博客等级: 上将
  • 技术积分: 1924
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-22 09:52
文章分类

全部博文(191)

文章存档

2014年(10)

2011年(11)

2010年(38)

2009年(132)

分类: LINUX

2009-05-19 06:13:46

 

一:SElinux(安全增强linux简介)                

1:使用SElinux可以将进程放入在特定的SElinux域,同时赋予系统上的资源(如文件,网络套接字,系统调用等)SElinux上下文。装入SElinux的策略(通常作为系统启动过程的一部分),然后决定哪个进程域可以访问哪些资源上下文。

2:在红帽企业版linux 5中,有关SElinux的选择有下面几种:

(1)       我是否需要启用SElinux

(2)       一旦启用,我需要SElinux处于允许(permissive)还是强制(enforcing)状态。

(3)       我需要在文件上赋予什么样的SElinux上下文。

3:在实际工作中,红帽企业版linux 5支持一种SElinux策略,叫目标策略(targeted.这个策略在大多数应用之中。在目标策略之中,只有目标进程受到SElinux的影响。而其他进程运行在非限制模式下。目标策略只影响常用的网络应用程序。受到限制的服务在200个以上,有增加的趋势。SElinux限制的典型应用程序如下:

(1)       dhcp

(2)       httpd

(3)       mysqld

(4)       named

(5)       nscd    (???)

(6)       ntpd    (???)

(7)       portmap

(8)       postgres  (???)

(9)       snmpd    (???)

(10)   squid

(11)   syslogd

4:启用SElinux

/etc/sysconfig/selinux  setenforce   getenforce

   /etc/sysconfig/selinux

(1)    强制(enforcing:任何违法SElinux的操作都被禁止。

(2)    允许(permissive:任何违反SElinux的操作都会受到一个警告信息。但是行动可以继续。

(3)    停用(disabled:不启用SElinux策略。

 

Setenforcegetenforce命令

Setenforce 0/1     0 表示允许;1 表示强制

Getenforce        查看当前SElinux的状态。

5:查看SElinux上下文

 使用命令 ps –Z ls –Z

每个进程都属于个SElinux域;

每个文件都被赋予一个SElinux上下文。

相关的域和上下文可以使用lsps命令的命令选项 –Z 来显示

进程SElinux域和SElinux上下文,具有以下格式:

System_uobject_rhttpd_execs0

说明:

上面的字段以冒号作为分隔符,

第一个字段:用户

第二个字段:角色

第三个字段:类型

第四个字段:与MLS,MCS有关

说明:

SEliunx目标策略只于第三个字段有关,即类型字段(TYPE.

二:SElinux介绍

SElinux是美国国家安全局为linux系统设计的一项开放源码项目,主要是希望将其作为系统的最后一道防线,来抵御黑客的攻击和入侵系统。

1.  常见的读取控制

1.1   DAC Discretionary Access Control任意式读取控制。在DAC的架构下,每个对像都会记录一个拥有者的信息。只要是对象的拥有者,就可以获得该对象的完全控制权限。DAC允许拥有者完全权限。其他需要读取该对象时候,必须授予适当的权限。但是每个对象仅有一组拥有者的信息,如果需要更复杂的读取控制能力,必须使用ACLACL的全名是“访问控制列表(Access Control List)”.DAC的延伸。在ACL环境下,你可以不同的用户设置一组权限。如此一来,就可以对不同的用户设置不同的权限了。

1.2   MAC Mandatory Access Control)“强制性读取控制”.MAC架构下,会为每一个对象添置一个安全的上下文(Security Context.进程和用户除了具备传统的的权限之外,还必须获得SElinux的授权,方能读取对象。

1.2.1          RBAC

     RBAC全称是“角色基础读取控制”(Role-based Access Control,在此架构下,是以用户所属的角色进行读取权限判定的动作的。如:老板的可以读取哪些对象,经理可以读取哪些对象。等

1.2.2          MLS

     MLS全名是“多层次安全”(Mulit-Level Security,在此架构下,是以对象的机密等级来决定进程对该物的读取权限的。

2SElinux

   SElinux是一个在内核中执行,提供MAC能力的子系统,以弥补传统的DAC架构的不足。SElinux子系统以“类型强制性”读取控制机制为主,并融合RBACMLSMCS 3MAC读取控制机制的特性。

   2.1 什么是类型强制性的读取控制机制?

       SElinux世界里,定义了许多的类型(TYPE.每一个进程,文件,设备,网络连线等,都必须标示其所属的类型。进程仅能读取相同类型的文件,如果非相关的类型,且SEliunx不允许读取时,则无法读取。这就是类型强制性的读取控制机制。

警告:SElinux的类型读取控制是在传统的DAC权限之后进行的。换言之,就是说在取得了DAC权限之后,再由SElinux来进行类型的强制性控制了。

3SElinux的术语

   3.1 对象

      SElinux里,所有可被读取的的皆为对象。

   3.2 主体

      SElinux里,把进程理解为主体

   3.3 类型

SElinux允许你为系统中的每一个主体或对象定义一个类型。

3.4 领域

3.5 用户

    SElinux通过用户代表一些账号的识别数据。

3.6 角色

    角色用来代表某一些用户或对象的组合。

3.7 安全策略

   SElinux目前有三个安全策略:targeted,strict,mls 3个安全策略,每一个安全策略的功能,用途和定位不同的。

  3.7.1  targeted: 用来保护常见的网络服务    ###默认的redhat enterprise linux 会自动安装。

  3.7.2  strict:   用来提供符合 RBAC机制的安全性能

  3.7.3  mls:    用来提供符合MLS机制的安全性。

注意:本文档主要讲解安全策略targeted.

3.8 安全上下文

   SElinux系统中的每一个进程与对象都会记录一条安全上下文。

4SElinux软件包

5:初始化SElinux程序

6:切换SElinux状态

   6.1 查看SElinux的状态

      命令:  sestatus  [-v]

7:停用和启用SElinux

  7.1 通过内核启动参数

如:kernel  /vmlinuz…………..  ro root=LABEL=/ rhgb quiet selinux=N(0/1)

    0表示停用

    1表示启用

 7.2 通过SElinux配置文件

  /etc/sysconfig/selinux     连接文件

/etc/selinux/config        源文件

     7.3 手动启用或停用SElinux

     三:管理安全上下文

RED HAT ENTERPRISE LINUX的每一个对象都会存储其安全上下文。并将其作为SElinux判断进程能否读取的依据。

1SElinux的安全上下文的格式:

USER:ROLE:TYPE:[LEVEL:[CATEGORY]]

1.1  USER  用户字段

这个字段用来记录用户登录系统后所属的SElinux的身份的。

USER 通常以 _u为后缀,常见的如下:

   System_u               系统账号类型的使用者

   User_u                 真实用户类型的使用者

         Root                   超级用户的使用者 

   说明:targeted安全策略并未支持USER字段

       1.2  ROLE  角色字段                   

   ROLE 通常以 _r为后缀

说明:targeted安全策略并未支持ROLE字段

1.3  TYPE字段

    TYPE 类型字段通常以 _t为后缀的。这个字段是SElinux安全上下文中最常用也是最重要的字段。常见的TYPE字段如下:

下列表格列举了常见的TYPE字段

项目

说明

Unconfiged_

未设置类别

Default_t

默认类别

Mnt_t

代表挂载点的类型,/mnt/中的文件属于这个类别

Boot_t

作为开机文件的类型,/boot/中文件属于这个类别

Bin_t

作为二进制执行文件,/bin中多数属于这个类别

Sbin_t

作为系统管理类型的文件,/sbin中属于这个类别

Device_t

代表设备文件. /dev 下属于这个类别

Lib_t

连接库类型   /lib 下属于这个类别

Var_t

……

Usr_t

………

Etc_t

……..

Tty_device_t

代表终端机或控制台设备

Su_exec_t

具备SU功能的执行文件

Java_exec_t

JAVA相关的执行文件

Public_content_t

公共内容类型的文件。如:FTPNFS等服务器文件

Shadow_t

代表存储密码文件的类型

Httpd_t

作为HTTP文件的相关类别

1.4  LEVEL(层次) CATEGORY(分类)字段(略过)

2:安全上下文的默认值

RED HAT LINUX 系统如何产生每一个对象的安全上下文?从进程和文件两方面加以分析:

    2.1   进程默认安全上下文

      子进程继承父进程的安全上下文,除外子进程修改了自己的安全上下文。

    2.2   文件默认的安全上下文

       2.2.1  安装RPM包说产生的文件

             因为RPM包里面就记录了每一个文件的安全上下文的数据,所以在安装RPM包的时候,RPM工具就会自动配置安装包里面的文件的上下文到系统目录里面。

       2.2.2  手动建立的新文件

             在什么目录下建立新文件,就沿用什么目录的安全上下文。

3:查看文件和进程的安全上下文

   使用命令:id –Z (查看账号的)ls –Z (查看文件的)ps –Z (查看进程的)

 4:修改安全上下文

   修改对象(文件)的安全上下文,使用命令:chcon

命令格式:

   Chcon [OPTIONS…] CONTEXT FILES…..

   Chcon [OPTIONS…] –reference=PEF_FILES FILES…

说明:

    CONTEXT 为要设置的安全上下文

    FILES 对象(文件)

    --reference  参照的对象

    PEF_FILES  参照文件上下文

    FILES      应用参照文件上下文为我的上下文。

    OPTIONS 如下:

        -f          强迫执行

        -R         递归地修改对象的安全上下文

        -r ROLE    修改安全上下文角色的配置

        -t TYPE    修改安全上下文类型的配置

        -u USER   修改安全上下文用户的配置

        -v         显示冗长的信息

5:修复安全上下文

   5.1

     5.1.1   先使用命令matchpathcon 找出对象的安全上下文,然后再使用命令chcon命令修改对象的安全上下文。

     5.1.2   使用命令fixfiles工具仅修复RPM包里的对象的安全上下文

    使用工具fixfiles来修复RPM包文件的安全上下文。

   命令格式:fixfiles [-R PACKAGES…] [check|restore]

   参数说明:

          -R PACKEAGES      指定仅修复PACKAGES软件包;如果没有指定这个参数,表示修复所有的软件包

          Check               仅检查指定的软件包中错误的安全上下文

          Restore              除了检查之外,还修复错误的安全上下文

   命令使用:

         Fixfiles  -R sedmail  check      ###检测sendmail 错误的上下文

         Fixfiles  -R sedmail  restore     ###修复sendmail 错误的上下文

     5.1.3   使用restorecon还原文件的上下文

      说明:非RPM包的文件安全上下文修复。(5.1.1也可)

      命令格式:restorecon [OPTIONS…] [FILES…]

6:重新生产安全上下文

   只需两步:

      6.1   建立空文件 /.autorelabel

      6.2   重新启动系统即可

 

  

       

    

  

 

 

 

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                                                         

 

阅读(3329) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~