SELinux安全上下文

1、SELinux 简介

1.作用

SELinux(Security-Enhanced Linux)是Linux内核的强制访问控制(MAC)安全子系统,提供更细粒度的权限控制,防止进程或用户越权操作。
2. 核心思想

- 最小权限原则:进程/用户只能访问其明确需要的资源。
- 基于标签的访问控制:所有资源(文件、端口、进程)被赋予安全上下文(Security 
3.工作模式

模式描述
Enforcing强制执行策略,拒绝非法操作并记录日志。
Pernissive仅记录违规操作,不阻止(用于调试)。
Disabled完全关闭SELinux(需重启生效)。

2、基础操作命令

1. 查看SELinux状态

getenforce# 查看当前模式
sestatus# 详细状态(模式/策略类型)

2. 切换工作模式

setenforce 0# 切换到Permissive模式
setenforce 1# 切换到Enforcing模式

意:setenforce仅临时生效,永久修改需编辑 /etc/selinux/config 文件。

3、安全上下文(Security Context)

1. 查看上下文

ls -Z /var/www/html # 查看文件/目录的上下文
ps -Z -C httpd# 查看进程的上下文

2. 修改上下文

chcon命令

选项说明
-t设置安全上下文的类型部分
-u设置安全上下文的用户部分
-r设置安全上下文的角色部分
-R递归处理文件和目录
-h显示帮助信息
-v显示操作详情
--reference=FILE使用指定文件的安全上下文
--version显示版本信息

选项使用案例

1.显示帮助信息

[root@localhost html]# chcon --help
用法:  chcon [选项]... 上下文 文件...
 或:  chcon [选项]... [-u 用户] [-r 角色] [-l 范围] [-t 类型] 文件...
 或:  chcon [选项]... --reference=参考文件 文件...
将每个指定<文件>的安全上下文变更至指定<上下文>。
使用 --reference 选项时,把指定<文件>的安全上下文设置为与<参考文件>相同。

必选参数对长短选项同时适用。
      --dereference      影响每个符号链接的原始引用文件(这是默认行为),而非
                         符号链接本身
  -h, --no-dereference   只影响符号链接,而非被引用的任何文件
  -u, --user=用户        设置指定<用户>的目标安全上下文
  -r, --role=角色        设置指定<角色>的目标安全上下文
  -t, --type=类型        设置指定<类型>的目标安全上下文
  -l, --range=范围      设置指定<范围>的目标安全上下文

      --no-preserve-root  不特殊对待“/”(默认行为)
      --preserve-root    不允许在“/”上递归操作
      --reference=参考文件  使用指定<参考文件>的安全上下文,而非指定<环境>值
  -R, --recursive        递归操作文件和目录
  -v, --verbose          为每个处理的文件输出诊断信息

以下选项是在指定了 -R 选项时被用于设置如何遍历目录结构体系。
如果您指定了多于一个选项,那么只有最后一个会生效。

  -H                     如果命令行参数是一个指向目录的符号链接,则对其
                         进行遍历
  -L                     遍历每一个遇到的指向目录的符号链接
  -P                     不遍历任何符号链接(默认)

      --help            显示此帮助信息并退出
      --version         显示版本信息并退出

GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告任何翻译错误
完整文档 <https://www.gnu.org/software/coreutils/chcon>
或者在本地使用:info '(coreutils) chcon invocation'

2.设置文件类型

将 /var/www/html/index.html 的上下文类型设为 httpd_sys_content_t:

sudo chcon -t httpd_sys_content_t /var/www/html/index.html

3.设置角色部分
将 /home/user/file.txt 的角色部分设为 object_r:

sudo chcon -r object_r /home/user/file.txt

4.详细模式操作
启用详细输出,修改 ~/.ssh/config 的上下文类型:

sudo chcon -v -t ssh_home_t ~/.ssh/config

- 实际执行时,若未添加 -v 参数,chcon 默认不输出成功信息,仅在出错时显示错误。
- 使用 -v 参数可查看操作详情(如上述表格中的“示例消息”)。

semanage 命令

选项使用案例

1.  管理端口绑定    

将TCP端口 8080 标记为HTTP服务端口:

sudo semanage port -a -t http_port_t -p tcp 8080

说明:允许Apache等HTTP服务使用8080端口。

2.管理文件上下文规则    

为自定义Web目录 /opt/webapps 设置默认上下文:

sudo semanage fcontext -a -t httpd_sys_content_t "/opt/webapps(/.*)?"
sudo restorecon -Rv /opt/webapps

说明:添加规则后需运行 restorecon 立即生效。

3.启用布尔值    

允许HTTP服务访问网络:

sudo semanage boolean --on httpd_can_network_connect

说明:无需重启服务,立即生效。

4. 查看当前端口绑定 

列出所有HTTP相关端口

semanage port -l | grep http_port_t

输出示例:

http_port_t    tcp    80, 443, 8080

4、日志分析与故障排除

1. 查看SELinux日志

tail -f /var/log/audit/audit.log # 直接查看原始日志
ausearch -m AVC -ts recent# 使用工具过滤日志

2. 生成解决方案建议

grep "avc: denied" /var/log/audit/audit.log | audit2allow -M mypolicy
semodule -i mypolicy.pp# 编译并加载自定义策略

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值