linux 安装中的selinux 学习笔记

SELinux 是「Security-EnhancedLinux」的简称,是美国国家安全局「NSA=The National Security

Agency」 和 SCC(Secure Computing Corporation)开发的 Linux 的一个扩张强制访问控制安

全模块。

因为企业的业务平台的服务器上存储着大量的商务机密,个人资料,个人资料它直接关系到

个人的隐私问题。特别是政府的网站,作为信息公开的平台,它的安全就更显得重要了。这

些连到互联网的服务器,不可避免的要受到来自世界各地的各种威胁。最坏的时候我们的服

务器被入侵,主页文件被替换,机密文件被盗走。除了来自外部的威胁外,内部人员的不法

访问,攻击也是不可忽视的。对于这些攻击或者说是威胁,当然有很多的办法,有防火墙,

入侵检测系统,打补丁等等。因为 Linux 也和其他的商用 UNIX 一样,不断有各类的安全漏

洞被发现。

DAC(Discretionary access control,自主访问控制):DAC 机制就是指对象(比如程序、文件

或进程等)的的拥有者可以任意的修改或授予此对象相应的权限。例如传统 Linux,Windows

等。

MAC(Mandatory Access Control,强制访问控制):MAC 机制是指系统不再允许对象(比如

程序、文件或文件夹等)的拥有者随意修改或授予此对象相应的权限,而是透过强制的方式

为每个对象统一授予权限,例如 SELinux。

传统的 LinuxOS 的不足之处

虽然 Linux 比起 Windows 来说,它的可靠性,稳定定要好得多,但是他也是和其他的 UNIX

一样,有以下这些不足之处。

1)存在特权用户 root

任何人只要得到 root 的权限,对于整个系统都可以为所欲为。这一点 Windows 也一样。

2)对于文件的访问权的划分不够细

在 linux 系统里,对于文件的操作,只有「所有者」,「所有组」,「其他」这3类的划分。

对于「其他」这一类里的用户再细细的划分的话就没有办法了。

3)SUID 程序的权限升级

如果设置了 SUID 权限的程序有了漏洞的话,很容易被攻击者所利用。

4)DAC(DiscretionaryAccess Control)问题

文件目录的所有者可以对文件进行所有的操作,这给系统整体的管理带来不便。

对于以上这些的不足,防火墙,入侵检测系统都是无能为力的。

SELinux 的优点

SELinux 系统比起通常的 Linux 系统来,安全性能要高的多,它通过对于用户,进程权限的最

小化,即使受到攻击,进程或者用户权限被夺去,也不会对整个系统造成重大影响。

在标准 Linux 中,主体的访问控制属性是与进程通过在内核中的进程结构关联的真实有效的

用户和组 ID,这些属性通过内核利用大量工具进行保护,包括登陆进程和 setuid 程序,对

于文件,文件的 inode 包括一套访问模式位、文件用户和组 ID。以前的访问控制基于读/写/

执行这三个控制位,文件所有者、文件所有者所属组、其他人各一套。

在 SELinux 中,访问控制属性总是安全上下文三人组形式,所有文件和主体都有一个关联的

安全上下文,标准 Linux 使用进程用户/组 ID,文件的访问模式,文件用户/组 ID 要么可以访

问要么被拒绝,SELinux 使用进程和客体的安全上下文,需要特别指出的是,因为 SELinux

的主要访问控制特性是类型强制,安全上下文中的类型标识符决定了访问权。若要访问文件,

必须同时具有普通访问权限和 SELinux 访问权限。因此即使以超级用户身份 root 运行进程,

根据进程以及文件或资源的 SELinux 安全性上下文可能拒绝访问文件或资源。

在 Linux 中 , passwd 程 序 是 可 信 任 的 , 修 改 存 储 经 过 加 密 的 密 码 的 影 子 密 码 文 件

(/etc/shadow),passwd 程序执行它自己内部的安全策略,允许普通用户修改属于他们自己

的密码,同时允许 root 修改所有密码。为了执行这个受信任的作业,passwd 程序需要有移

动和重新创建 shadow 文件的能力,在标准 Linux 中,它有这个特权,因为 passwd 程序可执

行文件在执行时被加上了 setuid 位,它作为 root 用户(它能访问所有文件)允许,然而,

许多程序都可以作为 root 允许(实际上,所有程序都有可能作为 root 允许)。这就意味着任

何程序(当以 root 身份运行时)都有可能能够修改 shadow 文件。类型强制使我们能做的事情

是确保只有 passwd 程序(或类似的受信任的程序)可以访问 shadow 文件,不管运行程序

的用户是谁

[root@localhost ~]# cat /etc/sysconfig/selinux

# 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= type of policy in use. Possible valuesare:

# targeted- Only targeted network daemons are protected.

# strict -Full SELinux protection.

SELINUXTYPE=targeted

SELINUX 参数值:

enforcing 强行(报警并限制)

permissive 许可(报警不限制)

disabled 禁用

SELINUXTYPE 参数值:

targeted 保护网络相关服务

strict 完整的保护功能,包含网络服务、一般指令及应用程序

mls 多级别模块化

--------------------------------

开 SElinux 系统启动不了,开机启动 GRUB 界面, kernel 行selinux=0

--------------------------------

[root@node1 ~]# sestatus


SELinux status:

SELinuxfs mount:


enabled

/selinux

Current mode:

Mode from config file:

enforcing

enforcing


Policy version: 21

Policy from config file: targeted

[root@node1 ~]# getenforce

Enforcing

[root@node1 ~]# setenforce 0

[root@node1 ~]# getenforce

Permissive

[root@node1 ~]# setenforce 1

[root@node1 ~]# getenforce

Enforcing

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

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

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

System_u 系统账号类型的使用者

User_u 真实用户类型的使用者

Root 超级用户的使用者

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

ROLE 角色字段 ROLE 通常以 _r 为后缀 说明:targeted 安全策略并未支持 ROLE 字段

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

是最重要的字段。常见的 TYPE 字段如下:

Unconfiged 未设置类别

Default_t 默认类别


Mnt_t


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


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

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

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


Device_t


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


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

Tty_device_t 代表终端机或控制台设备

Public_content_t 公共内容类型的文件。如:FTP,NFS 等服务器文件 3


Shadow_t


代表存储密码文件的类型


Httpd_t 作为 HTTP 文件的相关类别

LEVEL(层次) 和 CATEGORY(分类)字段

ls –Z (查看文件的);ps –Z (查看进程的)

[root@node1 ~]# ls -Z /etc/passwd


-rw-r--r-- rootroot system_u:object_r:etc_t


/etc/passwd


[root@node1 ~]# ls -Zld /mnt/


drwxr-xr-x 2 system_u:object_r:mnt_t


rootroot 4096 Oct


1 2009 /mnt/


有那些上下文

[root@localhost ~]# ls /etc/selinux/targeted/contexts/

customizable_typesfailsafe_contextremovable_context virtual_domain_context

dbus_contextsfilessecuretty_typesvirtual_image_context

default_contextsinitrc_contextuserhelper_context x_contexts

default_typenetfilter_contexts users

[root@node1 ~]#

查看 selinux 布尔值

[root@localhost ~]# getsebool -a

修改布尔值

[root@localhost ~]# setsebool [-P] ftp_home_dir on

-P 重启之后生效

===============================================================================

[root@node1 ~]# man -k ftp | grep selinux

ftpd_selinux (8)- Security-Enhanced Linux policy for ftp daemons

[root@node1 ~]# man ftpd_selinux

实验:

在开启 SElinux 时,使用匿名用户在/var/ftp/upload/目录下创建目录 test

匿名用户可写

anonymous_enable

anon_upload_enable

anon_other_write_enable

anon_mkdir_write_enable

[root@node1 ~]# man -k nfs | grep selinux

nfs_selinux(8) - Security Enhanced LinuxPolicy for NFS

实验:

nfs 共享一个文件夹/test,客户端可读可写

[root@node1 ~]# man -k samba | grep selinux

samba_selinux(8) - Security Enhanced LinuxPolicy for Samba

实验:

搭建 samba 服务器,自定义文件夹/share,使用 samba 共享

允许 user1user2 用户 rw 访问 /share

允许 user1 通过 samba 访问自己家目录

你可能感兴趣的:(selinux)