【我的Linux,我做主!】企业军工级安全策略--SELinux实战

(一)了解SELinux是如何工作的
SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问控制的实现,是Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux默认安装在Fedora和Red Hat Enterprise Linux上,也可以作为其他发行版上容易安装的包得到。SELinux是2.6版本的Linux内核中提供的强制访问控制(MAC)系统。对于目前可用的Linux安全模块来说,SELinux是功能最全面,而且测试最充分的,它是在20年的MAC研究基础上建立的。SELinux在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。
大部分使用SELinux的人使用的都是SELinux就绪的发行版,例如Fedora、Red Hat Enterprise Linux(RHEL)、Debian或CentOS。它们都是在内核中启用SELinux的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用SELinux的功能。
SELinux是一种基于“域-类型”模型的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNIX权限更好的访问控制。
传统的文件控制方式是通过设置权限来实现的,例如一个文件我们设置的权限是777,那么这个文件任何人都可以读取、修改并删除,文件操作完全由权限来控制,这种方式称为DAC(主动访问控制)。而SELinux则是通过通过标签的方式来进行访问控制,例如a进程访问一个文件aa,它的标签是aa-fa,另一个b进程访问文件是bb,它的标签是bb-fb,同时bb文件的权限是777,如果此时a进程想要访问bb文件,即使权限全部是可读可写可执行,但是由于标签不相同,所以也仍然是无法访问的。所以SELinux就是特定标记的进程,只能访问特定标记的资源,就是上下文的概念。



(二)了解SELinux的上下文
(2.1)我们先在vms002主机上将http服务安装起来,并设置开机自动启动。


(2.2)由于SELinux服务还没有开启,所以可以设置开启的状态。

(2.3)使用# ps axZ | grep httpd命令可以查看httpd服务及其上下文的信息。

(2.4)因为我们知道/var/www/html/目录的的上下文是httpd_sys_content_t,如果我们在根下面创建一个/www目录,并设置192.168.26.102/www指向根下面创建的/www目录。


(2.5)接着我们在/etc/httpd/conf/目录下的httpd.conf配置文件中设置/www目录的Directory参数信息。


(2.6)我们发现/www目录的上下文是default_t,并不是和/var/www/html/目录的上下文httpd_sys_content_t一致。我们使用如下的命令修改上下文。
# chcon -R -t httpd_sys_content_t /www

(2.7)由于上下文是一致的,此时发现访问http://192.168.26.102/www/ 这个目录可以正常的进行显示。

(2.8)如果我们想恢复出厂默认值,则可以使用# restorecon -R /www/命令。


(2.9)如果我们想直接引用/var/www/html/目录的上下文,则可以使用reference参数。

(2.10)如果我们有时候具体的上下文记得不是很清楚,可以使用万能上下文来进行设置。


(2.11)如果我们想查询当前系统中所有上下文的信息,可以使用# semanage fcontext -l进行查询。

(2.12)例如像/var/www/html(/.*)?的正则表达式表示的就是/var/www/html目录及其下面的所有文件或者目录都可以进行匹配的。

(2.13)如果我们需要修改对应目录默认的上下文信息,可以使用# semanage fcontext -a -t public_content_t ‘/www(/.*)?‘命令,这样当使用# restorecon -R /www/命令恢复出厂默认值的时候,就会显示semanage命令设置的信息。

(2.14)如果我们想要删除默认的上下文设置,则可以使用# semanage fcontext -d -t public_content_t "/www(/.*)?



(三)了解SELinux的几种模式
(3.1)查看SELinux模式类型的命令是getenforce。


(3.2)enforcing----->强制模式,必须要满足SELinux的条件,不满足的话,则阻止访问且警报。
permissive----->允许模式,可以不满足SELinux的条件,不满足也可以访问,但是有警报。所以有时候我们访问不了服务器的时候,想想是不是SELinux导致的,可以临时关闭SELinux,就是切换到了permissive模式。
(3.3)由于setenforce命令只是临时切换,当我们重启机器之后就不在生效了,如果希望服务器重启后也生效,则可以在/etc/selinux/config配置文件中进行设置。记住:如果是设置成disable禁止的话,修改完之后必须要重启才能生效。


(3.4)由于/etc/sysconfig/selinux目录下的配置文件是指向/etc/selinux/config配置文件的软连接,所以也可以对这个文件进行修改。



(四)了解SELinux的布尔值
一个服务有很多功能,比如是否允许写,是否允许匿名写等等。是否开启这个功能,完全由配置文件来决定,但是如果SELinux功能启用后,那么决定服务是否启动的一个条件是SELinux也要允许服务启动。
(4.1)我们首先在vms002主机上安装vsftpd服务。

(4.2)接着在vms001主机上安装lftp和ftp的客户端软件。

(4.3)首先我们在vms001主机上通过客户端软件登录vms002主机的ftp服务器,并准备将本地的books.txt文件上传到ftp服务器。但是系统显示“put: Access failed: 550 Permission denied. (books.txt)”报错。

(4.4)首先检查配置文件/etc/vsftpd/vsftpd.conf中的匿名用户权限是否都有开启。


(4.5)开启匿名用户的权限后,发现仍然没有上传文件的权限,系统显示“put: Access failed: 553 Could not create file. (books.txt)”

(4.6)创建一个/var/ftp/xx目录,并且设置目录的属主和属组为ftp用户,此时在vms001主机的客户端上进入xx目录后,尝试上传文件,发现仍然有“put: Access failed: 553 Could not create file. (books.txt)”报错信息。


(4.7)我们查询到在vms002主机上关于ftp布尔值的参数ftpd_anon_write和ftpd_full_access均为off,在/etc/vsftpd/目录下的vsftpd.conf的配置文件中已经有注释提示布尔值设置问题。


(4.8)接着我们将ftpd_anon_write和ftpd_full_access参数设置为on



(4.9)如果我们希望设置的布尔值在系统重启后也能继续生效,可以加上-P的参数。

(4.10)总结:如果我们搭建了某个服务,从客户端上开始往服务器上传输文件,但是没法传输上去,应该从以下3条来检查:1.检查配置文件是否允许写;2.检查文件系统是否有权限;3.检查SELinux的权限设置情况,一般SELinux涉及的就是上下文和布尔值量方面。
(4.11)我们除了使用命令行来进行SELinux的设置,也可以使用图形化的界面方式来设置SELinux。



(4.12)SELinux对端口也是有设置上下文的。

(4.13)我们在httpd.conf配置文件中添加一个监听的端口808,此时将httpd服务重启后发现服务是无法正常启动的。



(4.14)此时我们可以查找模板文件在/etc/ssh/sshd_config文件中查看。


(4.15)给httpd服务设置808端口的上下文,此时httpd服务就可以正常的重启了。

原文地址:https://blog.51cto.com/13613726/2437794

时间: 2024-08-11 09:42:04

【我的Linux,我做主!】企业军工级安全策略--SELinux实战的相关文章

Linux学习61 企业军工级别安全策略-SELinux简介

一.回顾 1.CentOS系统安装 2.kickstart文件 a.命令段 必备命令:authconfig,bootloader,... 可选命令:firewall,selinux,reboot,... b.程序包段 %packages @group_name package -package %end c.脚本段 %pre ... %end %post ... %end d.创建工具:system-config-kickstart e.语法检查:ksvalidator f.安装过程如何获取ki

linux杂谈(十六):ftp的企业应用级配置(三)

这次我们来讲解黑名单,白名单以及内网和外网的ftp的访问的不同设置. 1.黑名单 有的时候我们不想让某些本地用户登录,这个时候就要设置黑名单了,它在/etc/vsftpd下: 如何添加一个用户到黑名单: (1)首先我们把一个用户(westos)添加到ftpusers: 重启服务(并且刷掉火墙)后看是否可以登录: westos登录需要输入密码,但是不能登录,此刻为黑名单. (2)我们在把westos添加到user_list中看看: 看到上面的那个提示了么,当userlist_deny=NO时,只允

linux杂谈(十四):ftp的企业应用级的配置(一)

1.ftp简介 (1)生活中的ftp 在互联网中我们需要传输数据,尤其是要传输大型数据.有一个服务是要着重去介绍的:ftp.其实我们以前很早就接触它了.只是大家可能不怎么关注,迅雷的基本模型就是ftp,不过是要高级的多. 事实上ftp应该是一种传输协议,之前它采用的是明文传输,如果在复杂的网络环境这样使用的话是非常危险的.为了更安全的使用这个协议,现在我们要采取更安全的软件vsftpd来提供服务. (2)ftp的功能介绍 1.它有着不同等级的用户身份:服务器本地用户:访客:匿名用户: 2.命令记

linux杂谈(十五):ftp的企业应用级的配置(二)

上篇最后我们讲到了匿名用户家目录的修改,今天来看看匿名用户还可以做什么操作. 1.匿名用户创建和删除目录 其实所有的功能都是上篇所列举的那些参数所控制的,通常大家在记不清的时候都可以查看man手册(man vsftpd.conf),里面列举了所有可以修改的参数.关于匿名用户创建和删除目录的参数如下所示: 把这两个参数设置为YES,匿名用户就可已创建目录了,记得每次修改完配置文件都要重新启动/etc/init.d/vsftpd服务. 发现还是无法创建,怎么回事?其实我们考虑问题一定要全面.虽然配置

Ansys Totem 14.1.b2 Linux 64位版 晶体管级电源噪声和可靠性仿

ANSYS Totem是一款晶体管Ansys Totem 14.1.b2 Linux 64位版 晶体管级电源噪声和可靠性仿级电源噪声和可靠性仿真平台,可用于模拟.混合信号和定制数字设计. 新版Ansys Totem 14.1.b2支持Linux系统: RedHat Enterprise 3 SUSE 9 或更高版本 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 专业行业软件,值得信赖! 为您提供完整版好用软件!竭诚为您

linux下C语言获取微秒级时间

使用C语言在linux环境下获得微秒级时间 1.数据结构 int gettimeofday(struct timeval*tv, struct timezone *tz); 其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果: struct timezone{ int tz_minuteswest;/*格林威治时间往西方的时差*/ int tz_dsttime;/*DST 时间的修正方式*/ } timezone 参数若不使用则传入NULL即可. 而结构体timeval的定义为: s

庆祝成为51cto学院Linux运维金牌讲师第一人,实战课程震撼上线

讲师何其多,金牌只一人(2016免费课程在底部) 某天,小编听到: linuxer1:听说51CTO学院评出了一个Linux金牌讲师!只有一人呢! linuxer2:用腿想,就知道肯定是马哥喽! linuxer3:前段时间马哥又分享了2016最新课时,限时免费学习呢!10086个赞!我和我的好基友们都在学习! linuxer4:马哥的51CTO课程学员都两百多万了呢!这影响力,杠杠的,不愧是金牌讲师第一人! 咳咳,听到小伙伴们的对话,小编既欣慰又自豪!金牌讲师可不是吹出来的! 马哥成为51cto

集五福+微信红包+大转盘 从零到一完成国民级项目测试实战

第1章 课程介绍(欢迎来学习,祝您学习愉快)本章主要介绍课程内容,讲解课程的由来及重难点.本门课诣在让大家知道也许你给小伙伴们发过红包,也许你参与过集五福活动,但是你真的了解他们么?让我们一起,走进软件测试的世界,全面了解软件测试人员在一个互联网项目中,从需求到上线每个阶段都在做什么,怎么做.... 第2章 微信红包的诞生到测试计划(企业真实项目测试过程)本章主要讲解微信红包的诞生.需求分析.软件测试里面包含了哪些内容.测试人员可以做哪些事情.从产品立项到开发结束,测试人员在每个阶段都可以做哪些

linux rm 命令详解及使用方法实战【初级】

rm:删除命令 前言: windows中的删除命令大家都不陌生,linux中的删除命令和windows中有一个共同特点,那就是危险,前两篇linux mkdir 命令详解及使用方法实战[初级]中我们就提到了rm命令,现在我们来详细介绍一下linux中删除文件和目录的命令, rm命令,rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除.对于链接文件,只是删除了链接,原有文件均保持不变. 名称 rm - remove files o