博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sysadmin默认密码_sysadmin的SELinux指南:42个主要问题的答案
阅读量:2543 次
发布时间:2019-05-11

本文共 5257 字,大约阅读时间需要 17 分钟。

sysadmin默认密码

“这是一个重要且普遍的事实,即事物并不总是看起来那样……”
道格拉斯·亚当斯(Douglas Adams),
《银河系漫游指南》

安全。 硬化。 合规性。 政策。 SysAdmin启示录的四骑士。 除了日常任务(监视,备份,实现,调整,更新等)外,我们还负责保护系统的安全。 甚至那些第三方提供程序告诉我们禁用增强安全性的系统。 对于“不可能任务 ”的 ( 似乎是一项工作。

面对这种困境,一些系统管理员决定因为他们认为他们永远不会知道生命,宇宙和其他一切大问题的答案。 而且,众所周知,答案是

本着《银河漫游指南》的精神, 以下是有关在系统上管理和使用的重大问题的42个答案。

  1. SELinux是一个LABELING系统,这意味着每个进程都有一个LABEL。 每个文件,目录和系统对象都有一个LABEL。 策略规则控制标记的进程和标记的对象之间的访问。 内核执行这些规则。
  1. 两个最重要的概念是: 标记 (文件,进程,端口等)和类型强制 (基于类型将进程彼此隔离)。
  1. 正确的标签格式为user:role:type:level可选 )。
  1. 多层安全性(MLS)实施的目的是基于将要使用的数据的安全性级别来控制进程( )。 例如,机密进程无法读取机密数据。
  1. 多类别安全性(MCS)实施可保护彼此之间类似的进程(例如虚拟机,OpenShift齿轮,SELinux沙箱,容器等)。
  1. 引导时用于更改SELinux模式的内核参数:
    • autorelabel=1 →强制系统重新标记
    • selinux=0 →内核未加载SELinux基础结构的任何部分
    • enforcing=0 →以宽松模式启动
  1. 如果您需要重新标记整个系统:
    # touch /.autorelabel
    #reboot
    如果系统标签包含大量错误,则可能需要以宽松模式引导才能使自动重新标签成功。
  1. 要检查是否已启用SELinux: # getenforce
  1. 临时启用/禁用SELinux: # setenforce [1|0]
  1. SELinux状态工具: # sestatus
  1. 配置文件: /etc/selinux/config
  1. SELinux如何工作? 这是为Apache Web服务器添加标签的示例:
    • 二进制文件: /usr/sbin/httpdhttpd_exec_t
    • 配置目录: /etc/httpdhttpd_config_t
    • 日志文件目录: /var/log/httpdhttpd_log_t
    • 内容目录: /var/www/htmlhttpd_sys_content_t
    • 启动脚本: /usr/lib/systemd/system/httpd.servicehttpd_unit_file_d
    • 流程: /usr/sbin/httpd -DFOREGROUNDhttpd_t
    • 端口: 80/tcp, 443/tcphttpd_t, http_port_t

httpd_t上下文中运行的httpd_t可以与带有httpd_something_t标签的对象进行交互。

  1. 许多命令接受参数-Z来查看,创建和修改上下文:
    • ls -Z
    • id -Z
    • ps -Z
    • netstat -Z
    • cp -Z
    • mkdir -Z

根据文件的父目录的上下文创建文件时会设置上下文(有一些例外)。 RPM可以将上下文设置为安装的一部分。

  1. SELinux错误有四个主要原因,下面的项目15-21进一步说明了这些原因:
    • 标签问题
    • SELinux需要知道的一些事情
    • SELinux政策/应用程式中的错误
    • 您的信息可能被泄露
  1. 标记问题:如果/srv/myweb中的文件未正确标记,则访问可能会被拒绝。 以下是一些解决方法:
    • 如果您知道标签:
      # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
    • 如果您知道带有等效标签的文件:
      # semanage fcontext -a -e /srv/myweb /var/www
    • 还原上下文(两种情况):
      # restorecon -vR /srv/myweb
  1. 标注问题:如果移动文件而不是复制文件,则文件将保留其原始上下文。 要解决这些问题:
    • 更改带有标签的context命令:
      # chcon -t httpd_system_content_t /var/www/html/index.html
    • 使用参考标签更改上下文命令:
      # chcon --reference /var/www/html/ /var/www/html/index.html
    • 还原上下文(对于两种情况): # restorecon -vR /var/www/html/
  1. 如果SELinux需要知道 HTTPD在端口8585上侦听,请告诉SELinux:
    # semanage port -a -t http_port_t -p tcp 8585
  1. SELinux需要知道布尔值允许在运行时更改SELinux策略的某些部分而无需任何SELinux策略编写知识。 例如,如果您希望httpd发送电子邮件,请输入: # setsebool -P httpd_can_sendmail 1
  1. SELinux需要知道布尔值是SELinux的开启/关闭设置:
    • 要查看所有布尔值: # getsebool -a
    • 要查看每个描述: # semanage boolean -l
    • 要设置布尔值,请执行以下命令: # setsebool [_boolean_] [1|0]
    • 要永久配置它,请添加-P 。 例如:
      # setsebool httpd_enable_ftp_server 1 -P
  1. SELinux策略/应用程序可能存在错误,包括:
    • 异常的代码路径
    • 构型
    • 重定向stdout
    • 文件描述符泄漏
    • 可执行内存
    • 建库不好
    打开票证(不要提交Bugzilla报告; Bugzilla没有SLA)。
  1. 如果您在受限域中尝试以下操作,则可能会损害您的信息
    • 加载内核模块
    • 关闭SELinux的强制模式
    • 写入etc_t/shadow_t
    • 修改iptables规则
  1. 用于策略模块开发的SELinux工具:
    # yum -y install setroubleshoot setroubleshoot-server
    安装后重新启动或重新启动auditd
  1. 使用journalctl列出与setroubleshoot相关的所有日志:
    # journalctl -t setroubleshoot --since=14:20
  1. 使用journalctl列出与特定SELinux标签有关的所有日志。 例如:
    # journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0
  1. 当发生SELinux错误时,请使用setroubleshoot日志,并提出一些可能的解决方案。 例如,来自journalctl
    Jun 14 19:41:07 web1 setroubleshoot: SELinux is preventing httpd from getattr access on the file /var/www/html/index.html. For complete message run: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e       
    # sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
    SELinux is preventing httpd from getattr access on the file /var/www/html/index.html.
    ***** Plugin restorecon (99.5 confidence) suggests ************************
    If you want to fix the label,
    /var/www/html/index.html default label should be httpd_syscontent_t.
    Then you can restorecon.
    Do
    # /sbin/restorecon -v /var/www/html/index.html
  1. 记录:SELinux到处记录信息:
    • /var/log/messages
    • /var/log/audit/audit.log
    • /var/lib/setroubleshoot/setroubleshoot_database.xml
  1. 日志记录:在审核日志中查找SELinux错误:
    # ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
  1. 要搜索特定服务的SELinux访问向量高速缓存(AVC)消息,请执行以下操作:
    # ausearch -m avc -c httpd
  1. audit2allow实用程序从拒绝操作的日志中收集信息,然后生成SELinux策略允许规则。 例如:
    • 要生成为什么访问被拒绝的易于理解的描述: # audit2allow -w -a
    • 要查看允许拒绝访问的类型实施规则: # audit2allow -a
    • 要创建定制模块: # audit2allow -a -M mypolicy
      -M选项使用指定的名称创建类型强制文件(.te),并将规则编译为策略包(.pp): mypolicy.pp mypolicy.te
    • 要安装定制模块: # semodule -i mypolicy.pp
  1. 要将单个进程(域)配置为允许运行: # semanage permissive -a httpd_t
  1. 如果您不再希望某个域是允许的: # semanage permissive -d httpd_t
  1. 要禁用所有许可域: # semodule -d permissivedomains
  1. 启用S​​ELinux MLS策略: # yum install selinux-policy-mls
    /etc/selinux/config:
    SELINUX=permissive
    SELINUXTYPE=mls
    确保SELinux在许可模式下运行: # setenforce 0
    使用fixfiles脚本来确保在下次重新引导时重新标记文件:
    # fixfiles -F onboot # reboot
  1. 创建具有特定MLS范围的用户: # useradd -Z staff_u john
    使用useradd命令,将新用户映射到现有的SELinux用户(在本例中为staff_u )。
  1. 要查看SELinux和Linux用户之间的映射: # semanage login -l
  1. 为用户定义特定范围: # semanage login --modify --range s2:c100 john
  1. 要更正用户主目录上的标签(如果需要): # chcon -R -l s2:c100 /home/john
  1. 列出当前类别: # chcat -L
  1. 要修改类别或开始创建自己的类别,请按如下所示修改文件:
    /etc/selinux/_<selinuxtype>_/setrans.conf
  1. 要在特定文件,角色和用户上下文中运行命令或脚本,请执行以下操作:
    # runcon -t initrc_t -r system_r -u user_u yourcommandhere
    • -t文件上下文
    • -r角色上下文
    • -u用户上下文
  1. 在禁用SELinux的情况下运行的容器:
    • 使用Podman: # podman run --security-opt label=disable
    • 使用Docker: # docker run --security-opt label=disable
  1. 如果您需要授予容器对系统的完全访问权限:
    • 使用Podman: # podman run --privileged
    • 使用Docker: # docker run --privileged

有了这个,您已经知道答案了。 因此,请: 不要惊慌,并打开SELinux

资料来源:

  • ,作者
  • Dan Walsh撰写的

翻译自:

sysadmin默认密码

转载地址:http://jwnzd.baihongyu.com/

你可能感兴趣的文章
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-1.SpringBoot整合微信支付开发在线教育视频站点介绍...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-1.快速搭建SpringBoot项目,采用Eclipse...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-4.在线教育后台数据库设计...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-3.热部署在Eclipse和IDE里面的使用...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-3.在线教育站点需求分析和架构设计...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-4.后端项目分层分包及资源文件处理...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-2.快速搭建SpringBoot项目,采用IDEA...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-7.接口配置文件自动映射到属性和实体类配置...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-5.开源工具的优缺点选择和抽象方法的建议...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-1.整合Mybatis访问数据库和阿里巴巴数据源...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-4.动态Sql语句Mybaties SqlProvider...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-1.单机和分布式应用的登录检验讲解...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-3.登录检验JWT实战之封装通用方法...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-2.使用Mybatis注解开发视频列表增删改查...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-2.微信扫一扫功能开发前期准备...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-3.Vidoe相关接口完善和规范协议...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-3.微信Oauth2.0交互流程讲解...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-5.PageHelper分页插件使用
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-6.微信扫码登录回调本地域名映射工具Ngrock...
查看>>