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
    • 最新
    • 标签
主页 / server / 问题 / 61868
Accepted
scottarver
scottarver
Asked: 2009-09-03 23:36:08 +0800 CST2009-09-03 23:36:08 +0800 CST 2009-09-03 23:36:08 +0800 CST

松散地保护 Linux 以供学生学习

  • 772

在学校,我们有一台仅供学生登录并进行计算机科学相关活动的计算机,例如为课程编译 C 和 C++ 程序。在我接手它之前,它运行了很多年之前安装的一些不起眼的 linux 风格。我最近在其上安装了 Ubuntu Server 以使其更易于维护和安全。目前我们根据需要设置用户帐户。学生 ssh 登录并完成课堂作业,每个用户将他们的工作和游戏存储在他们的主文件夹中。教师将让学生将他们的工作留在某个文件夹中以供提交或类似的东西。

我担心的是用户过于探索和探索,或者有人恶意破坏它并破坏某些东西,从而导致其他人无法完成任何工作,并导致教师向我抱怨并使我看起来像一个糟糕的系统管理员因为没有阻止这一点。(我仍然是本科生,任由他们摆布)

学生当前在自己的组中,只能看到自己的主文件夹/不能浏览其他学生的文件夹。教师有更高级的帐户,但没有管理员帐户。我不愿意开始更改重要系统文件夹的权限,担心我可能会破坏某些东西(就像我以前做过的那样)。

我可以采取哪些安全措施来确保系统的功能,同时确保其安全,以便每个人都可以享受和使用它?

linux ubuntu security ssh
  • 4 4 个回答
  • 382 Views

4 个回答

  • Voted
  1. Best Answer
    Cian
    2009-09-04T00:26:52+08:002009-09-04T00:26:52+08:00

    我在大学期间运行了一个大致相似的项目(我们有不止一台服务器,并且对任何计算机服务都没有真正的责任,但我们是学生的 linux 机器)。在安全性方面,主要是关于保持绝对最新的补丁。如有必要,请关闭登录,如果存在本地 root 漏洞,并且尚未修补。您还想设置 ulimit。这些有多严重可能取决于您的机器有多强大,或者,但我们最不强大的机器使用了这些:

    -

    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 配额。我相信我照顾机器的继任者通常很乐意为那些有任何正当理由的人升级这些机器。

    除此之外,如果可能的话,我会请求/借用/窃取第二台机器来备份您的配置/用户数据。理想情况下,您应该备份所有 /etc/、已安装软件包的列表以及所有用户数据(如果您有自己组装的任何软件包,则应该备份完整的 .debs)。如果你有空间,我也会备份 /var,(除了 /var/tmp)。

    /root 的权限默认为 755。你会想要改变这些,因为你会在某个时候不小心把敏感文件留在那里。此外, wall 和 su (至少)应该更改它们的权限,以便只有 root/root 组可以使用它们(随意更改只有您所在的其他组的 root 组)。

    最后,我会将所有内容都记录到远程服务器,无需用户登录(即使这不是您控制的机器)。我会在你的机器上设置 snoopy,所以当有人闯入时,你会有某种审计日志。

    我们大多数系统内容的文档都在这里。如果您只运行一台机器,它们中的大多数可能不适用于您,但无论如何它们可能值得一试。

    • 5
  2. Niels Basjes
    2009-09-04T01:16:43+08:002009-09-04T01:16:43+08:00

    基本上有两种方法可以解决这个问题:

    1. 你确保他们不能破坏它。
    2. 你确保你能比他们破坏它更快地修复它。

    对于第一个,您可以考虑最近的 Linux 发行版,它带有一组非常严格的 SELinux 规则。鉴于这些学生必须学习的事实,我希望他们会遇到问题(例如:您不允许收听网络端口),使他们无法完成作业或仅仅超越他们当前的技能水平.

    第二种选择实际上实现起来要健壮得多。

    1. 安装类似cobbler的东西来自动重新安装他们工作的系统。
    2. 教学生定期将他们的代码提交到 subversion/git 存储库(有用的编程技能!!)。授予教师访问学生存储库的权限。学生可以简单地要求老师查看他们个人颠覆中的特定标签。
    3. 将所有登录信息放入 LDAP 中,并将您的服务器配置为在学生登录时自动创建主目录。
    4. 每晚重新安装服务器。这很容易,因为您已经自动化了整个过程。

    副作用:

    • 没有恶意软件的生存时间超过 24 小时。
    • 如果学生人数增加,您可以简单地添加第二个/第三个系统并 100% 相同地安装它。
    • 任何配置问题都会修复一次,并在重新安装后保持修复。
    • 学生有时会忘记承诺并失去工作。
    • 3
  3. Pontus Freyhult
    2009-09-04T00:53:50+08:002009-09-04T00:53:50+08:00

    首先,确保设置备份并了解如何恢复系统。

    也就是说,只要您立即应用安全更新(您也可以检查无人值守升级),您应该没问题。(尽管如果您可以限制外部登录,例如只允许基于密钥的身份验证,您将进一步降低风险)。

    您将需要建议的配额和 ulimit 以及监控(您更有可能突然用完磁盘,人们会因此而感到不安,而不是任何有足够知识获得 root 访问权限的人都会破坏它)。

    你不想开始弄乱权限(不知道你在做什么)。

    • 1
  4. John Barrett
    2009-09-04T02:15:16+08:002009-09-04T02:15:16+08:00

    在每个学生的主目录中使用写入文件副本设置用户模式 ​​linux怎么样?这个沙盒将让每个人完全自由地支配自己的实例。如果出现问题,只需夹住 COW 文件,您就会回到起点。

    scp/sftp 可用于将提交的工作上传到中央存储库。

    • 1

相关问题

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

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

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve