Linux系统——SElinux

这篇具有很好参考价值的文章主要介绍了Linux系统——SElinux。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

一、SELinux 的作用及权限管理机制 

1.SELinux 的作用

1.1DAC

1.2MAC

1.3DAC 和 MAC 的对比

2.SELinux 基本概念

2.1主体(Subject)

2.2对象(Object)

2.3政策和规则(Policy & Rule) 

2.4安全上下文(Security Context)

2.4.1安全上下文的结构及含义

2.5SELinux 的工作模式

3.SELinux 基本操作

3.1查询文件或目录的安全上下文

3.2 查询进程的安全上下文

3.3手动修改文件或目录的安全上下文

3.4把文件或目录的安全上下文恢复到默认值

3.5查询系统中的布尔型规则及其状态

3.7开关一个布尔型规则

3.8添加目录的默认安全上下文

3.9添加某类进程允许访问的端口

4.SElinux权限管理

SElinux配置文件


前言

安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。

SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。

SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。

禁用Administrator与Guest用户

sudo usermod -L /sbin/nologin  Administrator(root)
sudo usermod -L /sbin/nologin  guest


passwd  -l  Administrator(root)
passwd  -l  guest

设置密码最小长度为8位,密码必须符包含大小写字符与数字的策略

vim /etc/pam.d/system-auth

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1  enforce_for_root

参数说明
负数:代表最少出现次数,正数:代表最多出现次数
minlen = 8,密码长度至少8位;
lcredit=-1,至少包含一个小写字母;
ucredit=-1,至少包含一个大写字母;
dcredit=-1,至少包含要给数字;
ocredit=-1,至少包含一个特殊字符;
difok=5,新密码最多与旧密码重复5个字符;
enforce_for_root,对root强制执行密码复杂度策略。

输入三次无效用户锁定,锁定时间为10分钟

yum install pam pam_tally2  

/etc/pam.d/system-auth文件并找到以下行:
auth        required      pam_env.so
在行的下方添加以下内容:
auth     required    pam_tally2.so deny=3 onerr=fail unlock_time=600 even_deny_root root_unlock_time=600

pam_tally2.so:指定使用pam_tally2模块。
deny=3:定义了密码错误达到3次后用户被拒绝登录。
onerr=fail:如果模块遇到错误,将导致认证失败。
unlock_time=300:定义用户被锁定的时间(以秒为单位)


###需要重启  对图形界面无效

一、SELinux 的作用及权限管理机制 

1.SELinux 的作用

SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。

1.1DAC

在没有使用 SELinux 的操作系统中,决定一个资源是否能被访问的因素是:某个资源是否拥有对应用户的权限(读、写、执行)。只要访问这个资源的进程符合以上的条件就可以被访问。而最致命问题是,root 用户不受任何管制,系统上任何资源都可以无限制地访问。这种权限管理机制的主体是用户,也称为自主访问控制(DAC)。

1.2MAC

在使用了 SELinux 的操作系统中,决定一个资源是否能被访问的因素除了上述因素之外,还需要判断每一类进程是否拥有对某一类资源的访问权限。

这样一来,即使进程是以 root 身份运行的,也需要判断这个进程的类型以及允许访问的资源类型才能决定是否允许访问某个资源。进程的活动空间也可以被压缩到最小。

即使是以 root 身份运行的服务进程,一般也只能访问到它所需要的资源。即使程序出了漏洞,影响范围也只有在其允许访问的资源范围内。安全性大大增加。

这种权限管理机制的主体是进程,也称为强制访问控制(MAC)。

而 MAC 又细分为了两种方式,一种叫类别安全(MCS)模式,另一种叫多级安全(MLS)模式。

1.3DAC 和 MAC 的对比

在 DAC 模式下,只要相应目录有相应用户的权限,就可以被访问。而在 MAC 模式下,还要受进程允许访问目录范围的限制。 

2.SELinux 基本概念

2.1主体(Subject)

可以完全等同于进程。

2.2对象(Object)

被主体访问的资源。可以是文件、目录、端口、设备等。

2.3政策和规则(Policy & Rule) 

系统中通常有大量的文件和进程,为了节省时间和开销,通常我们只是选择性地对某些进程进行管制。而哪些进程需要管制、要怎么管制是由政策决定的。一套政策里面有多个规则。部分规则可以按照需求启用或禁用(以下把该类型的规则称为布尔型规则)。

规则是模块化、可扩展的。在安装新的应用程序时,应用程序可通过添加新的模块来添加规则。用户也可以手动地增减规则。

在 CentOS 7 系统中,有三套政策,分别是:

  • targeted:对大部分网络服务进程进行管制。这是系统默认使用的政策(下文均使用此政策)。
  • minimum:以 targeted 为基础,仅对选定的网络服务进程进行管制。一般不用。
  • mls:多级安全保护。对所有的进程进行管制。这是最严格的政策,配置难度非常大。一般不用,除非对安全性有极高的要求。

政策可以在 /etc/selinux/config 中设定。

2.4安全上下文(Security Context)

安全上下文是 SELinux 的核心。安全上下文我自己把它分为「进程安全上下文」和「文件安全上下文」。一个「进程安全上下文」一般对应多个「文件安全上下文」。只有两者的安全上下文对应上了,进程才能访问文件。它们的对应关系由政策中的规则决定。

文件安全上下文由文件创建的位置和创建文件的进程所决定。而且系统有一套默认值,用户也可以对默认值进行设定。需要注意的是,单纯的移动文件操作并不会改变文件的安全上下文。

2.4.1安全上下文的结构及含义

安全上下文有四个字段,分别用冒号隔开。形如:system_u:object_r:admin_home_t:s0。

2.5SELinux 的工作模式

  • enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中。
  • permissive:宽容模式。违反 SELinux 规则的行为只会记录到日志中。一般为调试用。
  • disabled:关闭 SELinux。

SELinux 工作模式可以在 /etc/selinux/config 中设定。

如果想从 disabled 切换到 enforcing 或者 permissive 的话,需要重启系统。反过来也一样。

enforcing 和 permissive 模式可以通过 setenforce 1|0 命令快速切换。

3.SELinux 基本操作

3.1查询文件或目录的安全上下文

ls -Z /etc/hosts
#查询 /etc/hosts 的安全上下文
-rw-r--r--. root root system_u:object_r:net_conf_t:s0 /etc/hosts

3.2 查询进程的安全上下文

ps auxZ | grep -v grep | grep nginx 
查询 Nginx 相关进程的安全上下文
system_u:system_r:httpd_t:s0 root 7997 0.0 0.0 122784 2156 ? Ss 14:31 0:00 nginx: master process /usr/sbin/nginx
system_u:system_r:httpd_t:s0 nginx 7998 0.0 0.0 125332 7560 ? S 14:31 0:00 nginx: worker process

3.3手动修改文件或目录的安全上下文

chcon [...]

选项 含义
-u 修改安全上下文的用户字段
修改安全上下文的用户字段 修改安全上下文的角色字段
-t 修改安全上下文的类型字段
-l 修改安全上下文的级别字段
--reference 修改与指定文件或目录相一致的安全上下文
-R -R
-h 修改软链接的安全上下文(不加此选项则修改软链接对应文件)
chcon -u aaa_u -r bbb_r -t ccc_t test
#修改 test 的安全上下文为 aaa_u:bbb_r:ccc_t:s0

3.4把文件或目录的安全上下文恢复到默认值

restorecon [选项] [...]

restorecon -R /usr/share/nginx/html/
#添加一些网页文件到 Nginx 服务器的目录之后,为这些新文件设置正确的安全上下文

3.5查询系统中的布尔型规则及其状态

getsebool -a

由于该命令要么查询所有规则,要么只查询一个规则,所以一般都是先查询所有规则然后用 grep 筛选。

getsebool -a | grep httpd
#查询与 httpd 有关的布尔型规则
httpd_anon_write --> off

httpd_builtin_scripting --> on

httpd_can_check_spam --> off

httpd_can_connect_ftp --> off

3.7开关一个布尔型规则

setsebool [选项]   -P重启依然生效

setsebool -P httpd_anon_write on
#开启 httpd_anon_write 规则

3.8添加目录的默认安全上下文

semanage fcontext -a -t "(/.*)?"

注:目录或文件的默认安全上下文可以通过 semanage fcontext -l 命令配合 grep过滤查看

semanage fcontext -a -t httpd_sys_content_t "/usr/share/nginx/html2(/.*)?"
#为 Nginx 新增一个网站目录 /usr/share/nginx/html2 之后,需要为其设置与原目录相同的默认安全上下文

3.9添加某类进程允许访问的端口

semanage port -a -t -p

注:各种服务类型所允许的端口号可以通过 semanage port -l 命令配合 grep 过滤查看

semanage port -a -t http_port_t -p tcp 10080
#为 Nginx 需要使用 10080 的端口用于 HTTP 服务

4.SElinux权限管理

SELinux的状态:

  • enforcing:强制,每个受限的进程都必然受限

  • permissive:允许,每个受限的进程违规操作不会被禁止,但会被记录于审计日志

  • disabled:禁用

相关命令:

  • getenforce: 获取selinux当前状态

  • sestatus :查看selinux状态

  • setenforce 0|1

    • 0: 设置为permissive  宽容

    • 1: 设置为enforcing   强制

[root@localhost html]#getenforce 
Enforcing


如果没有开启可以使用以下命令开启
[root@localhost html]#setenforce 1


永久开启需要修改  此处文件  /etc/selinux/config
vim /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

Linux系统——SElinux,linux,运维,服务器

[root@localhost ~]#yum provides seinfo
#查询seinfo来源于哪个安装包

Linux系统——SElinux,linux,运维,服务器

[root@localhost ~]#yum install setools-console.x86_64 -y

Linux系统——SElinux,linux,运维,服务器

如果修改文件系统类型

Linux系统——SElinux,linux,运维,服务器

Linux系统——SElinux,linux,运维,服务器

Linux系统——SElinux,linux,运维,服务器

如果开启SElinux  setenforce 为1的话就无法访问index.html;如果关闭SElinux setenforce为0的话就可以访问index.html

Linux系统——SElinux,linux,运维,服务器

[root@localhost html]#seinfo  -t
#可以看到所有的安全上下文类型
[root@localhost html]# chcon -t var_t /var/www/html/index2.html
#把 index2文件类型修改  为  var_t
[root@localhost html]#ls -Z
-rw-r--r--. root root unconfined_u:object_r:var_t:s0   index2.html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_rw_content_t:s0 index.html

Linux系统——SElinux,linux,运维,服务器

需要打开软件端口绑定,如果端口不让绑定,一定是防护有问题;输入该命令后就可以重启httpd服务了

SElinux配置文件

Linux系统——SElinux,linux,运维,服务器文章来源地址https://www.toymoban.com/news/detail-839105.html

到了这里,关于Linux系统——SElinux的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux运维】shell脚本检查服务器内存和CPU利用率

    在管理服务器时候写了一个 shell脚本,在服务上实现每天凌晨3点查系统的指定文件夹下的容量大小,如果超过10G就要删除3天前的内容,还要时刻查询内存和cpu利用率,如果超过80%就要提示用户出现过载 将以上代码保存为一个.sh文件,然后通过crontab在每天凌晨3点运行即可:

    2024年02月09日
    浏览(67)
  • Linux服务器常见运维性能测试(1)综合跑分unixbench、superbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月04日
    浏览(82)
  • Linux本地部署1Panel服务器运维管理面板并实现公网访问

    1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等 下面我们介绍在Linux 本地安装1Panel 并结合cpolar 内网穿透工具实现远程访问1Panel 管理界面 执行如下命令一键安装 1Panel: 安

    2024年02月04日
    浏览(98)
  • [1Panel]开源,现代化,新一代的 Linux 服务器运维管理面板

    本期测评试用一下1Panel这款面板。1Panel是国内飞致云旗下开源产品。整个界面简洁清爽,后端使用GO开发,前端使用VUE的Element-Plus作为UI框架,整个面板的管理都是基于docker的,想法很先进。官方还提供了视频的使用教程,本期为大家按照本专栏的基本内容进行多方面的测评。

    2024年02月07日
    浏览(94)
  • Linux服务器常见运维性能测试(3)CPU测试super_pi、sysbench

    最近需要测试一批服务器的相关硬件性能,以及在常规环境下的硬件运行稳定情况,需要持续拷机测试稳定性。所以找了一些测试用例。本次测试包括在服务器的高低温下性能记录及压力测试,高低电压下性能记录及压力测试,常规环境下CPU满载稳定运行的功率记录。 这个系

    2024年02月02日
    浏览(55)
  • Linux系统——SElinux

    目录 前言 一、SELinux 的作用及权限管理机制  1.SELinux 的作用 1.1DAC 1.2MAC 1.3DAC 和 MAC 的对比 2.SELinux 基本概念 2.1主体(Subject) 2.2对象(Object) 2.3政策和规则(Policy Rule)  2.4安全上下文(Security Context) 2.4.1安全上下文的结构及含义 2.5SELinux 的工作模式 3.SELinux 基本操作 3.1查

    2024年03月13日
    浏览(40)
  • Linux系统开启或关闭SELinux。

    SELinux(Security-Enhanced Linux)是一个强制访问控制(MAC)机制,用于对 Linux 操作系统进行更加细粒度的访问控制,可防范许多攻击方式。 但在某些情况下,SELinux 可能会对系统运维和软件开发造成一些麻烦。 因此,在某些情况下,需要关闭或开启SELinux。 本文将详细介绍如何在

    2024年02月03日
    浏览(36)
  • Linux基本网页访问--防火墙、服务管理、selinux强制访问

    正常访问外部网络需要进行4部操作操作:         1、开启httpd服务systemctl restart httpd         2、关闭防火墙服务 systemctl stop firewalld         3、访问数据库时,需要开启数据库的服务systemctl restart mariadb         4、关闭强制访问  setenforce 0 1、防火墙管理    

    2024年02月06日
    浏览(45)
  • linux重装系统步骤 包含raid【主要针对服务器重装】,腾讯Linux运维开发面试记录

    8 、查看网关主机名: cat /etc/sysconfig/network 9 、查看单条网卡信息: ethtool 物理网卡名 比如有很多网卡 ,不知道 使用哪个网卡的时候,就用这个方法。 (万兆网Link为yes就是使用的网卡) ​​ 10、查看cpu内存 查看cpu 最简单方法:输入 top 后按 1 即可查看。 查看CPU信息(型号

    2024年04月12日
    浏览(49)
  • Linux系统安装Samba服务器

    在实际开发中,我们经常会有跨系统之间文件传递的需求,Samba 便是能够在 Windows 和 Linux 之间传递文件的服务,功能也是非常强大和好用,本篇文章将介绍如何在 Linux 系统上安装 Samba 服务,以 CentOS7 系统为例。 首先,我们通过 yum 包管理工具在 CentOS7 系统上安装 Samba 服务。

    2024年01月22日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包