AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1165175
Accepted
Dov
Dov
Asked: 2019-08-13 04:39:06 +0800 CST2019-08-13 04:39:06 +0800 CST 2019-08-13 04:39:06 +0800 CST

有没有办法阻止用户创建可执行文件并运行它们?

  • 772

勒索软件攻击可以使用零日漏洞,但攻击者通常只会欺骗易受骗的用户通过下载和点击来运行可执行文件。

假设我们有一个天真的用户并希望将他们限制在正常路径上。有没有办法限制他们创建具有可执行权限的文件?

或者,更一般地说,有没有办法建立一个访问控制列表并定义这个用户只能执行这个列表中的文件?

security permissions executable restricted-access
  • 2 2 个回答
  • 9184 Views

2 个回答

  • Voted
  1. Best Answer
    Eliah Kagan
    2019-08-13T06:14:19+08:002019-08-13T06:14:19+08:00

    您表示关注的具体攻击是:

    通常,攻击者只会通过下载和点击来欺骗易受骗的用户运行可执行文件。

    至少在文件在 Web 浏览器中下载的常见情况下,在 Ubuntu 中应该已经通过浏览器遵守Execute-Permission Bit Required策略来防止这种情况。该政策最直接相关的部分是:

    • 应用程序(包括桌面和 shell)在以下情况下不得从文件中运行可执行代码:

      • 缺少可执行位
      • 位于用户的主目录或临时目录中。
    • 从 Web 浏览器、邮件客户端等下载的文件绝不能另存为可执行文件。

    因此,如果用户被告知要在 Web 浏览器中下载程序,然后执行此操作,并尝试通过双击该文件来运行该文件,它就不会运行。即使下载的文件是 shell 脚本甚至是 .desktop 文件,这也适用。(如果您想知道为什么主目录中的.desktop 文件必须标记为可执行,即使它们不是真正的程序,这就是原因。)

    用户可以通过配置更改来更改此行为。大多数人不会,而那些这样做的人可能不应该这样做,但这并不是你真正需要担心的。更大的担忧是我认为您已经担心的更复杂的攻击,其中恶意人员(或机器人)指示用户下载特定文件,将其标记为可执行(通过他们的文件浏览器或使用chmod),并且然后运行它。

    不幸的是,限制用户在文件上设置执行位或执行某些白名单上的文件以外的文件的能力不会明显缓解问题。一些攻击已经生效,而那些不能生效的攻击可以通过简单的修改使其生效。根本问题是即使文件没有可执行权限也能达到运行文件的效果。

    这最好通过例子来说明。假设evil当前目录中有一个文件,如果赋予它可执行权限 ( chmod +x evil) 和运行 ( ./evil),它会做一些坏事。根据它是什么类型的程序,可以通过以下方法之一实现相同的效果:

    • . ./evil或在当前运行的 shell 中source ./evil运行命令。evil
    • bash ./evil运行evil在bash.
    • python3 evil运行evil在python3.
    • perl evil运行evil在perl.
    • ...并且通常在解释器interpreter evil中运行。evil interpreter
    • 在大多数系统上,/lib64/ld-linux-x86-64.so.2 ./evil 运行二进制可执行文件 evil。

    其中没有一个,甚至最后一个,都不需要文件具有可执行权限,甚至不需要用户能够赋予文件可执行权限。

    但恶意指令甚至不必那么复杂。考虑这个非恶意命令,这是官方推荐的安装或更新 NVM 的方法之一:

    wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
    

    不是恶意的原因是 NVM 不是恶意软件,但如果 URL 指向某个在运行时会作恶的脚本,则该命令将下载并运行该脚本。任何时候都不需要为任何文件授予可执行权限。我相信,使用这样的单个命令下载并运行恶意文件中包含的代码是攻击者诱骗用户采取的一种非常常见的行为。

    您可能会考虑尝试限制哪些解释器可供用户运行。但是实际上没有一种方法可以不显着影响您可能希望用户能够执行的普通任务。如果您正在设置一个极其受限的环境,几乎不允许用户在计算机上执行的所有操作,例如仅运行几个程序的信息亭,那么这可能会提供某种有意义的保护措施。但这听起来不像是您的用例。

    因此,您的问题的大致答案是“不”。更完整的答案是,您可能会设法阻止用户执行除您在白名单中提供的文件之外的任何文件。但这是在严格的技术意义上的“执行”,它并不是实现运行大多数程序或脚本的全部效果所必需的。为了防止这种情况,您可以尝试将白名单设置得非常小,这样除了可能受到高度限制的解释器之外,它没有列出任何解释器。但即使你做到了,用户也做不了什么,如果你把它做得这么小,他们不会伤害自己,他们可能什么也做不了。(见Thomas Ward 的评论。)

    如果您的用户可以伤害自己,那么他们可能会被愚弄而伤害自己。

    您可能能够限制特定程序的使用或以其他方式可能有害的行为,并且如果您正在查看勒索软件倾向于遵循的特定模式,您可能能够防止一些特定的常见情况。(请参阅AppArmor。)这可能会提供一些价值。但它不会给你任何接近你所希望的综合解决方案的东西。

    无论您最终采取何种技术措施(如果有),最好的选择是教育用户。这包括告诉他们不要运行他们不理解的命令,并且不要在他们无法解释为什么这样做相当安全的情况下使用下载的文件。但它还包括诸如备份之类的事情,这样如果出现问题(由于恶意软件或其他原因),所造成的伤害将尽可能小。

    • 52
  2. Robert Riedl
    2019-08-14T00:36:27+08:002019-08-14T00:36:27+08:00

    是*


    它被称为受限外壳。

    您可以使用/bin/rbashUbuntu 中已经提供的 ,并将其与受限制的 PATH 变量结合使用。将rbash禁止执行任何不在$PATH.

    添加受限用户:

    sudo adduser --shell /bin/rbash res-user
    

    创建一个新目录,我们可以在其中链接二进制文件,用户将被限制为:

    sudo mkdir /home/res-user/bin
    

    修改.profile文件:

    sudo vim /home/res-user/.profile

    if [ -n "$BASH_VERSION" ]; then
        # include .bashrc if it exists
        if [ -f "$HOME/.bashrc" ]; then
            . "$HOME/.bashrc"
        fi
    fi
    
    readonly PATH=/home/res-user/bin
    export PATH
    

    使.profile,bashrc和.bash_profile不可变:

    sudo chattr +i /home/res-user/.profile
    sudo chattr +i /home/res-user/.bashrc
    sudo chattr +i /home/res-user/.bash_profile
    

    现在我们给用户唯一允许他做的事情,即打开 Firefox:

    sudo ln -s /usr/lib/firefox/firefox /home/res-user/bin/
    

    现在,如果我们以res-user只能打开 Firefox 的方式登录:

    res-user@localhost:~$ /home/res-user/bin/firefox --version
    Mozilla Firefox 68.0.1
    

    我们不能轻易地逃离我们受限的外壳:

    res-user@localhost:~$ export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    -su: PATH: readonly variable
    

    受限用户无法使文件可执行或启动它们:

    res-user@localhost:~$ chmod +x script.sh 
    Command 'chmod' is available in '/bin/chmod'
    res-user@localhost:~$ bash script.sh 
    Command 'bash' is available in '/bin/bash'
    The command could not be located because '/bin' is not included in the PATH environment variable.
    bash: command not found
    

    受限用户无法执行来自互联网的恶意脚本,因为用户无法执行必要的命令:

    res-user@localhost:~$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
    Command 'wget' is available in '/usr/bin/wget'
    The command could not be located because '/usr/bin' is not included in the PATH environment variable.
    wget: command not found
    Command 'bash' is available in '/bin/bash'
    The command could not be located because '/bin' is not included in the PATH environment variable.
    bash: command not found
    

    * 有一些方法可以突破受限制的外壳,但如果您的用户能够做到这一点,那么他们可能不会像您想象的那样容易上当。

    • 13

相关问题

  • Ubuntu 在什么许可证下?可以合法修改和分发吗?

  • 如何从命令行仅安装安全更新?关于如何管理更新的一些提示

  • iptables 的图形用户界面?

  • 文件权限如何工作?文件权限用户和组

  • 如何与无头服务器进行图形交互?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve