我觉得这不是问这个问题的最佳地点(因为没有单一的正确答案),但我想不出更好的地方。如果您有更好的建议,能否请您推荐它,我可以转移问题而不是直接关闭它?
我正在给一个高中生班级讲授一般 Linux 安全性。在较高层面上,我希望他们能够使用给定的 Linux 服务器并知道如何针对常见的安全问题对其进行强化 - 例如关闭旧帐户、使用强大的 pw 哈希算法、确保没有奇怪的进程正在运行或在启动时运行。他们的技能水平范围很广,我正在寻找方法来激励他们使用我们一直在讨论的内容(例如查看 crontab;查看用户和组配置;查看开放端口)。
我得到了 200 美元来举办一场鼓励他们的比赛,我想也许我可以以 10 美元的增量购买一堆亚马逊礼品卡。我们的想法是将兑换代码“隐藏”在我们的沙盒服务器上的各个位置,以便孩子们找到。例如,我可以以明文形式存储密码,并为示例用户帐户之一分配其中一个代码的密码。或者,也许我可以设置一个 cron 作业,每 30 秒将其中一个代码记录到系统日志中。
我正在寻找的是隐藏这些代码的地方/方法,以便寻求保护服务器安全的人会偶然发现它们。
谢谢!
答案1
运行一个侦听器,当您执行或操作时,
nc
该侦听器会回显优惠券代码之一。如果他们查看该文件,他们也会明白。telnet
nc
#!/bin/sh nc -i 2 -l -p 3128 -c "echo amazoncode"
将其命名为有用的名称,例如
squid
使用亚马逊代码的名称或参数创建一些本地防火墙规则。
iptables -N amazoncode -P ACCEPT iptables -I INPUT -j amazoncode
ssh
使用代码作为用户名进行某些登录失败。使用某些包含代码的数据库运行不安全或安全性较差的 mysql 实例。
你可能会遇到一些聪明的人,尽管grep -r amazoncode
没有一些混淆方法。如果他们能够找出正则表达式,这显示了一些独创性,但对安全性没有多大帮助。
答案2
不知道这个方法同学们是否感兴趣。
我使用原始代码创建一个文件作为 amazoncode 。
cat amazoncode 125622234
现在,使用以下命令加密文件。
openssl aes-128-cbc -salt -in amazoncode -out amazoncode.aes -k somepassword
somepassword
是您为该文件设置的密码。
现在,删除原始文件。
rm amazoncode
现在,告诉学生亚马逊礼品代码已加密,如果他们需要该代码,则必须对其进行解密。您还可以将用于加密的原始命令和密码分享给学生。
学生可以从原始命令中看出,他们应该执行相反的操作来解密文件,如下所示。您也可以告诉他们
-d
选项用于解密,并且加密文件应该作为输入以生成代码作为输出。这里,不妨告诉同学们从man
的页面中找出解密技巧openssl
。openssl aes-128-cbc -d -salt -in amazoncode.aes -out amazoncode
现在,我在学习了一些加密/解密技术后也得到了代码。
cat amazoncode 125622234
实际上,openssl
密码可以作为隐藏文件放在用户的主目录中。然后,学生们也会了解如何访问隐藏文件并openssl
从那里获取密码,然后尝试解密。
答案3
一些想法:
- 用户主目录中的纯文本文件(“
Amazon Code.txt
”或其他明显的内容),世界可读 - 用户主目录中的纯文本文件,不可读,但用户的密码很容易被猜到
- 使用源代码中混淆的密钥进行处理,但它调用其他东西(例如)在输出
system("sleep 864000 $key")
中公开密钥ps
- 相同,但从 crontab 运行并且只让其子进程睡眠几秒钟
- 使用源代码中混淆的密钥进行处理,但它会打开一个 TCP 套接字并将密钥打印给任何连接的人
答案4
也许是 ~/bin/ 或 /etc/bin/ 中的“有趣”脚本。做一些事情,比如替换 LS、cat 或 CD 的功能,使其行为稍有不同,并提示他们出现问题(第一个想到的就是将 ls/cd 更改为列出/移动错误的文件夹)并将代码列在 sh 文件的注释中。
也许运行一个消耗过多内存/打开奇怪端口的进程;让进程名称为亚马逊代码。