`
tianyihuyidao9
  • 浏览: 160044 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

selinux 了解和配置

 
阅读更多

1. 获取当前 SELinux 运行状态

getenforce

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

目前常见发行版中,RHEL 和 Fedora 默认设置为 Enforcing,其余的如 openSUSE 等为 Permissive。

2. 改变 SELinux 运行状态

setenforce [ Enforcing | Permissive | 1 | 0 ]

该命令可以立刻改变 SELinux 运行状态,在 Enforcing 和 Permissive 之间切换,结果保持至关机。一个典型的用途是看看到底是不是 SELinux 导致某个服务或者程序无法运行。若是在 setenforce 0 之后服务或者程序依然无法运行,那么就可以肯定不是 SELinux 导致的。

若是想要永久变更系统 SELinux 运行环境,可以通过更改配置文件 /etc/sysconfig/selinux 实现。注意当从 Disabled 切换到 Permissive 或者 Enforcing 模式后需要重启计算机并为整个文件系统重新创建安全标签(touch /.autorelabel && reboot)。

3. SELinux 运行策略

配置文件 /etc/sysconfig/selinux 还包含了 SELinux 运行策略的信息,通过改变变量 SELINUXTYPE 的值实现,该值有两种可能:targeted 代表仅针对预制的几种网络服务和访问请求使用 SELinux 保护,strict 代表所有网络服务和访问请求都要经过 SELinux。

RHEL 和 Fedora 默认设置为 targeted,包含了对几乎所有常见网络服务的 SELinux 策略配置,已经默认安装并且可以无需修改直接使用。

若是想自己编辑 SELinux 策略,也提供了命令行下的策略编辑器 seedit 以及 Eclipse 下的编辑插件 eclipse-slide。

4. coreutils 工具的 SELinux 模式

常见的属于 coreutils 的工具如 ps、ls 等等,可以通过增加 Z 选项的方式获知 SELinux 方面的信息。

如 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

如 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

以此类推,Z 选项可以应用在几乎全部 coreutils 工具里。

Apache SELinux 配置实例

1. 让 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 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

2. 让 Apache 侦听非标准端口

默认情况下 Apache 只侦听 80 和 443 两个端口,若是直接指定其侦听 888 端口的话,会在 service httpd restart 的时候报错:

Starting httpd: (13)Permission denied: make_sock: could not bind to address [::]:888

(13)Permission denied: make_sock: could not bind to address 0.0.0.0:888

no listening sockets available, shutting down

Unable to open logs

这个时候,若是在桌面环境下 SELinux 故障排除工具应该已经弹出来报错了。若是在终端下,可以通过查看/var/log/messages 日志然后用 sealert -l 加编号的方式查看,或者直接使用 sealert -b 浏览。无论哪种方式,内容和以下会比较类似:

SELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket port 888.

***** Plugin bind_ports (92.2 confidence) suggests *************************

If you want to allow /usr/sbin/httpd to bind to network port 888

Then you need to modify the port type.

Do

# semanage port -a -t PORT_TYPE -p tcp 888

`where PORT_TYPE is one of the following: ntop_port_t, http_cache_port_t, http_port_t.` ***** Plugin catchall_boolean (7.83 confidence) suggests *******************

If you want to allow system to run with NIS

Then you must tell SELinux about this by enabling the 'allow_ypbind' boolean.

Do

setsebool -P allow_ypbind 1

***** Plugin catchall (1.41 confidence) suggests ***************************

If you believe that httpd should be allowed name_bind access on the port 888 tcp_socket by default.

Then you should report this as a bug.

You can generate a local policy module to allow this access.

Do

allow this access for now by executing:

# grep httpd /var/log/audit/audit.log | audit2allow -M mypol

# semodule -i mypol.pp

可以看出 SELinux 根据三种不同情况分别给出了对应的解决方法。在这里,第一种情况是我们想要的,于是按照其建议输入:

semanage port -a -t http_port_t -p tcp 888

之后再次启动 Apache 服务就不会有问题了。

这里又可以见到 semanage 这个 SELinux 管理配置工具。它第一个选项代表要更改的类型,然后紧跟所要进行操作。详细内容参考 Man 手册

3. 允许 Apache 访问创建私人网站

若是希望用户可以通过在 ~/public_html/ 放置文件的方式创建自己的个人网站的话,那么需要在 Apache 策略中允许该操作执行。使用:

setsebool httpd_enable_homedirs 1

setsebool 是用来切换由布尔值控制的 SELinux 策略的,当前布尔值策略的状态可以通过 getsebool 来获知。

默认情况下 setsebool 的设置只保留到下一次重启之前,若是想永久生效的话,需要添加 -P 参数,比如:

setsebool -P httpd_enable_homedirs 1
分享到:
评论

相关推荐

    操作系统安全:实验配置selinux策略(实验一).docx

    实验一:selinux策略配置 一、实验目的 掌握Selinux的命令 掌握Selinux复制和移动文件 了解chcon命令的使用 掌握Selinux布尔值的查看修改 了解Selinux应用和禁用 二、实验内容与步骤 Selinux命令 SELinux的模式 1.1 ...

    selinux问题

    在分析自定义 Service 的 SELinux 权限问题时,我们需要了解 SELinux 的基本概念和 مکانیsms。首先,我们需要了解 SELinux 的安全上下文(Security Context),包括用户、角色和类型。其次,我们需要了解 ...

    Securing Android-Powered Mobile Devices Using SELinux

    4. 为Dalvik进程配置SELinux策略比较困难; 之后介绍了将SELinux移植到Android的详细步骤。阅读该文档读者会有如下收获: 1. 深入了解SEAndroid与SELinux的差异; 2. 在嵌入式系统上移植SELinux的开发者可以参考本文...

    Tomcat部署配置及安全优化1

    Tomcat部署配置及安全优化 本文主要介绍了Tomcat的部署配置和...Tomcat的部署配置和安全优化是非常重要的,需要对Tomcat和JDK进行详细的了解,并且需要对系统环境和安全机制进行配置,以确保Tomcat服务器的安全运行。

    网络管理与维护 实验报告(二) Samba服务器的安装与配置

    本实验的目的包括掌握 Samba 的基本概念、掌握 Samba 服务器安装与配置、实现 Window 与 Linux 资源共享、了解 Samba 的原理和使用系统提供的软件搭建 Samba 服务器等多方面的内容。 实验环境 本实验使用的平台是 ...

    hadoop集群配置三节点(超详细)

    从上述步骤中,我们可以看到,配置一个三节点的Hadoop集群需要完成五个步骤:安装CentOS 7操作系统、Host设置、Host文件配置、免密登录配置和JDK安装和环境变量配置。这些步骤都是配置集群所必需的。 在Hadoop集群...

    Linux轻松架设个人网站.pdf

    其次,需要了解Apache和MySQL的基本概念和配置方法,以便正确地搭建网站。最后,需要了解Linux操作系统的安全机制,例如防火墙和SELinux,以确保网站的安全。 本文提供了一份详细的指南,指导读者如何使用ADSL宽带...

    kubernetes1.28.x云计算平台实战v4版本详细配置实战

    Kubernetes 1.28.x 云计算平台实战 v4 版本详细配置实战 ...本文档提供了详细的 Kubernetes 1.28.x 云计算平台实战配置指南,帮助读者快速地部署和配置 Kubernetes 云计算平台,并了解 Containerd 的概念和命令实战。

    RedHat 7.9安装MySQL 8.0 MGR

    安装过程中,我们需要添加 hosts、关闭和禁用防火墙、删除 mariadb-libs、配置环境变量、创建组和用户、关闭 selinux、解压二进制安装包、创建数据目录、配置 my.cnf、初始化 mysql、查看初始密码、配置开机自启动...

    使用GlusterFS创建集群NAS.pdf

    使用GlusterFS创建集群NAS 在本资源中,我们将学习如何使用GlusterFS创建集群NAS。GlusterFS是一个开源的分布式文件系统,可以将...本文档提供了详细的步骤和配置信息,以便于读者快速了解GlusterFS的安装和配置过程。

    开源大数据平台部署方案.docx

    3. 关闭防火墙和 SELinux:防火墙和 SELinux 可能会阻止大数据平台的正常运行,因此需要关闭它们。 4. 所有主机时间同步:为了确保大数据平台的正常运行,我们需要确保所有主机的时间同步。 5. 安装 JDK:JDK 是 ...

    CentOS7 64位安装全过程

    提供强大的安全性功能,如 SELinux 安全策略和防火墙配置。 集成了 Systemd 系统和服务管理工具,提高了系统的启动速度和管理效率。 资源描述: 官方网站:https://www.centos.org/ 下载页面:...

    Centos8.3 ISCSI双向认证.docx

    本文详细介绍了 CentOS 8.3 ISCSI 双向认证的配置步骤,包括实验准备、ISCSI 服务器配置和客户端配置等重要步骤。通过阅读本文,读者可以了解如何配置 ISCSI 双向认证,以便确保数据传输的安全和稳定。

    Linux下安装Apache+PHP+MySql搭建PHP运行环境

    同时,需要了解 Apache、PHP 和 MySql 的基本概念和配置方法。 Apache 介绍 Apache 是一个开源的 web 服务器软件,能够提供静态网页服务、CGI 脚本服务和 SSL 加密服务等功能。Apache 的配置文件通常位于 /etc/...

    1+X云计算平台运维与开发中级 案例实战——利用PXE实现自动化安装系统

    配置PXE母机3.1关闭防火墙和SELINUX3.2配置母机IP地址3.3上传镜像4.验证批量安装系统5.写在最后如果实验未成功CRT==无法连接==PXE-Server节点 案例目标 了解CentosOS6.5操作系统安装 了解PXE主机配置管理 了解PXE...

    9.2: 网站架构演变 、 LNP+Mariadb数据库分离 、 Web服务器集群 、 总结和答.docx

    本资源摘要信息涵盖了网站架构演变、LNP+Mariadb数据库分离和Web服务器集群三个方面的知识点,旨在帮助读者了解网站架构演变的过程、LNP+Mariadb数据库分离的实现步骤和Web服务器集群的配置方法。

    Oracle11204+RAC+ASM+Centos7超强安装手册

    四、防火墙和 Selinux 在每个节点上,需要停止 firewalld 服务,并禁用防火墙。同时,需要禁用 Selinux,以确保安装过程的顺利进行。 五、创建组和用户 在每个节点上,需要创建以下组和用户: * asmoper * ...

    《Linux系统管理》课程标准.doc

    第四部分安全设置 掌握Linux安全设置、LDAP网络用户配置、防火墙基本配置、SELinux的配置; 5.第五部分故障排除 掌握Linux引导过程与内核管理、系统恢复与故障排除; 三、课程设计 本课程共设计了9个典型的项目作为...

    一份详细的Linux-mysql实验.docx

    本文档提供了一个详细的 Linux-MySQL 实验指南,旨在帮助用户快速掌握 Linux-MySQL 的安装、配置和使用。实验分为 13 个步骤,涵盖了从挂载光盘镜像到进入 MySQL 数据库的所有过程。 挂载光盘镜像 在 Linux 系统中...

    Linux操作系统期末复习资料.docx

    Linux 操作系统期末复习资料 本资源摘要信息涵盖了 Linux 操作系统的基本概念、关键概念、常用命令、...此外,了解文件系统管理、进程管理、网络管理和安全管理等方面的知识,将有助于更好地理解和应用 Linux 系统。

Global site tag (gtag.js) - Google Analytics