Linux中的SELinux与chcon以及Samba实现【转】
一、SELinux
SElinux的前身是NSA(美国国家安全局)发起的一个项目。它的目的是将系统加固到可以达到军方级别。
为什么NSA选择Linux呢?
在目前市面上大多数操作系统都是商用闭源的,只有Linux是开源的,这样修改并加入这项功能就方便许多,而且没有版权纠纷。所以,现在selinux就成为了Linux内核的一部分。
在了解selinux之间,我们需要知道DAC和CS的概念,它们是linux系统本身的安全机制。
DAC:自主访问控制
每一个用户为了能够实现和其他用户共享文件,在使用ACL之前,只能通过改变这个文件其他用户的权限,但是这中方法给系统安全带来了无穷的隐患。
CS(安全上下文):取决于发起用户的权限和文本本身的权限
CS+DAC给系统的安全机制带来了漏洞,事想apache用户可以查看/etc/passwd,如果它有写权限,就可能被利用进而就修改passwd文件,危害系统安全。
所有才又了MAC强制访问控制的概念
MAC: Mandatory Access Control 强制访问控制,它是selinux实现访问控制的基础
还通过httpd服务来说明它的原理:
SELINUX通过type enforce (TE)强制类型策略将httpd的工作目录定义在一个特定的目录/var/www用户如果在定义其他目录,将不允许访问,从而实现mac的强制访问控制。
selinux是怎么工作的
它通过operation (操作)的主和宾打一个“标签”,在一个“类型”里只能由特定的目录或用户执行。这样可以限定一个进程的执行范围只能在一个“沙箱”(sandbox)内了(最小权限法则)
###operation: 读,写,执行,等。其实是一个主谓宾的结构 Subject Operation Object
###最小权限法则:例如定义Sbjiect httpd 的目录/var/www 为public_content_t类型,这样,httpd只能访问有这个特定类型的文件或目录,这些文件就叫沙箱“sendbox”
使用selinx,必须精心设计一套访问法则
给不同的进程打上不同的“域”,给不同的目录打上不同的”类型“通过定义“类型”和“域”的对应规则,来实现。selinx需要域和标签的对应关系,一对一对应 。但是系统上有上千个进程,实现起来很麻烦,所以一般情况下,并不是用selinx作为安全防范。
selinux的实现机制有两种
strict: 任何进程都受selinux的控制,一般不用,太难设定
targeted: 红帽开发,指定选定的进程来受SELINUX,这种机制使得selinx更加容易受到控制
policy: 规则组合起来就叫策略
规则通常是以二进制文件存在的(编辑完转换成二进制),这样可以降低系统资源占用
ll /etc/selinxu/policy
MLS muiti level scurity
selinxu把一些规则里面可以方便控制的功能设定为on或者off,这些都成为布尔类型
getsebool -a 可以显示这些布尔型的内容
fcontext 规定目录属于哪个进程的范围
启动使用selinux
1.启用selinux
1.vim /etc/sysconfig/selinux
2.SELINUX=enforcing #任何进程都受selinux控制
3. permissive #仍然受控制,但是进程进入了别的目录会记录到日志
4. disable #干净彻底的关闭
5.setenforce
6.genenforce
2.显示标签
1.ls -Z 显示文件的标签
2. 一共五段 角色:selinux里另外定义的用户
3. object_r: 有点类似于组
4. user_home_t: 域或者类型(最重要)通过改变它可以控制访问。类型强制的机制就是通过它实现的
5.ps -Z 显示进程的标签
6.所有显示unconfined_t都表示不受selinux控制
7.ps auxZ | grep httpd
8.ls -dZ
在不同的目录建立的文件类型是不一样的,归不同的进程管理。
3.改变一个类型的标签
1.chcon chage contex 改变上下文
2.chcon -t 改类型,指定为特定类型
3. -u
4. -R 递归修改,可以改变目录下所有目录
5. --reference= 以某个文件的标签为参照改变成一样的标签
6.chcon -R --reference=/var/www/html /www
7.chcon -t default_t /www/index.html
4.恢复默认安全上下文及修改
1.restorecon
2. -R 递归
3. -F 强制
4. -v 显示详细信息
5.restorecon -R -v -F /www # 显示/www目录的详细CS信息
6.semange
7. -d 删除
8. -m 修改
9. -r
10. -a 附加
11. -t 类型
12.
6.开启布尔类型
1.getsebool -a | grep httpd #查看某个对应的布尔类型的值
2.setsebool httpd_enable_cgi=on # 加上-p选项永久有效
二、实现samba来测试selinux控制
1.添加tools文件夹
1.vim /etc/samba/smb.conf
2.[tools]
3. path = /share #没有的话事前创建一个
4. public = yes 5. write list = @mygrp #只允许mygrp组具有创建文件的权限
6. browseable = yes
7.service smb start
2.添加用户gentoo,并设置samba密码,允许器登陆samba服务器在tools下创建文件
1.</pre><pre class="cpp" name="code">groupadd mygrp
2.useradd gentoo -g mygrp
3.[root@station32 var]# smbpasswd -a gentoo
4.New SMB password:
5.Retype new SMB password: 6.Added user gentoo.
7.smbclient -L 192.168.0.32 -U gentoo # 查看samba服务器的内容
3.我们查看下/shared目录的CS,并且开启selinux
1.ls -dZ /share/
2.drwxrwxr-x root mygrp root:object_r:default_t /share/
3.setenforce 1
4.开启selinux后,再使用smbclient命令就会报错,我们看下配置文件里面有这样一行 # To set a label use the following: chcon-t samba_share_t /path ,所以我们必须把/shared文件夹的CS修改后才能正常使用samba
1.chcon -t samba_share_t /share

5.我们关闭samba里关于访问家目录的布尔类型
1.setsebool samba_enable_home_dirs off
这个时候使用win网络邻居,以用户gentoo登陆后,就不能进入gentoo家目录了

6.我们将它开启就又能访问了,命令如下:
1.setsebool samba_enable_home_dirs on
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2011-09/42783.htm
Linux中的SELinux与chcon以及Samba实现【转】的更多相关文章
- linux中的selinux到底是什么
一文彻底明白linux中的selinux到底是什么 2018年06月29日 14:17:30 yanjun821126 阅读数 58877 标签: SElinux 更多 个人分类: Linux 一 ...
- 一文彻底明白linux中的selinux到底是什么
https://www.phpyuan.com/235739.html 一.前言 安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内 ...
- Linux中的SELinux详解--16
SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled) 几种模式之间的转换 在CentOS6.2 中安装intel 的c++和fortran 的编 ...
- LINUX中错误 SELinux is disabled
解决: setenforce: SELinux is disabled 那么说明selinux已经被彻底的关闭了 如果需要重新开启selinux,请按下面步骤: vi /etc/selinux/con ...
- Linux中samba服务器的搭建
使用的vmware12虚拟机安装的centos6.8和物理机上的windows10,实现在windows10 上访问CentOs上的samba服务. 一.先查看系统中是否安装有samba服务相关的软件 ...
- linux中Samba服务器的配置
Samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件 ...
- Redhat Enterprise Linux中如何关闭SELinux?
转自http://www.cnitblog.com/lywaml/archive/2005/06/21/468.html 红帽企业 Linux 4 包括了一个 SELinux 的实现.SELinux ...
- Linux中架构中的备份服务器搭建(rsync)
本期内容概要 Linux中的备份方式 架构中备份服务器搭建(rsync) 内容详细 1.备份方式 1. cp : 本机复制(只能作用在本机) 2. scp : 远程复制 两种模式: 推 : 本地上传到 ...
- linux中rsync备份文件
linux中rsync备份文件 备份文件的方式 备份方式: cp : 本机复制 scp: 远程复制 推(本地上传到远程服务器): scp 1.txt root@ip:[路径] [root@m01 ~] ...
随机推荐
- ZipArchive扩展的使用和Guzzle依赖的安装使用
在项目开发的过程中,需要去远程下载录音文件 然后保存到自己的项目中,然后再把录音文件压缩打包,最后再下载给用户 1.Guzzle依赖的安装 guzzle官方文档:http://guzzle-cn.re ...
- 三级联动第二种方法 三级联动.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- krpano之字幕添加
字幕是指介绍语音的字幕,字幕随着语音的播放而滚动,随语音暂停而暂停.字幕添加的前提是用之前的方法添加过介绍语音. 原理: 字幕层在溢出隐藏的父元素中向右滑动,当点击声音控制按钮时,字幕位置被固定,再次 ...
- [原创]Java项目统一UTC时间方案
Java项目统一UTC时间方案 作者:Gods_巨蚁 引言 近期团队的个别项目在进行框架升级后,部分时间值存在8小时误差,原因是错误的将数据库中的时间数据理解成了UTC时间(旧版本认为是北京时间) 考 ...
- C语言运算符优先级和口诀 (转)
一共有十五个优先级: 1 () [] . -> 2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof 3 ...
- 在linux中read、write函数
read函数从打开的设备或文件中读取数据. #include<</span>unistd.h> ssize_t read(int fd, void *buf, size_t ...
- 使用class-dump
[使用class-dump] 对于未加壳的Mach-O文件,class-dump可以从Mach-O的section中还原出objc代码的头文件.下面做一些关键演示,以及对关键问题进行说明. 1.标准用 ...
- Linux修复MBR扇区故障
给虚拟机增加一块硬盘,用于备份mbr的信息 fdisk -l 查看硬盘系统是否认识 fdisk /dev/sdb 进行分区 fdisk -l 查看分区是否出来 mkfs -t ext4 /dev/sb ...
- vector向量容器
vector向量容器不但可以像数组一样对元素进行随机访问,还能在尾部插入元素,是一种简单高效的容器,可以代替数组. vector具有内存自动管理的功能,对于元素的插入和删除,可以动态的调整所占内存. ...
- 9-python 的ProxyHandler处理器(代理设置)
ProxyHandler处理器(代理设置) 使用代理IP,这是爬虫/反爬虫的第二大招,通常也是最好用的. 很多网站会检测某一段时间某个IP的访问次数(通过流量统计,系统日志等),如果访问次数多的不像正 ...