在学校里,我们有一台只供学生login并进行计算机科学相关活动的计算机,比如为class级编写C和C ++程序。 在我接手之前,这已经有很多年的时间了。 我最近安装了Ubuntu Server,使其更易于维护和安全。 目前我们根据需要设置用户帐户。 学生sshlogin并完成课堂作业,每个用户存储他们的作品并在他们的主文件夹中播放。 教师将让学生离开他们的工作在一个特定的文件夹提交或类似的东西。
我担心的是一个用户过于探索和探索,或者有人恶意破坏它,破坏了某些东西,从而导致没有其他人能够完成任何工作,导致教员抱怨我,使我看起来像一个坏系统pipe理员因为没有阻止这一点。 (我仍然是一名本科生和他们的怜悯)
学生目前在自己的小组,只能看到自己的家庭文件夹/不能浏览其他学生的文件夹。 教师拥有更高级的帐户,但不是pipe理员帐户。 我不愿意开始改变重要的系统文件夹的权限,担心我可能会破坏一些东西(就像我之前做的那样)。
我可以采取哪些安全措施来确保系统的function,同时确保系统的安全,这样每个人都可以享用和使用它?
在大学时我跑了一个大致相似的项目(我们有不止一台服务器,并且没有任何人向任何人提供计算机服务,但是我们是学生的Linux机器人)。 在安全性方面,大部分是关于保持绝对最新的补丁。 如有必要,请closureslogin,如果存在本地root漏洞,则还没有修补程序。 你也想设置ulimits。 这些是多么可能取决于你的机器有多强大,但是我们最不强大的机器使用这些:
–
t: cpu time (seconds) 18000 -f: file size (blocks) 307200 -d: data seg size (kbytes) 51200 -s: stack size (kbytes) 8192 -c: core file size (blocks) 0 -m: resident set size (kbytes) 51200 -u: processes 75 -n: file descriptors 300 -l: locked-in-memory size (kb) 175000 -v: address space (kb) 400000 -x: file locks unlimited -i: pending signals 61440 -q: bytes in POSIX msg queues 819200 -e: max nice 0 -r: max rt priority 0
除此之外,您还需要为教师和学生帐户设置配额。 它们有多大取决于你的磁盘,但我们目前默认设置1GB配额。 我相信我的继任者照顾机器通常很高兴为那些谁有任何正当理由的人。
除此之外,如果可能的话,我会乞求/借用/窃取第二台机器来备份您的configuration/用户数据。 理想情况下,您应该备份所有/ etc /,所安装软件包的列表以及所有用户数据(如果您有自己组装的任何软件包,则应备份完整的.debs文件)。 如果你有空间,我会备份/ var,(/ var / tmp除外)。
/ root上的权限默认为755。 你会想改变这些,因为你会在某个时候无意中将敏感文件留在那里。 此外,wall和su(至less)应该更改其权限,以便只有root / root组可以使用它们(可以随意更改某个其他组只能在其中的根组)。
最后,我会syslog一切到远程服务器,没有用户login(即使这不是你控制的机器)。 我会在你的机器上设置snoopy,所以当有人入侵时你有一些审计日志。
我们的大多数系统文件的文件在这里 。 他们中的大多数可能不适用于你,如果你只运行一台机器,但他们可能是值得通过一些点。
基本上有两种方法可以解决这个问题:
对于第一个,你可以考虑一个最近的Linux发行版,它有一套非常严格的SELinux规则。 鉴于这些学生必须学习的事实,我希望他们遇到问题(如:你不能听networking端口),使他们不可能完成他们的任务,或只是超越他们目前的技能水平。
第二个选项实际上要更强大。
副作用:
首先,确保设置备份并学习如何恢复系统。
也就是说,只要您不再拖延地应用安全更新(您也可以检查无人值守升级),您应该没问题。 (尽pipe如果您可以限制外部login,例如只允许基于密钥的身份validation,您将进一步降低风险)。
您将需要build议的配额和ulimit以及监视(这很有可能你会突然用完磁盘,人们会因为这一点,比任何知识足以获得root访问权限的人都感到沮丧)。
你不想开始搞乱权限(不知道你在做什么)。
那么在每个学生的home目录下用写入文件的副本来设置用户模式linux呢? 这个沙箱会让每一个完全自由的统治他们自己的实例。 如果有什么事情发生,只要简单地查一下COW文件,就可以回到起点。
可以使用scp / sftp将提交的工作上传到中央存储库。