Linux中安装使用semanage来修改文本

  Selinux极大的增强了Linux系统的安全性,能将用户权限关在笼子里,如httpd服务,apache默认只能访问/var/www目录,并只能监听80和443端口,因此能有效的防范0-day类的攻击。举例来说,系统上的 Apache 被发现存在一个漏洞,使得某远程用户可以访问系统上的敏感文件(比如 /etc/passwd 来获得系统已存在用户),而修复该安全漏洞的 Apache 更新补丁尚未释出。此时 SELinux 可以起到弥补该漏洞的缓和方案。因为 /etc/passwd 不具有 Apache 的访问标签,所以 Apache 对于 /etc/passwd 的访问会被 SELinux 阻止。

  CentOS系统自带的chcon工具只能修改文件、目录等的文件类型和策略,无法对端口、消息接口和网络接口等进行管理,semanage能有效胜任SELinux的相关配置工作。

  安装:

  代码如下:

  # yum -y install policycoreutils-python

  用法:

  semanage命令用来查询与修改SELinux默认目录的安全上下文。

  semanage fcontext [-S store] -{a|d|m|l|n|D} [-frst] file_spec

  semanage fcontext [-S store] -{a|d|m|l|n|D} -e replacement target

  主要参数:

  -a:添加

  -d:删除

  -m:修改

  -l:列举

  -n:不打印说明头

  -D:全部删除

  -f:文件

  -s:用户

  -t:类型

  r:角色

  基本使用:

  管理登录linux的用户和SELinux局限的用户之间的映射。

  代码如下:

  semanage login [-S store] -{a|d|m|l|n|D} [-sr] login_name | %groupname

  管理策略模块:

  代码如下:

  semanage module [-S store] -{a|d|l} [-m [--enable | --disable] ] module_name

  管理网络端口类型定义

  代码如下:

  semanage port [-S store] -{a|d|m|l|n|D} [-tr] [-p proto] port | port_range

  例:如apache采用非标准端口,需执行如下命令:

  代码如下:

  emanage port -a -t http_port_t -p tcp port_number

  查看当前允许的httpd端口:

  代码如下:

  # semanage port -l|grep http

  http_cache_port_t tcp 3128, 8080, 8118, 8123, 10001-10010

  http_cache_port_t udp 3130

  http_port_t tcp 8888, 80, 443, 488, 8008, 8009, 8443

  pegasus_http_port_t tcp 5988

  pegasus_https_port_t tcp 5989

  注意:8888是我刚才添加的

  管理网络接口类型定义

  代码如下:

  semanage interface [-S store] -{a|d|m|l|n|D} [-tr] interface_spec

  管理网络节点类型定义

  代码如下:

  semanage node [-S store] -{a|d|m|l|n|D} [-tr] [ -p protocol ] [-M netmask] address

  管理文件中映射定义

  代码如下:

  semanage fcontext [-S store] -{a|d|m|l|n|D} [-frst] file_spec

  semanage fcontext [-S store] -{a|d|m|l|n|D} -e replacement target

  例:让 Apache 可以访问位于非默认目录下的网站文件

  首先,用 semanage fcontext -l | grep '/var/www' 获知默认 /var/www 目录的 SELinux 上下文:

  代码如下:

  /var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0

  从中可以看到 Apache 只能访问包含 httpd_sys_content_t 标签的文件。

  假设希望 Apache 使用 /srv/www 作为网站文件目录,那么就需要给这个目录下的文件增加 httpd_sys_content_t 标签,分两步实现。

  首先为 /srv/www 这个目录下的文件添加默认标签类型:semanage fcontext -a -t httpd_sys_content_t '/srv/www(/.*)?' 然后用新的标签类型标注已有文件:restorecon -Rv /srv/www 之后 Apache 就可以使用该目录下的文件构建网站了。

  其中 restorecon 在 SELinux 管理中很常见,起到恢复文件默认标签的作用。比如当从用户主目录下将某个文件复制到 Apache 网站目录下时,Apache 默认是无法访问,因为用户主目录的下的文件标签是 user_home_t。此时就需要 restorecon 将其恢复为可被 Apache 访问的 httpd_sys_content_t 类型:

  代码如下:

  restorecon -v /srv/www/foo.com/html/file.html

  restorecon reset /srv/www/foo.com/html/file.html context unconfined_u:object_r:user_home_t:s0->system_u:object_r:httpd_sys_content_t:s0

  semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?" //新建一条规则,指定/web目录及其下的所有文件的扩展属性为httpd_sys_content_t

(0)

相关推荐

  • Linux中安装使用semanage来修改文本的教程

    Selinux极大的增强了Linux系统的安全性,能将用户权限关在笼子里,如httpd服务,apache默认只能访问/var/www目录,并只能监听80和443端口,因此能有效的防范0-day类的攻击 ...

  • linux中安装Zend Optimizer与eAccelerator教程

    eAccelerator与Zend Optimizer是一个加速软件了,我们可以利用它与php环境同步运行使用得php性能更好了,下面来一起看看linux中安装Zend Optimizer与eAcce ...

  • 如何在Linux中安装JDK?

     在Linux中安装JDK,过程如下: 1. 先从网上下载jdk,下载后放在/home目录中,当然其它地方也行。 进入安装目录 #cd /home #cp jdk-1_6_0_03-linux-i58 ...

  • linux中安装jdk

    在Linux中使用压缩包安装jdk 操作方法 01 首先当然是下载jdk,选择想要的版本进行安装. 官网下载地址为:直接搜即可(本来放了地址的,但是审核未果) 注意:下载tar.gz的包,选择对应你的 ...

  • 如何在Linux中安装Redis服务器

    Redis服务器是一种非关系型数据存储服务器,它经常和Linux系统搭配使用.那么如何在Linux系统中安装Redis服务器呢?下面小编给大家分享一下. 操作方法 01 首先我们运用tar命令解压re ...

  • Linux中安装部署Docker管理工具Drone全攻略

    Drone 是一个构建在Docker之上的开源持续集成平台(CI).Drone 提供了一组预建的Docker映像,支持12+种语言和几乎所有主要的数据库.这意味着你不必花时间来安装软件和配置您的构建环 ...

  • Linux中安装sosreport和supportconfig来收集系统信息

    sosreport sosreport是一个类型于supportconfig 的工具,sosreport是python编写的一个工具,适用于centos(和redhat一样,包名为sos).ubunt ...

  • 怎么在linux中安装软件

    Linux两大系列的区别--软件包管理不同:Redhat系列rpm/yum,Debian系列apt-get/dpkg CentOS属于Redhat系列,这里只介绍rpm和yum等软件包管理方式 操作方 ...

  • Linux中安装 Visual Studio Code的 步骤

    Visual Studio Code 是基于 Electron 优化代码后的编辑器,后者是基于 Chromium 的一款软件,用于为桌面系统发布 io.js 应用.Visual Studio Code ...