【问题标题】:Hook into linux authentication to run script or program when certain conditions are met当满足某些条件时,挂钩到 linux 身份验证以运行脚本或程序
【发布时间】:2011-03-12 18:47:10
【问题描述】:

使用 ecryptfs 或 encfs(可能更多),实际解密密码保存在通过密码解密的文件中。

因此,如果偏执(或试图给人留下深刻印象),您可以在几毫秒内有效地将所有加密数据分解为美国国防部标准(通常是整个主目录)。

我想设置我的计算机(或至少我的 vbox 系统)以在输入特定密码或连续输入错误密码一定次数时粉碎打包的密码。

这很容易,但我不知道如何进入 linux 身份验证系统,以允许我检查不正确的密码和/或在文件上运行 shred 程序。

TL;DR:如果不正确的登录使用特定密码,任何人都知道如何让 linux 粉碎文件?

【问题讨论】:

    标签: linux security authentication encryption


    【解决方案1】:

    一般来说,用来挂钩 Linux 身份验证的方法是通过PAM。要么编写你自己的 PAM 模块,要么找到一个可以强制执行你想做的事情的模块。

    我能看到的最简单的选项是pam_script

    安装,然后将auth optional pam_script.so 放入/etc/pam.d 中的适当文件中,并编写一个查看$PAM_USER 和$PAM_AUTHTOK 的pam_script_auth 脚本。

    请注意,脚本可以以 root 或用户身份运行,因此密码失败数据的存储需要仔细注意权限。

    没有多次失败的简单版本有点像:

    if [ $PAM_USER = "jv" ] && [ $PAM_AUTHTOK = "ThePoliceHaveMe" ]; then
      shredcommand
    fi
    

    【讨论】:

    • 我想我明白你的意思了,在/etc/pam.d/common-auth 中添加一行pam_script.so(或者我可以专门为我的用户制作其他东西吗?cp /etc/pam.d/common-auth /etc/pam.d/$USER-auth?)然后编写一个脚本来处理它?唯一的问题是我不知道该怎么做。
    • /etc/pam.d/$USER-auth 不起作用,/etc/pam.d 中的所有内容都是根据程序询问的内容进行选择,而不是您是谁。我在答案中添加了一个简单的示例脚本,但我不知道要运行什么命令来破解密码。
    • 哇哦,这是过去的爆炸。事实上,我做到了。 4 年半之后,这对我来说就像是编程恐惧症,但如果你愿意,我会坚持下去
    • @JV 我可以看看你的最终工作示例吗?我被简单的障碍卡住了
    【解决方案2】:

    已经发布了很好的答案,解释了如何使用 Pluggable Authentication Modules 做你想做的事情,所以我不会重复它们。

    要记住的三件事:

    首先,如果您在一定次数的登录失败后自动粉碎您的加密密钥,那么您就有一个令人讨厌的拒绝服务漏洞,任何人都可以通过重复错误登录来破坏您的所有数据。

    其次,你可能认为当“他们”拿到你的机器时它会起作用,但它不会,因为在试图破解你的加密或猜测你的密码时,没有人会使用 你的系统做。任何人都会做的第一件事就是复制您的原始分区并在安全的环境中使用您的数据,他们可以确保他们尝试读取的数据不会在此过程中被破坏。

    第三,关于在几毫秒内将整个数据粉碎到美国国防部标准,请记住也要粉碎整个交换分区,或者一开始就不要使用一个。此外,虽然看起来不需要,但请记住也要粉碎 RAM 的内容,因为有时即使断电,RAM 的内容也可以恢复。

    【讨论】:

    • 我只是压缩文件并将其放到互联网上某个随机位置的图像上以进行恢复。这主要是一种练习,但如果没有计算机技能的人威胁您当场给他们密码,这会有所帮助。如果您使用的是加密文件夹,则无论如何您都应该使用随机的dm-crypted 交换,并且 ram 不会持续几乎没有必要的时间来恢复没有液氮的数据,如果他们使用它,他们可能无论如何都有硬件键盘记录器.
    【解决方案3】:

    您需要开发一个PAM module 并将您的系统配置为使用它来验证密码。

    如果这有点令人生畏,您可以尝试PAM-script,它声称能够在身份验证过程中运行脚本。我自己没试过。

    【讨论】:

    • 这就是我被告知的,但首先有 pam 模块可以让你运行 python 或 php“模块”,其次,我不知道如何制作一个完整的 PAM 模块。那里似乎没有任何教程(这是有道理的,因为大多数弄乱这些东西的人可能已经知道了一切)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    相关资源
    最近更新 更多