Lo que necesita es relativamente simple: debe asegurarse de que las cuentas no privilegiadas de sus estudiantes estén bien confinadas. Si no tiene un entorno gráfico involucrado, su situación es relativamente simple. Debe comenzar implementando las siguientes acciones:
- asegúrese de que los usuarios se creen sin privilegios administrativos (no
sudo
, no admin
o wheel
group)
- asegúrate de que los usuarios no puedan emular una pantalla de inicio de sesión para falsificar tu pantalla de inicio de sesión (un clásico para la universidad, algo que he visto)
- asegure una política
polkitd
adecuada que evite que los usuarios suspendan / apaguen el host
- asegúrese de que no ejecuta los servicios vulnerables / obsoletos
suid
/ sgid
en el host ( vea cómo listarlos )
- asegúrese de que ningún usuario individual pueda agotar los recursos del sistema (configurando Systemd.cgroup para imponer límites de uso de recursos en la sesión completa de cada usuario)
- refuerce su control de acceso obligatorio instalando y configurando adecuadamente SELinux (para limitar a los estudiantes a un rol de estudiante donde solo pueden escribir en su casa y en / tmp)
- caduque las cuentas cuando sea necesario para evitar cuentas persistentes con contraseñas comprometidas ( vea esta pregunta en el sitio de Unix )
- incluso puede ejecutar las sesiones de los estudiantes en contenedores separados utilizando Systemd.nspawn que está diseñado para ejecutarse sistemas que funcionan completamente de forma independiente, utilizando espacios de nombres de Linux . Esta es la forma correcta de encarcelar una sesión, no
chroot
Es posible que luego note que los estudiantes usan las máquinas para fines distintos a los permitidos. Puede limitar el acceso a las máquinas a horarios específicos utilizando pam_time
aunque eso podría impiden que los estudiantes realicen su trabajo y deben equilibrarse con los beneficios que proporciona. Además, asegúrese de que los administradores de su red sepan qué tráfico esperar en este host para que puedan detectar el tráfico no deseado.
Dicho todo esto, no veo el punto en los binarios específicos de la lista blanca (inútil ya que los estudiantes pueden compilar y ejecutar su propio código), ya que puede impedir que los estudiantes utilicen herramientas de desarrollo legítimas, por ejemplo. compiladores alternativos, cadenas de herramientas de construcción, herramientas de análisis de código, herramientas de control de versiones de código, etc.
Mientras los usuarios solo puedan hacerse daño a ellos mismos y tengan garantías sólidas de eso, el trabajo está hecho. De todos modos, este no es exactamente un sistema de producción a largo plazo, los estudiantes solo lo utilizan para jugar con el código educativo.