É seguro para um servidor de produção ter o make instalado?

É seguro para um servidor de produção ter o make instalado?

Durante a configuração das minhas instâncias de servidor virtual, preciso que alguns aplicativos sejam criados usando o make. Há algum risco de segurança associado à makeinstalação? Ou devo limpá-lo antes da implantação da instância?

Também tenho o gcccompilador no servidor que uso para criar aplicativos antes da implantação.

Responder1

Algumas pessoas argumentarão que a presença de ferramentas de desenvolvimento em uma máquina de produção facilitará a vida de um invasor. No entanto, isso é um obstáculo tão pequeno para um invasor que qualquer outro argumento que você possa encontrar a favor ou contra a instalação das ferramentas de desenvolvimento pesará mais.

Se um invasor conseguiu penetrar no sistema até agora, a ponto de invocar quaisquer ferramentas presentes no servidor, então você já tem uma grave violação de segurança. Sem ferramentas de desenvolvimento, existem muitas outras maneiras de gravar dados binários em um arquivo e depois executar um chmod nesse arquivo. Um invasor que queira usar um executável de compilação personalizado no sistema neste momento poderia muito bem construí-lo em sua própria máquina e transferi-lo para o servidor.

Existem outras coisas muito mais relevantes a serem observadas. Se um software instalado contiver um bug de segurança, há algumas maneiras pelas quais ele pode ser exposto a um invasor:

  • O pacote pode conter um executável suid ou sgid.
  • O pacote pode estar iniciando serviços no sistema.
  • O pacote pode instalar scripts que são invocados automaticamente sob certas circunstâncias (isso inclui tarefas cron, mas os scripts podem ser invocados por outros eventos, por exemplo, quando o estado de uma interface de rede muda ou quando um usuário faz login).
  • O pacote pode instalar inodes de dispositivo.

Eu não esperaria que as ferramentas de desenvolvimento correspondessem a uma das opções acima e, como tal, não é um pacote de alto risco.

Se você tiver fluxos de trabalho nos quais usaria as ferramentas de desenvolvimento, primeiro deverá decidir se esses fluxos de trabalho são razoáveis ​​e, se forem, você deverá instalar as ferramentas de desenvolvimento.

Se você achar que realmente não precisa dessas ferramentas no servidor, evite instalá-las por vários motivos:

  • Economiza espaço em disco, tanto no servidor quanto em backups.
  • Software menos instalado torna mais fácil rastrear quais são suas dependências.
  • Se você não precisa do pacote, não faz sentido correr o risco de segurança adicional de tê-lo instalado, mesmo que esse risco de segurança seja pequeno.

Se você decidir que, por motivos de segurança, não permitirá que usuários sem privilégios coloquem seus próprios executáveis ​​no servidor, o que você deve evitar não são as ferramentas de desenvolvimento, mas sim os diretórios graváveis ​​para esses usuários em sistemas de arquivos montados com permissões de execução. Ainda pode haver utilidade para ferramentas de desenvolvimento, mesmo nessas circunstâncias, mas não é muito provável.

Responder2

makeé um shell que possui uma sintaxe diferente de bash.

Um compilador como gccé um poderoso awkconfigurado com um conjunto de substituições que o padrão awknão suporta. Não é compatível com POSIX sortou catinjeta lixo na saída. É um editor de texto interativo (think vi) que é configurado para fazer algumas edições na inicialização e sair antes de exibir a interface do usuário.

Não há nada inerentemente inseguro neles, eles não tornam sua máquina mais insegura do que aquela em que você tem catredirecionamento de shell bash + +.

Responder3

makeem si está bem. makeé apenas uma estrutura de rastreamento e automação de dependências. Porém, normalmente é usado em conjunto com compiladores e, de preferência, eles não devem estar disponíveis em um sistema de produção, pois são completamente desnecessários. O mesmo vale para todos os pacotes desnecessários, sejam eles bibliotecas compartilhadas, intérpretes, etc. O software instalado em sistemas de produção deve ser estritamente controlado e apenas os pacotes exigidos pela aplicação devem estar presentes.

Você deve compilar seu aplicativo em um servidor de compilação, empacotá-lo e, em seguida, implantar o pacote binário em seus sistemas de produção.

Nota: ferramentas de empacotamento nativaschupar. Nem se preocupe em tentar grocá-los. Em vez disso, dê uma olhada em Jordan Sisselfpm. Isso torna a embalagem uma alegria absoluta.

Responder4

Você está perguntando se makedeveria ser instalado em um servidor de produção, mas minha verdadeira pergunta seria: quem tem acesso a esse servidor de produção e quais proteções você possui para lidar com uma incursão? Se makenão foi instalado, mas alguém conseguiu rootacesso, adivinhe? Eles podem instalar manualmente makeo que quiserem.

A dura realidade sobre a segurança do computador é que por mais que você queira evitar acessos indesejados, ficar obcecado em bloquear o acesso não é tão importante quanto:

  1. Quem tem acesso ao servidor?
  2. O que você pode fazer para reverter após uma invasão?

Tudo isso depende do tipo de trabalho que você faz. Eu trabalho principalmente no mundo dos servidores web e minha atitude é basicamente: qualquer pessoa que obtenha acesso ao servidor de produção de mim precisa provar habilidades, conhecimento e maturidade. É isso. Às vezes leva alguns dias. Às vezes leva meses. Mas basicamente, sua melhor linha de segurança em servidores de produção é controlar o acesso, além de diversas outras coisas que fazemos para proteger os servidores.

informação relacionada