在学校,我们有一台仅供学生登录并进行计算机科学相关活动的计算机,例如为课程编译 C 和 C++ 程序。在我接手它之前,它运行了很多年之前安装的一些不起眼的 linux 风格。我最近在其上安装了 Ubuntu Server 以使其更易于维护和安全。目前我们根据需要设置用户帐户。学生 ssh 登录并完成课堂作业,每个用户将他们的工作和游戏存储在他们的主文件夹中。教师将让学生将他们的工作留在某个文件夹中以供提交或类似的东西。
我担心的是用户过于探索和探索,或者有人恶意破坏它并破坏某些东西,从而导致其他人无法完成任何工作,并导致教师向我抱怨并使我看起来像一个糟糕的系统管理员因为没有阻止这一点。(我仍然是本科生,任由他们摆布)
学生当前在自己的组中,只能看到自己的主文件夹/不能浏览其他学生的文件夹。教师有更高级的帐户,但没有管理员帐户。我不愿意开始更改重要系统文件夹的权限,担心我可能会破坏某些东西(就像我以前做过的那样)。
我可以采取哪些安全措施来确保系统的功能,同时确保其安全,以便每个人都可以享受和使用它?
我在大学期间运行了一个大致相似的项目(我们有不止一台服务器,并且对任何计算机服务都没有真正的责任,但我们是学生的 linux 机器)。在安全性方面,主要是关于保持绝对最新的补丁。如有必要,请关闭登录,如果存在本地 root 漏洞,并且尚未修补。您还想设置 ulimit。这些有多严重可能取决于您的机器有多强大,或者,但我们最不强大的机器使用了这些:
-
除此之外,您还需要设置配额,可能针对教师和学生帐户。它们有多大取决于您的磁盘,但我们目前默认设置 1GB 配额。我相信我照顾机器的继任者通常很乐意为那些有任何正当理由的人升级这些机器。
除此之外,如果可能的话,我会请求/借用/窃取第二台机器来备份您的配置/用户数据。理想情况下,您应该备份所有 /etc/、已安装软件包的列表以及所有用户数据(如果您有自己组装的任何软件包,则应该备份完整的 .debs)。如果你有空间,我也会备份 /var,(除了 /var/tmp)。
/root 的权限默认为 755。你会想要改变这些,因为你会在某个时候不小心把敏感文件留在那里。此外, wall 和 su (至少)应该更改它们的权限,以便只有 root/root 组可以使用它们(随意更改只有您所在的其他组的 root 组)。
最后,我会将所有内容都记录到远程服务器,无需用户登录(即使这不是您控制的机器)。我会在你的机器上设置 snoopy,所以当有人闯入时,你会有某种审计日志。
我们大多数系统内容的文档都在这里。如果您只运行一台机器,它们中的大多数可能不适用于您,但无论如何它们可能值得一试。
基本上有两种方法可以解决这个问题:
对于第一个,您可以考虑最近的 Linux 发行版,它带有一组非常严格的 SELinux 规则。鉴于这些学生必须学习的事实,我希望他们会遇到问题(例如:您不允许收听网络端口),使他们无法完成作业或仅仅超越他们当前的技能水平.
第二种选择实际上实现起来要健壮得多。
副作用:
首先,确保设置备份并了解如何恢复系统。
也就是说,只要您立即应用安全更新(您也可以检查无人值守升级),您应该没问题。(尽管如果您可以限制外部登录,例如只允许基于密钥的身份验证,您将进一步降低风险)。
您将需要建议的配额和 ulimit 以及监控(您更有可能突然用完磁盘,人们会因此而感到不安,而不是任何有足够知识获得 root 访问权限的人都会破坏它)。
你不想开始弄乱权限(不知道你在做什么)。
在每个学生的主目录中使用写入文件副本设置用户模式 linux怎么样?这个沙盒将让每个人完全自由地支配自己的实例。如果出现问题,只需夹住 COW 文件,您就会回到起点。
scp/sftp 可用于将提交的工作上传到中央存储库。