MyException - 我的异常网
当前位置:我的异常网» Linux/Unix » linux 装配中的selinux 学习笔记

linux 装配中的selinux 学习笔记

www.MyException.Cn  网友分享于:2015-08-26  浏览:0次
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_types failsafe_context    removable_context   virtual_domain_context

dbus_contexts        files                  securetty_types     virtual_image_context

default_contexts    initrc_context      userhelper_context  x_contexts

default_type         netfilter_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 访问自己家目录

文章评论

如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
代码女神横空出世
代码女神横空出世
程序员和编码员之间的区别
程序员和编码员之间的区别
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
总结2014中国互联网十大段子
总结2014中国互联网十大段子
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
Java程序员必看电影
Java程序员必看电影
漫画:程序员的工作
漫画:程序员的工作
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
一个程序员的时间管理
一个程序员的时间管理
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
程序员的鄙视链
程序员的鄙视链
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
程序员必看的十大电影
程序员必看的十大电影
我的丈夫是个程序员
我的丈夫是个程序员
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
那些争议最大的编程观点
那些争议最大的编程观点
如何成为一名黑客
如何成为一名黑客
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
中美印日四国程序员比较
中美印日四国程序员比较
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
每天工作4小时的程序员
每天工作4小时的程序员
老程序员的下场
老程序员的下场
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
程序员都该阅读的书
程序员都该阅读的书
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
我是如何打败拖延症的
我是如何打败拖延症的
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
鲜为人知的编程真相
鲜为人知的编程真相
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
 程序员的样子
程序员的样子
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
编程语言是女人
编程语言是女人
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有