Liberando o Linux para que os alunos aprendam livremente

3

Na escola, temos um computador que é apenas para os alunos fazerem login e fazer atividades relacionadas à ciência da computação, como a compilação de programas C e C ++ para classes. Ele estava rodando um pouco de sabor obscuro do linux que foi colocado muitos anos antes de eu assumir o controle. Eu recentemente instalei o Ubuntu Server nele para torná-lo mais sustentável e seguro. Atualmente, configuramos as contas de usuários conforme necessário. Alunos ssh login e completar tarefas para a classe e cada usuário armazena seu trabalho e joga em sua pasta pessoal. Os instrutores farão com que os alunos deixem o trabalho em uma determinada pasta para envio ou algo parecido.

Minha preocupação é um usuário que seja muito explorador e explora ou alguém o destrua maliciosamente e quebre alguma coisa, fazendo com que mais ninguém consiga realizar qualquer trabalho, e faz com que os professores se queixem e me façam parecer um mau administrador de sistema para não impedir isso. (Eu ainda sou uma graduação e à sua mercê)

Os alunos estão atualmente em seu próprio grupo e só podem ver sua própria pasta pessoal / não podem navegar pelas pastas de outros alunos. O corpo docente tem contas mais avançadas, mas não contas de administrador. Estou relutante em começar a alterar as permissões em pastas importantes do sistema, preocupando-me com a possibilidade de quebrar alguma coisa (como fiz antes).

Quais medidas de segurança posso tomar para garantir a funcionalidade do sistema, mantendo-o seguro para que todos possam aproveitar e usá-lo?

    
por iloveboxcutters 03.09.2009 / 09:36

4 respostas

5

Eu corri um projeto aproximadamente similar enquanto estava na faculdade (nós tínhamos mais de um servidor, e não éramos realmente responsáveis por ninguém, mas nós éramos caixas de linux para estudantes). Em termos de segurança, na maioria das vezes, é sobre manter-se atualizado com as correções. Quando necessário, desligue o login, se houver vulnerabilidades da raiz local e ainda não houver patch. Você também deseja configurar ulimits. O quanto estas são provavelmente depende de quão poderosas são as suas máquinas ou, mas a nossa máquina menos potente usou estas:

-

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

Além disso, você desejará definir cotas, provavelmente para as contas do corpo docente e do aluno. O tamanho deles depende do seu disco, mas atualmente definimos cotas de 1 GB por padrão. Acredito que meus sucessores, que cuidam das máquinas, em geral, são muito felizes em fazer isso, no entanto, para pessoas que têm algum tipo de razão válida.

Além disso, eu imploraria / pegaria emprestado / roubaria uma segunda máquina se for possível fazer o backup de seus dados de configuração / usuário. O ideal é que você faça o backup de todo o / etc /, uma lista dos seus pacotes instalados e de todos os seus dados de usuário (se você tiver algum pacote que tenha criado, deverá fazer o backup completo do .debs). Se você tem o espaço, eu backup / var, (exceto / var / tmp) também.

Permissões em / root são 755 por padrão. Você vai querer alterá-los, pois você irá deixar arquivos confidenciais lá acidentalmente em algum momento. Além disso, wall e su (pelo menos) devem ter suas permissões alteradas, de modo que apenas o grupo raiz / root possa usá-las (sinta-se à vontade para alterar o grupo raiz para algum outro grupo em que esteja apenas).

Por fim, eu faria o syslog de tudo para o servidor remoto, sem logins de usuário (mesmo que esta não seja uma máquina controlada por você). Eu configurei o snoopy na sua máquina, então você tem algum tipo de log de auditoria para quando alguém invade.

Nossos documentos para a maioria das coisas do sistema são aqui . A maioria deles provavelmente não se aplica a você, se você está apenas executando uma única máquina, mas eles podem valer a pena cutucando bits de qualquer maneira.

    
por 03.09.2009 / 10:26
3

Existem basicamente duas maneiras de fazer isso:

  1. Você se certifica de que eles não podem quebrá-lo.
  2. Você garante que pode consertá-lo muito mais rápido do que o possível.

Para o primeiro, você pode considerar uma distribuição Linux recente que vem com um conjunto muito restrito de regras do SELinux. Dado o fato de que esses alunos têm que aprender, eu esperaria que eles tivessem problemas (como: você não pode escutar uma porta de rede) que impossibilite que eles concluam suas tarefas ou simplesmente ultrapassem seu nível de habilidade atual. .

A segunda opção é realmente muito mais robusta de se perceber.

  1. Instale algo como cobbler para automatizar a reinstalação do sistema em que eles trabalham.
  2. Ensine os alunos a enviar seu código para um repositório subversion / git regularmente (habilidade de programação útil !!). Dê ao professor acesso ao repositório de alunos. Os alunos podem simplesmente pedir ao professor que revise uma tag específica em sua subversão pessoal.
  3. Coloque todas as informações de login em um LDAP e configure seu servidor para criar automaticamente o diretório inicial do aluno quando fizerem login.
  4. Reinstale o servidor TODAS as noites. Isso é fácil porque você automatizou todo o processo.

Efeitos colaterais:

  • Nenhum software mal-intencionado sobrevive por mais de 24 horas.
  • Se o número de alunos crescer, você pode simplesmente adicionar um segundo / terceiro sistema e instalá-lo 100% de forma idêntica.
  • Qualquer problema de configuração é corrigido uma vez e permanece fixo após a reinstalação.
  • Os alunos esquecerão de se comprometer e perder o trabalho de vez em quando.
por 03.09.2009 / 11:16
1

Primeiro, certifique-se de configurar backups e saiba como restaurar o sistema.

Dito isto, desde que você aplique as atualizações de segurança sem mais delongas (você também pode verificar os upgrades não assistidos), você deve estar bem. (Embora se você puder restringir logins externos, por exemplo, apenas permitindo autenticação baseada em chave, você diminuirá ainda mais o risco).

Você precisará de cotas e ulimit conforme sugerido, bem como monitoramento (é muito mais provável que você fique sem disco e as pessoas ficarão chateadas por causa disso do que qualquer pessoa com conhecimento suficiente para obter lixeiras de acesso root).

Você não quer começar a mexer com permissões (sem saber exatamente o que está fazendo).

    
por 03.09.2009 / 10:53
1

Que tal configurar o modo de usuário linux com uma cópia no arquivo de gravação no diretório pessoal de cada aluno? Essa sandbox daria a cada um deles um reino totalmente livre em sua própria instância. Se algo quebrar, simplesmente solte o arquivo COW e você estará de volta ao ponto de partida.

scp / sftp pode ser usado para enviar trabalhos enviados para um repositório central.

    
por 03.09.2009 / 12:15