Linux之强大的selinux
简单点说,SELinux就是用来加强系统安全性的。它给一些特定程序(这些程序也在不断增加)做了一个沙箱,它将文件打上了一个安全标签,这些标签属于不同的类,也只能执行特定的操作,也就是规定了某个应用程序设定了你可以访问那些文件或目录。
这里比较重要的知识点有:
- selinux的工作原理
- 工作模式和工作类型(selinux启用,布尔规则)
- 安全上下文(上下文修改,安全标签,端口标签)
- 日志管理
查看SELinux当前状态:
一、工作原理
二、工作模式(运行状态)
Enforcing、Permissive、Disabled
1、获取当前SELinux运行状态
getenforce
可能返回结果有三种:Enforcing、Permissive 和 Disabled。
Disabled 代表 SELinux 被禁用,Permissive 代表仅记录安全警告但不阻止可疑行为,Enforcing 代表记录警告且阻止可疑行为。
2、改变 SELinux 运行状态
setenforce [ 1 | 0 ]
切换disabled状态或者从disabled状态切换至别的状态都需要重启且只能修改配置文件。而enforceing(1)和Permissive(0)两种状态间切换不需要重启,重启时会为整个文件系统重新创建安全标签(touch /.autorelabel && reboot)。
/boot/grub/grub.conf下修改状态优先级比/etc/selinux/config高
若是想要永久变更系统 SELinux 运行环境,可以通过更改配置文件 /etc/sysconfig/selinux或/etc/selinux/config实现。
工作类型(或策略):
默认targeted类型,用来保护常见的网络服务,仅有限进程收到selinux控制,只监控容易被入侵的进程,centos5保护88个服务。
布尔规则:
SELinux根据不同的工作类型对这些规则打开或关闭(on|off<布尔值1|0>),然后通过规则的开启与关闭具体地限制不同进程对文件的读取。
getsebool -a 或者 sestatus -b # 查看当前工作类型下各个规则的开启与否
setsebool -P 规则名称 [0|1] # 修改当前工作类型下指定规则的开启关闭,-P表示同时修改文件使永久生效
三、安全上下文
安全上下文存在于进程与文件中,context随进程一起存入内存中,文件的context存放在其对应的inode中,因此进程在访问文件时,要先读取inode,再判断是否能够访问该文件。
ls -Z file # 显示文件的安全上下文
ps -eZ # 显示所有进程的安全上下文
semanage来自policycoreutils-python包,centos 6上默认没安装.
系统中的每个文件都会有context,使用ls -Z查询出来的context就是当前context,系统把每个文件的默认context记录下来并保存,这样系统记录下来的就是期望context。semanage命令可以管理每个文件的期望context,也叫期望标签。
安全上下文(当前context):
semanage fcontext -l # 查看所有的期望SELinux标签
semanage fcontext -l # 查看所有的期望SELinux标签
semanage fcontext -a -t type 目标目录 # 添加期望SELinux标签
semanage fcontext -m -t type 目标目录 # 修改期望SELinux标签
semanage fcontext -d -t type 目标目录 # 删除期望SELinux标签
修改规范:
semanage fcontext -a -t type 目录(/.*)?
安全标签(期望context):标签错误将导致启动异常,文件不可用等故障。
给文件重新打安全标签:
chcon [OPTION]... [-u USER] [-r ROLE] [-t TYPE] FILE...
chcon [OPTION]... --reference=RFILE FILE...
-R:递归打标;
恢复目录或文件默认的安全上下文:
restorecon [-R] /path/to/somewhere
端口标签:
虽然听起来是修改端口号的,但是到底还是修改安全上下文的,我们用semanage工具,命令为semanage port
查询某个服务的context type字段
语法:semanage port -l |grep 服务名
添加某个端口为指定服务的访问端口
语法:semanage port -a -t type -p 协议 端口号(不要与常用端口重复)
例如添加ssh服务的端口号,默认为22
四、SELinux日志管理
yum install setroublesshoot*(重启生效)
将错误的信息写入/var/log/message
grep setroubleshoot/var/log/messages
sealert-l UUID
查看安全事件日志说明
sealert-a /var/log/audit/audit.log
扫描并分析日志
Linux之强大的selinux的更多相关文章
- [转]linux中强大的screen命令
[转]linux中强大的screen命令 http://pythonorg.diandian.com/post/2012-01-05/40027464147 今天用SCREEN用点生了,有几个功能不知 ...
- SpringCloud的应用发布(四)vmvare+linux,防火墙和selinux
一.vmvare网络配置为nat模式 二.vmvare的网络设置为桥接bridge模式 1.linux 网卡的ip获取方式dhcp 三.关闭linux的防火墙和selinux 1.临时关闭防火墙 sy ...
- [转帖]「日常小记」linux中强大且常用命令:find、grep
「日常小记」linux中强大且常用命令:find.grep https://zhuanlan.zhihu.com/p/74379265 在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍 ...
- Linux下开启关闭SeLinux
SELinux (Security-Enhanced Linux) in Fedora is an implementation of mandatory access control in the ...
- 【日常小记】linux中强大且常用命令:find、grep【转】
转自:http://www.cnblogs.com/skynet/archive/2010/12/25/1916873.html 在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍fin ...
- linux 程序管理与SElinux
此文涉及的命令:&.jobs.fg.bg.kill.nohup.ps.top.pstree.free.uname.uptime.netstat.dmesg.vmstat.fuser.lsof. ...
- Linux 中强大且常用命令:find、grep
在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下: find命令 f ...
- 【转载】Linux中强大且常用命令:find、grep
转载自:http://www.linuxeden.com/html/softuse/20130804/142065.html 在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find. ...
- linux中强大且常用命令:find、grep
在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们. 本文结构如下: find命令 find命令的一般形 ...
随机推荐
- Xamarin nuget package update 错误
update xamarin.Forms包时出现错误: 'The specified path, file name, or both are too long. The fully qualifie ...
- Boost Asioserver使用
今天主要想说道说道boost里面的网络通信库怎样设计和使用,由于近期一直在和网络一起工作,大数据处理和机器学习都离不开最后使用网络进行上线部署.先看看所有的源码吧. #include <cstd ...
- srm 539
http://mlz000.github.io/2015/07/15/srm-539/ 250 Description: 从若干个盒子中随意选择几个装石头.每一个盒子容量都有上下限,一旦选择使用某个盒 ...
- mac 下安装caffe(一)
1.brew install --build-from-source -vd boost boost-python 这一步出错:libtool: unrecognized option `-stati ...
- js 数字格式化,只能输入正负整数,小数
1.只能输入正整数 <input name="columnValue" class="input96 required" type="text& ...
- kafka01
消息队列松耦合 消息队列
- 简析LCD1602液晶驱动及在Arduino上的实例实现
这几日在倒腾新到的Arduino,比起普通单片机来,感觉写程序太简单了.不过和外设打交道还是没那么容易,比如今天要说的看似简单的LCD1602液晶,却费了我一整天才基本搞懂,不过还是有一个小问题没有实 ...
- ALSA声卡驱动中的DAPM详解之二:widget-具备路径和电源管理信息的kcontrol
上一篇文章中,我们介绍了音频驱动中对基本控制单元的封装:kcontrol.利用kcontrol,我们可以完成对音频系统中的mixer,mux,音量控制,音效控制,以及各种开关量的控制,通过对各种kco ...
- [bzoj3274]Circle
https://www.zybuluo.com/ysner/note/1243396 题面 有\(n\)个排成一圈的格子,并且已知正整数\(k\)和\(m\),你需要往每个格子中填入一个大于等于\(k ...
- Vue.prototype的用法
基础事例: 在vue项目main.js文件中: Vue.prototype.$appName = 'My App' 这样你可以通过在原型上定义它们使其在每个 Vue 的实例中可用. new Vue({ ...