selinux基础

基本 SELINUX 安全性概念

SELINUX ( 安全增强型 Linux ) 是可保护你系统安全性的额外机制
在某种程度上 , 它可以被看作是与标准权限系统并行的权限系统。在常规模式中 , 以用户身份运行进程 , 并且系统上的文件和其他资源都设置了权限 ( 控制哪些用户对哪些文件具有哪些访问权 SELINUX 的另一个不同之处在于 , 若要访问文件 ,你必须具有普通访问权限和 SELINUX 访问权限。因此 , 即使以超级用户身份root 运行进程 , 根据进程以及文件或资源的 SELinux 安全性上下文可能拒绝访问文件或资源限 ) 标签

  • 在无 selinux 保护时 , 恶意人员可以尝试利用 web 服务器中的安全漏 洞强行进入系统。如果成功 , 将会控制以用户 apache 身份运行的进程 , 这时再由一个本地安全漏洞就可能使攻击者获得超级用户的访问权限

selinux 安全上下文访问规则

WEB 服务器的 HTTPD 进程设置了 SELINUX 上下文system_u:system_r:httpd_t 标签。该上下文的重要部分是第三个用冒号分隔的字段 SELINUX 类型 : httpd_t系统上的文件和资源也设置了 SELINUX 上下文标签 , 并且重要的部分是 SELINUX 类型。例如 , /var/www/html 中的文件具有类型 httpd_sys_content_t 。
/tmp 和 /var/tmp 中的文件通常具有类型 tmp_t Seliux 策略具有允许以 httpd_t 身份运行的进程访问标记为httpd_sys_content_t 的文件的规则。没有规则允许这些进程访问标记有 tmp_t 的文件 , 因此将拒绝这些访问 , 即使常规文件权限指出应该允许这些访问selinux是内核的进程,所以改变需要重启,内核初始化,第一次慢。

  • 文件: selinux能配对的才能访问 特定程序只能访问特定程序的标签 不同目录标签不同 还会影响功能
  • 功能: 不安全的程序会禁止掉 管理员自己需要打开

更改 selinux 的开机状态

selinux开机状态的控制文件 : /etc/sysconfig/selinux

vim /etc/sysconfig/selinux
SELINUX=enforcing | permissive | disabled

  • enfirocing 强制模式:
    SELINUX 主动拒绝访问尝试读取类型上下文为 tmp_t的 web
    服务器。在强制模式中,SELINXU 既记录冲突,也强制执行规则

  • permissive 警告模式(许可模式):
    通常用于对问题进行故障排除。在许可模式下,即使没有明确规则, SELINUX
    也允许所有交互,并且记录所有被拒绝的交互。此模式可以用于确定你是否有
    SELINUX问题。无需重新引导即可从强制模式转为许可模式,或再从许可模式转回强制模式

  • disabled 关闭

将文件中的SELINUX中的值修改之后,需要重启电脑生效

显示及更改 SELINUX 模式

getenforce  ##显示SELinux模式
setenforce 0|1 ##更改SELinux模式
0 表示 permissive  # 警告模式
1 表示 enforcing    # 强制模式

显示SELinux文件安全上下文

什么确定文件的初始SELinux上下文?
通常是父目录。将父目录的上下文指定给所新创建的文件。这对vimcp和touch等命令起作用,但是,如果文件是时在其他位置创建爱你的并且保留了权限(与mv或cp -a 一样)则还将保留SELinux上下文许多处理文件的命令具有一个用于显示或设置SELinux上下文的选项(通常是-Z)。如,ps,ls,cp,mkdir都很斯用 - Z 选项显示或设置SELinux上下文。

查看安全上下文
ls -Z


修改 selinux 安全上下文

chcon 命令

一次性定制安全上下文 , 执行 restorecon 刷新后还原
chcon 只是更改,没有记录,开机就没了 (change file SELinux security context)
参数 -t : –type=TYPE : set type TYPE in the target security context
context:标签


//别的地方建立的文件移到这里,因为上下文不配对,所以文件看不到,用chcon修改安全上下文使之相同,就能看到了这个文件

改变之后如果重启selinux,即(改成disabled又改成enforcing,开机就发现没有了) 所以要用semanage永久修改

semanage命令

restorecon 是 policycoreutil软件包的一部分
semanage是 policycoreutil-python 软件包的一部分
semanage fcontext 可用于显示或修改restorrecon用来设置默认文件上下文的规则
semanage fcontext 使用扩展正则表达式来指定路径和文件名。 fcontext 规则中最常用的扩展正则表达式是 (/.*)? ,表示随意地匹配 / 后跟任何数量的字符
semanage fcontext 将递归地与在表达式面前列出的目录以及该目录中的所有内容相匹配
标签是直接写在内核的

semanage fcontext 参数:
semanage : - SELinux Policy Management tool
-l //查看安全上下文
-a    //在内核添加
-t   //指定安全上下文
man  semanage
--list  List records of the specified object type
--add  Add a record of the specified object type
--type TYPE  SElinux Type for the object
"改的是目录及目录内部的文件"

示例,ftp根目录是/westos :

第一次直接访问

查看安全上下文并修改成为可以被ftp服务访问的安全上下文 :

//注意书写格式规范

##改变之后需要重启主机,如果想立即看到效果,不重启:
restorecon -RvvF  #(vv是因为不止一个文件) ##立即读取
man restorecon:
restore file(s) default SELinux security contexts

-R, -r change files and directories file labels recursively (descend directories).  ##递归处理目录。
        Note:  restorecon  reports warnings on paths without default labels only if called non-recursively or in verbose mode.

-v     show changes in file labels, if type or role are going to be changed
    ##将过程显示到屏幕上。
-F     Force  reset  of  context  to  match  file_context for customizable files, and the default file context,changing the user, role, range portion as well as the type. ##强制恢复文件安全语境。

命令刷新后再次lftp,就可以看到了


管理SELinux布尔值

SELinux布尔值是更改 SELinux策略行为的开关。SELinux布尔值是可以启用或禁用的规则。安全管理员可以使用SELinux布尔值来调整策略,以有选择地进行调整许多软件包都具有 man page *_selinx(8),其中详细说明了所使用的一些布尔值;man -k '_selinux' 可以轻松地找到这些手册
getsebool 用于显示布尔值 , setsebool 用于修改布尔值
setsebool -p 修改SELinux策略,以永久保留修改 重启开启生效,on | off :开启 | 关闭
semanage boolean -l 将显示布尔值是否永久
查看selinux屏蔽的功能: getsebool -a | grep ftp

开启上传权限

  • 先去确定selinux是强制模式 , 单独setsebool 开启写权限发现是不能生效的
  • 将pub下文件安全上下文改变: semanage fcontext -a -t public_content_rw_t ‘/var/ftp/pub(/.*)?’
  • restorecon 重读 -RvvF 注意r与f一定是大写

    //刷新成功是有提示的

  • setsebool -P frpd_anon_write on 开启写 off 关闭写

  • vim /etc/vsftpd/vsftpd.conf 开启上传权限

    重启服务生效

这里,注意,保证 pub目录权限是777 ,不然有很多权限上的问题!

//lftp进入后,就可以上传了


监控SELinux冲突

  • pub下放一个标签不同的文件,lftp进去后发现看不见
  • 这时,需要查看日志,分析解决方案 ,setroubleshoot-server提供解决方案的软件,没有这个软件就没有分析解决问题的功能

    必须安装setroubleshoot-server 软件包,才能将SELinux消息发送至 /var/log/messages
    setroubleshoot-server 侦听 /var/log/audit/audit.log 中的审核信息并将简短摘要发送至 /var/log/messages
    摘要包括SELinux冲突的唯一标示符(UUIDs),可用于收集更多信息,Sealert -l UUID 用于生成特定事件的报告。 Sealert -a /var/log/audit/audit.log 用于在该文件中生成所有事件的报告

  • /var/log/audit/audit.log 专门存放selinux中的问题,但是不全
    在message中有全面的信息,
    其中:
    run : sealert -l 159f537a-5ce3-4ea4-8a3c-f3e08aea9360
    //让你运行这一段代码,分析这个问题的详细解答:

    //显示了安全上下文,软件版本,位置等详细信息

  • semanage fcontext -a -t FILE_TYPE ‘$FIX_TARGET_PATH’
    //下面的是安全上下文所有的格式,不用去看

  • Then execute:
    restorecon -v ‘$FIX_TARGET_PATH’
    //告诉你的是解决方案,后面的变量指的是文件的目标

    //运行之后,问题解除,可以显示出来了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章