V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
socradi
V2EX  ›  Linux

关于 SELinux 的疑问

  •  
  •   socradi · 2019-02-18 22:12:54 +08:00 · 3009 次点击
    这是一个创建于 2106 天前的主题,其中的信息可能已经有所发展或是发生改变。

    SELinux 在 root 用户下执行setenforce 0就能从 Enforcing 模式转成 Permissive 模式,不再阻止不合理操作。那么推出 SELinux 的作用是什么呢?小弟才疏学浅,还望大佬们指导一下

    15 条回复    2019-02-19 13:41:54 +08:00
    davie
        1
    davie  
       2019-02-18 22:26:39 +08:00
    传言 nsa 在 selinux 里面不知道搞了什么东东 有大侠有研究的吗?
    geelaw
        2
    geelaw  
       2019-02-18 22:30:52 +08:00
    “ Windows 的管理员可以设置病毒自动运行并且关闭杀毒软件,那么推出杀毒软件的作用是什么呢?”

    The point is 要放开安全措施是需要管理员的。
    leido
        3
    leido  
       2019-02-18 22:33:30 +08:00 via Android
    @geelaw windows 里面系统服务( system 用户)才是最高权限,和 Linux 差别还是很大了
    MrUser
        4
    MrUser  
       2019-02-18 22:35:15 +08:00
    按你的逻辑,有关闭功能的浏览器不是好浏览器、有钥匙的都不是好锁?
    日常操作服务器不使用 root
    SELinux 可以弥补“拥有者-所属组-其他人”的不便 、加强权限控制,百科能查到详细的介绍
    这东西属于不好学但很有用类的,建议永久启用。
    socradi
        5
    socradi  
    OP
       2019-02-18 22:39:53 +08:00 via Android
    @geelaw 但是这样只有管理员权限不就够了吗,得到管理员权限相当于可以无视 SELinux,为什么还要新增 SELinux 呢?
    flynaj
        6
    flynaj  
       2019-02-18 22:42:46 +08:00 via Android
    android 新点的手机你 root 了看看,许多厂家就不给你 root,服务器的话 root 意味着你就是管理员,root 权限都有了怎么操作都可以。
    kernel
        7
    kernel  
       2019-02-18 22:51:51 +08:00
    @socradi 你写的应用软件运行在 root? 出了漏洞黑客也不能得到 root 怎么关
    geelaw
        8
    geelaw  
       2019-02-18 22:52:07 +08:00
    @leido #3 已经具有管理员权限的代码不再需要额外的授权即可把自己变成任意的本地实体,包括 SYSTEM 和 TrustedInstaller,所以 Administrators 具有本地的最高权限。

    @socradi #5 任何事情都是“有了管理员权限就够了”。SELinux 的存在是为了强化 Linux 中还没有被证明是安全的地方,也就是预防性措施。拥有管理员权限的人相当于有大门的钥匙,安全措施是为了防止不该有大门钥匙的人通过奇怪的方式具有大门钥匙,以及防止有不是大门的门出现。
    socradi
        9
    socradi  
    OP
       2019-02-18 22:55:17 +08:00 via Android
    @MrUser 哈哈,谢谢回答,看来我还得找资料来增进了解,不然总是会冒出奇怪的问题
    socradi
        10
    socradi  
    OP
       2019-02-18 23:02:51 +08:00 via Android
    @flynaj

    @kernel

    看到某博文中的一句话:"即使进程是以 root 身份运行的,也需要判断这个进程的类型以及允许访问的资源类型才能决定是否允许访问某个资源。"所以才有这个疑问的
    socradi
        11
    socradi  
    OP
       2019-02-18 23:07:58 +08:00 via Android
    @geelaw 谢谢回答,好像有点了解了
    msg7086
        12
    msg7086  
       2019-02-19 00:26:27 +08:00
    SELinux 管的是进程,不是人。
    主要就是让每个进程乖乖站好♂。
    Tyanboot
        13
    Tyanboot  
       2019-02-19 04:27:18 +08:00 via Android   ❤️ 1
    那是你 ssh 或者直接实体 tty 登录的 shell 是处于一种叫做 unconfined_t 的状态的,在这种状态下绝大部分的操作都是被允许的,除非有专门的 policy 针对这个 type 设置了 deny 条目。

    这是因为在这种 SELinux 的配置下,主要还是为了防范来自网络上的威胁,而默认你本地操作都是安全( secure 而不是 safe )的。

    而如果是依靠漏洞之类的东西拿到的 root 的 shell,只要 SELinux 配置的没问题,那么这个 shell 即使是 root 权限,但因为会默认继承漏洞程序的 context,也就不会是 unconfined_t,也自然是没办法执行 setenforce 的,不出意外可能这个 shell 连 ls 都没法执行。(然而更可能是因为 SELinux 的存在,这个 shell 是拿不到的
    socradi
        14
    socradi  
    OP
       2019-02-19 07:13:54 +08:00 via Android
    @Tyanboot 谢谢,你的回答解开了我对 root 权限和 SELinux 的关系的疑惑
    henglinli
        15
    henglinli  
       2019-02-19 13:41:54 +08:00
    虽然我注重安全和隐身,但是我从来未使用过 selinux,自己编译的 kernel 设置还可以去掉 selinux 的支持而选用 posix acl。有在个人设备上使用 Hardened linux 的朋友请举个手。(发现 hardendlinux 官网首页就有几个中文翻译文档)。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3394 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 11:55 · PVG 19:55 · LAX 03:55 · JFK 06:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.