基础运维:SELINUX入门到掌握

一、介绍

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

2.简单意思
selinux就像是一种系统的保护机制,如果关闭它的话,也没什么问题,操作上不会因为selinux而感到阻碍和困难,但是你开启之后,你会感觉做什么都是错的,寸步难行。举个乐子:”当你打开了HTTP服务,内容能正常访问,但是你开启selinux之后就报错,那你会觉得是selinux的问题,然后你就设置好这个内容的selinux的上下文(类似用户权限),又可以正常访问了,然后你开开心心地将一个项目代码上传到网页根目录,不能打开了,你会想到selinux ~~ 首页能打开,但是其他jpg、gif等等不能正常显示,你又改权限,噼里啪啦地一顿操作猛如虎,都可以了,但是跳转到别人的网站又不行了,emmm ~~ 直接重装系统“

3.有点意思
selinux毕竟是保护机制,所以肯定能起到保护作用,保护着系统不被任意修改,保护着站点的权限又严格访问限制,你的文件都是等于数据,数据是钱买不了的,想好好地存在于互联网,就要做相对的安全(没有绝对的安全),通过各种手段保护你的数据不被修改等等,安全意识是非常重要的。

4.没什么意思
selinux是非常好的一种保护机制,但在企业中,大多数是没有使用这个安全机制的,毕竟都是直接关闭的,比如云服务器,你买的时候就已经默认是关闭selinux这个保护机制了。所以在这里演示,后期的软件服务和部署都不会开启。

二、Selinux入门--基本设置

1.关于selinux
selinux在系统的分布

[[email protected] ~]# find / -name selinux
/sys/fs/selinux
/etc/sysconfig/selinux
/etc/selinux
/usr/lib64/python2.7/site-packages/selinux
/usr/share/selinux
/usr/libexec/selinux
[[email protected] ~]# 

2.分析

selinux目录组成:
/sys/:系统全局设备管理目录,比如cgroup、pstore、selinux、xfs都存在这个目录。
/etc/:服务的配置文件目录。
/usr/:存放二进制文件、共享文件、函数库文件、服务执行文件的目录。

3.命令式宽容模式或严格模式(以下设置全局有效)

查看当前selinux的状态
[[email protected] ~]# getenforce
Enforcing
[[email protected] ~]# 

设置宽容模式
[[email protected] ~]# setenforce 0
[[email protected] ~]# getenforce
Permissive
[[email protected] ~]# 

设置拒绝模式
[[email protected] ~]# setenforce 1
[[email protected] ~]# getenforce
Enforcing
[[email protected] ~]# 

4.配置文件说明(可以设置关闭、宽容、严格模式)
/etc/sysconfig/selinux 是 /etc/selinux/config 文件的软链接
所以修改这两个其中一个,文件内容都会改变。

5.配置文件

[[email protected] ~]# cat /etc/selinux/config 

# 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     #设置selinux的状态模式
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,    #目标模式
#     minimum - Modification of targeted policy. Only selected processes are protected.   #最小化权限控制
#     mls - Multi Level Security protection.    #多种selinux模式,根据文件的上下文设置而改变访问权限
SELINUXTYPE=targeted      #设置selinux的类型,默认目标模式

6.更新配置文件

[[email protected] ~]# vim /etc/selinux/config
[[email protected] ~]# cat /etc/selinux/config 

# 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=disabled    #修改配置文件,需要重启系统以生效
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

[[email protected] ~]# 

7.重启系统
重启系统方式有很多:
第一种方法:
[[email protected] ~]# reboot

第二种方法:
[[email protected] ~]# init 6

这是系统启动级别命令,参考我另一个博客文章:
http://blog.51cto.com/leoheng/2161336

第三种方法:

虚拟机--》鼠标右击--》电源--》重新启动客户机

8.查看selinux状态

[[email protected] ~]# getenforce
Disabled

三、Selinux进阶---上下文

提醒:如果想使用上下文,必须开启selinux才能有效,如果设置了上下文,却没有开启selinux,那等于白忙了。

这里举个例子:其他设置,类比就好

1.安装Apache服务
[[email protected] ~]# yum install -y httpd #提供网页服务

2.安装网络工具
[[email protected] ~]# yum install -y net-tools #提供查询系统网络状态的工具

3.启动网页服务并检查网站端口(默认端口为80)

[[email protected] ~]# systemctl start httpd && netstat -tunlp |grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      1633/httpd
[[email protected] ~]# 

4.访问网页(默认网页)

5.开启selinux

[[email protected] ~]# getenforce
Enforcing
[[email protected] ~]# 

6.设置自定义网页

7.查看web上下文

[[email protected] html]# ls -Z
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
[[email protected] html]# 

上下文为:httpd_sys_content_t

8.在家目录创建网页文件,并移动到网站根目录

[[email protected] html]# cd
[[email protected] ~]# vim leo.html
[[email protected] ~]# cat leo.html
<h1 align=center>test2 web</h1>
<h2 align=center>leo</h2>
[[email protected] ~]# mv leo.html /var/www/html/
[[email protected] ~]# cd /var/www/html/
[[email protected] html]# ls -Z
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 leo.html
[[email protected] html]# 

9.访问新创建的网页文件(显示没权限访问该文件)

10.设置文件selinux,并访问网页(可正常访问该网页文件)

11.chcon命令掌握

[[email protected] html]# chcon --help
Usage: chcon [OPTION]... CONTEXT FILE...
  or:  chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE...
  or:  chcon [OPTION]... --reference=RFILE FILE...

选项如下:
--reference     #引用其他文件上下文
--dereference    #不引用其他文件上下文
-h, --no-dereference     #影响符号链接而不是引用文件
-u, --user=USER      #指定用户
-r, --role=ROLE     #指定角色
-t, --type=TYPE     #指定上下文
-l, --range=RANGE      #指定上下文的范围
--no-preserve-root      #不区分对待根目录
--preserve-root    #区分对待根目录
--reference=RFILE      #直接引用该文件的上下文
-R, --recursive        #递归,一般用在目录
-v, --verbose          #对每个文件输出信息

12.显示一下版本信息

[[email protected] html]# chcon --version
chcon (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Russell Coker and Jim Meyering.
[[email protected] html]# 

13.selinux高级

这个后期会在RHCE认证专栏做详细解说

原文地址:http://blog.51cto.com/leoheng/2161639

时间: 2024-08-04 10:26:56

基础运维:SELINUX入门到掌握的相关文章

Linux运维高薪入门及进阶全新经典视频-老男孩Linux(免费)

2015年5月21日最新发布,老男孩老师亲讲,全新Linux运维入门经典! 超级难得的linux经典企业级入门实战课程 价格:免费 数量:138节 本linux高薪运维入门及进阶,为入门教学中的基础部分,以简单.易用.高效的方式为初学者讲解如何学好LINUX的核心学习思想,讲解计算机硬件知识,基础命令,Linux基础知识及企业应用场景如何利用硬件优化服务,清晰透彻,超细讲解,适合0基础朋友学习或者相关岗位例如和It打交道的销售,编辑等做为了解linux的入口,也将十分有益!全民互联网时代开始了,

如果你还是基础运维,那么请仔细看看。

如果你还是基础运维,只会配配网卡,                                  只会调调时间,                                  只会安装mysql,                                  只会搭建web,                                  只会写写shell. 工作上,            只会\cp,然后重启进程的话. 那么我坚信你的工资 也就一万左右了, 现在运维开发这么火,

小型自动化运维--expect入门知识

小型自动化运维--expect入门知识 Expect的自动交互工作流程简单说明: spawn启动指定进程-->expect获取期待的关键字-->send向指定进程发送指定字符-->进程执行完毕,退出脚本. spawn命令 如果没有spawn命令,expect程序将会无法实现自动交互. spawn命令的语法为: spawn [选项] [需要自动交互的命令或程序] 例如:spawn ssh [email protected] uptime 说明:在spawn命令的后面,直接加上要执行的命令或

基础运维:iptables防火墙入门到掌握

一.简介 IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统.如果 Linux 系统连接到因特网或 LAN.服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置.防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中.在数据包过滤表中,规则被分组放在我们所谓的链(chain)中.而netfilter/iptables IP

Linux运维工程师入门须掌握的10个技术点

linux系统如果是学习可以选用redhat或centos,特别是centos在企业中用得最多,当然还会有其它版本的,但学习者还是以这2个版本学习就行,因为这两个版本都是兄弟,没区别的,有空可以再研究一下SUSE,有些公司也喜欢用,例如我公司 ..... 工具如下: 1.linux系统基础,这个不用说了,是基础中的基础,连这个都不会就别干了,参考书籍,可以看鸟哥linux基础篇,至少要掌握这书60%内容,没必须全部掌握,但基本命令总得会吧 2.网络服务,服务有很多种,每间公司都会用到不同的,但基

运维开发入门记录

本人初级运维, 一次偶然事情了 ,有人让我批量捞取灰常多台 机器的配置信息我想了想 问: shell脚本可以吗leader: MD好意思给我用shell=.=:那你要怎么弄leader :怎么弄你的事 然后 我就谷歌度娘,嗯 所有机器有salt  那就想想怎么搞吧后来 找了小半下午,python+salt 就可以搞定. 不多废话 直接开搞: 思路如下 ,直接画图: 架构草图 下来这个是基本拓扑: 这是一个 用python实现 调用salt的实例,具体思路是这样的salt 我们介绍一下吧,简单点的

【转载】运维职业向!我是怎么入得运维行业?运维工程师入门必备技能以及打怪升级篇

前言:转载 陈浩一个从事安全运维向的前辈文章.写的很好.人非常nice,遇到了问题,qq上很快就回复了我. 大道三千 入门最难,凡事入了行,也就什么都好说了,好的自然不断努力奋斗修行,不好的自然很快就被淘汰.恭谨勤勉,时不我待~ ---------------------------------------------------------------------------------------------------------------------------------------

Python自动化运维Django入门

随着IT运维技术日益更新,近几年运维自动化越来越火,而且学习python的人非常的火爆,尤其是python自动化运维开发,得到了很多前辈的推崇,尤其是老男孩培训中心.老男孩老师.Alex老师等,在这里非常感谢你们. 这里我也记录一下以前学习Django的一点点心得和方法,方便以后自己查阅,如果能帮助初学者是最好的了!好的,其他不多说了,博文滴走起. 一.系统实战环境 系统版本:CnetOS6.5 x86_64 Django版本:Django-1.5.8 MySQL版本:MySQL-5.1.73

linux 基础运维命令

Linux运维日常命令操作 1.linux启动过程 开启电源 --> BIOS开机自检 --> 引导程序lilo或grub --> 内核的引导(kernel boot)--> 执行init(rc.sysinit.rc)--> mingetty(建立终端) --> shell 2.网卡绑定多IP ifconfig eth0:1 192.168.1.99 netmask 255.255.255.0 3.设置DNS.网关 echo "nameserver 202.1