selinux入门和基本配置

SElinux的概念:

SELinux[Security Enhanced Linux (安全强化 Linux)],是工作在内核中的MAC (Mandatory Access Control,强制访问控制系统)的一个实现,目的在于明确的指明某个进程可以访问哪些资源(文件、网络端口等)。强制访问控制系统的用途在于增强系统抵御 0-Day 攻击(利用尚未公开的漏洞实现的攻击行为)的能力。所以它不是网络防火墙或 ACL 的替代品,在用途上也不重复。

DAC和MAC的联系和区别:

一般系统上采用的DAC的环境,selinux则是MAC(强制访问控制)

DAC环境下进程是无束缚的

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

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

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

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

对于selinux的通俗理解:

selinux,它给一些特定程序(这些程序也在不断增加)做了一个沙箱,它将文件打上了一个安全标签,这些标签属于不同的类,也只能执行特定的操作,也就是规定了某个应用程序设定了你可以访问那些文件或目录。

subject operation object

主体:进程称为主体(subject)

对象(object):所有可以读取的对象,包括文件、目录和进程,端口等,

SELinux中对所有的文件都赋予一个type的文件类型标签,对于所有的进程也赋予各自的一个domain的标签。Domain标签能够执行的  操作由安全策略里定义。当一个subject试图访问一个object,Kernel中的策略执行服务器将检查AVC (访问矢量缓存Access Vector Cache),  在AVC中,subject和object的权限被缓存(cached),查找“应用+文件”的安全环境。然后根据查询结果允许或拒绝访问

安全策略:定义主体读取对象的规则数据库,规则中记录了哪个类型的主体使用哪个方法读取哪一个对象是允许还是拒绝的,并且定义了哪种行为是充许或拒绝

了解和配置 SELinux

1. 获取当前 SELinux 运行状态

getenforce

可能返回结果有三种:Enforcing、Permissive 和 Disabled。Disabled 代表 SELinux 被禁用,Permissive 代表仅记录安全警告但不阻止可疑行为,Enforcing 代表记录警告且阻止可疑行为。

2. 改变 SELinux 运行状态

setenforce [ 1 | 0 ]

切换disabled状态或者从disabled状态切换至别的状态都需要重启。而enforceing和Permissive两种状态间切换不需要重启

重启时会为整个文件系统重新创建安全标签(touch /.autorelabel && reboot)。

只要grub中或者配置文件中有一个设置了disabled ,那么seLinux就是不启动的。

若是想要永久变更系统 SELinux 运行环境,可以通过更改配置文件 /etc/sysconfig/selinux实现。

3. SELinux 运行策略

strict: centos5,每个进程都受到selinux的控制

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

minimum:centos7,修改过的targeted,只对选择的网络服务

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

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

一般都是默认采用targeted,不用修改

4.  安全标签

a.查看程序的安全标签

#ps auxZ | grep lldpad

system_u:system_r:initrc_t:s0 root 1000 8.9 0.0 3040 668 ? Ss 21:01 6:08 /usr/sbin/lldpad -d

b.查看文件的安全标签:有.就是有安全标签

#ls -Z /usr/lib/xulrunner-2/libmozjs.so

-rwxr-xr-x. root root system_u:object_r:lib_t:s0 /usr/lib/xulrunner-2/libmozjs.so

安全标签有多个选项,我们只需要关注第三个type就行。

Type:指定数据类型,规则中定义何种进程类型访问何种文件Target策略基于type实现,多服务共用:public_content_t

给文件重新打安全标签:

chcon  [-t TYPE] FILE...

chcon[OPTION]... --reference=RFILE FILE...

-R:递归打标;

恢复目录或文件默认的安全上下文:

restorecon[-R] /path/to/somewhere

5.安全上下文

semanage来自policycoreutils-python包,centos 6上默认没安装

查看默认的安全上下文

semanage  fcontext  –l

添加安全上下文

semanage  fcontext  -a –t httpd_sys_content_t‘/testdir(/.*)?’

restorecon  –Rv  /testdir

删除安全上下文

semanage  fcontext  -d –t httpd_sys_content_t‘/testdir(/.*)?’

6.端口

查看端口标签

semanage  port –l

添加端口

semanage port -a -t port_label-p tcp|udpPORT

semanage port -a -t http_port_t -p tcp 9527

删除端口

semanage port -d -t port_label-p tcp|udpPORT

semanage port -d -t http_port_t -p tcp 9527

修改

semanage port -m -t port_label-p  tcp|udpPORT

semanage port -m -t http_port_t-p tcp9527

7.布尔规则

布尔型规则:

getsebool

setsebool

查看bool命令:

getsebool [-a] [boolean]

semanage   boolean  –l

semanage   boolean   -l –C 查看修改过的布尔值

设置bool值命令:

setsebool  [-P] booleanvalue

setsebool  [-P] Boolean=value

8.日志

yum install setroublesshoot*(重启生效)

将错误的信息写入/var/log/message

grep setroubleshoot/var/log/messages

sealert-l UUID

查看安全事件日志说明

sealert-a /var/log/audit/audit.log

扫描并分析日志

Apache SELinux 配置实例

 1、安装httpd服务,改变网站的默认主目录为/website,添加SELinux文件标签规则,设置http_sys_content_t到/website及目录下所有文件,使网站可访问

[[email protected]~]# mkdir /website

[[email protected]~]# ll -Z /website -d

drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /websit

[[email protected]~]# ll -Z /var/www/html/

-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html

[[email protected]~]# chcon --reference=/var/www/html /website

[[email protected]~]#ll -Z /website/

-rwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html

[[email protected]~]# vim /etc/httpd/conf/httpd.conf

DocumentRoot "/website"

[[email protected]~]# service httpd restart

[[email protected]~]#echo "test website" > /website/index.html

测试:

在浏览器上输入地址,可以正常访问到

2、修改网站端口为9527,增加SELinux端口标签,使网站可访问

[[email protected]~]# semanage port -l | grep "http_port_t"

http_port_t                    tcp        80, 81, 443, 488, 8008, 8009, 8443, 9000

[[email protected]~]# semanage port -a -t http_port_t -p tcp 9527

[[email protected]~]# semanage port -l | grep "http_port_t"

http_port_t                 tcp        9527,80, 81, 443, 488, 8008, 8009, 8443, 9000

[[email protected]~]#vim /etc/httpd/conf/httpd.conf

Listen 9527

测试:

3、启用SELinux布尔值,使用户student的家目录可通过http访问

[[email protected]~]#vim /etc/httpd/conf/httpd.conf

修改为:

#  UserDir disabled

UserDir public_html

[[email protected]~]# chmod 711 /home/jay

[[email protected]~]#mkdir /home/jay/public_html

[[email protected]~]#echo "jay home" > /home/jay/public_html/index.html

查看布尔规则:

[[email protected]~]# semanage boolean -l | grep "homedir"

httpd_enable_homedirs    (off   ,   off)  Allow httpd to read home directories

修改布尔规则:

[[email protected]~]# setsebool -P httpd_enable_homedirs on

测试:

时间: 2024-10-12 07:44:34

selinux入门和基本配置的相关文章

基础运维:SELINUX入门到掌握

一.介绍 1.官方意思SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略.任何程序对其资源享有完全的控制权.假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他.SELinux提供了比传统的UNIX权限更好的访问控制. 2.简单意思selinux就像是一种系统的保护机制,如果关闭它的话,

Debian 入门安装与配置1

Debian 入门安装与配置1 最近安装了多个发行版本的Linux,包括Ubuntu.Fedora.Centos和Debian,发现只有Debian在界面和稳定性等综合特性上表现最优,自己也最喜欢,所以最后选择长久使用Debian作为自己的家用笔记本操作系统,也想借助Debian来深入的学习Linux,因此在这里记录一些日生使用Debian过程中遇到的问题及解决办法. 1.Debian安装 选择Debian的版本对于新手至关重要,本人安装Debian的时候,Debian官方发行稳定版本是7.7.

DataVeryLite入门教程(一) 配置篇

DataVeryLite 是基于.net 4.0的数据库持久化ORM框架. 目前支持的数据库有Sqlserver,Mysql,Oracle,Db2,PostgreSql,Sqlite和Access. DataVeryLite 的配置系统非常简单,稍微有点c#基础的程序猿,半小时都能上手; 不仅学习简单,编码量也非常少;熟练之后基本可以复制粘贴来完成配置. 1.连接字符串配置 a,App.config/Web.config配置方式 在<connectionStrings>节点中添加配置,示列如下

ASP.NET 5 入门 (2) – 自定义配置

ASP.NET 5 入门 (2) – 自定义配置 ASP.NET 5 理解和入门 建立和开发ASP.NET 5 项目 初步理解ASP.NET5的配置 正如我的第一篇文章ASP.NET 5 (vNext) 理解和概述 所说,ASP.NET 5的具有全新的配置机制,我们可以通过以下几点来进行理解: 支持多种跨平台的配置文件格式(如XML, Json, Ini和环境变量) 标准的配置文件如project.json不再包括任何自定义的配置信息. 自定义的配置完全由开发者另行建立和加载 自定义的配置信息可

最全面 Nginx 入门教程 + 常用配置解析

转自 http://blog.csdn.net/shootyou/article/details/6093562 Nginx介绍和安装 一个简单的配置文件 模块介绍 常用场景配置 进阶内容 参考资料 == Nginx介绍和安装 == Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器, 其性能与IMAP/POP3代理服务器相当.Nginx以其高性能.稳定.功能丰富.配置简单及占用系统资源少而著称. Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx

selinux和iptables基本配置

SElinux的启动.关闭和查看: Selinux的三种模式:enforcing/  permissive/  disable 1,查看selinux的工作模式:getenforce 2,查看selinux的策略:/etc/selinux/config 3,切换模式:setenforce [0|1] 0:转成permissive宽容模式 1:转成enforcing强制模式 Selinux type的修改:chmon Chcon [-R] [-t type] [-u user] [-r role]

MySQL数据库入门——多实例配置

MySQL数据库入门--多实例配置

Flex3与java BlazeDS入门教程及其配置详解

原文:Flex3与java BlazeDS入门教程及其配置详解 源代码下载地址:http://www.zuidaima.com/share/1789445387160576.htm BlazeDS的下载和介绍: http://opensource.adobe.com/wiki/display/blazeds/Release+Builds(已经失效) 新的下载路径:http://sourceforge.net/adobe/wiki/Projects/或是http://www.pc6.com/sof

SELinux入门

SELinux入门 导读 如果你在之前的Linux生涯中都禁用或忽略了SELinux,这篇文章就是专门为你写的:这是一篇对存在于你的Linux桌面或服务器之下的SELinux系统的介绍,它能够限制权限,甚至消除程序或守护进程的脆弱性而造成破坏的可能性. 回到Kernel 2.6 时代,那时候引入了一个新的安全系统,用以提供访问控制安全策略的机制.这个系统就是Security Enhanced Linux (SELinux),它是由美国国家安全局(NSA)贡献的,它为Linux内核子系统引入了一个