Durante a instalação das instâncias do meu servidor virtual, exijo que alguns aplicativos sejam criados usando make
. Existe algum risco de segurança associado à make
instalação? Ou devo limpá-lo antes da implantação da instância?
Eu também tenho o gcc
compilador no servidor que eu uso para criar aplicativos antes da implantação.
Respostas:
Algumas pessoas argumentam que a presença de ferramentas de desenvolvimento em uma máquina de produção facilitará a vida de um invasor. No entanto, esse é 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 foi capaz de penetrar no sistema até o momento, para poder invocar as ferramentas presentes no servidor, você já tem uma violação de segurança grave. Sem ferramentas de desenvolvimento, existem muitas outras maneiras de gravar dados binários em um arquivo e, em seguida, executar um chmod nesse arquivo. Um invasor que deseje usar um executável de compilação personalizado no sistema nesse momento também poderá compilá-lo em sua própria máquina e transferi-lo para o servidor.
Há outras coisas muito mais relevantes a serem observadas. Se um software instalado contiver um bug de segurança, existem algumas maneiras pelas quais ele pode ser exposto a um invasor:
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ê possui fluxos de trabalho nos quais utilizaria as ferramentas de desenvolvimento, primeiro é necessário decidir se são fluxos de trabalho razoáveis e, se houver, instale as ferramentas de desenvolvimento.
Se você achar que realmente não precisa dessas ferramentas no servidor, evite instalá-las por vários motivos:
Se você decidir que, por razões 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 os diretórios graváveis para esses usuários em sistemas de arquivos montados com permissões de execução. Ainda pode haver um uso para ferramentas de desenvolvimento, mesmo nessas circunstâncias, mas não é muito provável.
fonte
gcc
não apresentar um risco maior do que estes. Como você diz, um invasor em posição de usar os compiladores instalados em um sistema geralmente poderia fazer coisas piores de qualquer maneira, como carregar seu próprio executável (possivelmente vinculado estaticamente).echo
instruções subsequentes em um arquivo. Todo o processo é automatizado com um script encontrado no mesmo link.make
é um shell que possui uma sintaxe diferente debash
.Um compilador como
gcc
é um poderosoawk
configurado com um conjunto de substituições que o padrãoawk
não suporta. Não é compatível com POSIXsort
oucat
injeta lixo na saída. É um editor de texto interativo (pensevi
) que está 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 o
cat
redirecionamento do shell bash + +.fonte
make
em si está bem.make
é apenas uma estrutura de rastreamento e automação de dependência. No entanto, é normalmente usado em conjunto com compiladores, e esses preferencialmente 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 nos sistemas de produção deve ser estritamente controlado e apenas os pacotes exigidos pelo aplicativo devem estar presentes.Você deve criar 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: as ferramentas de empacotamento nativas são péssimas . Nem sequer tente incomodá-los. Em vez disso, confira Jordan Sissel's
fpm
. Faz da embalagem uma alegria absoluta.fonte
echo
ebase64
. De fato, você pode fazer isso com uma série deecho
instruções e nenhuma outra ferramenta .Pelo contrário, o problema potencial não está em ter
make
no servidor de produção, o problema potencial está em criar os aplicativos no servidor de produção em vez de implantar imagens pré-construídas testadas. Pode haver razões válidas para essa metodologia, mas eu argumentaria contra com veemência se me pedissem para adotá-la.fonte
Você está perguntando se
make
deve ser instalado em um servidor de produção, mas minha verdadeira pergunta seria: quem tem acesso a esse servidor de produção e quais salvaguardas você possui para lidar com uma incursão? Semake
não foi instalado, mas alguém obtémroot
acesso, adivinhe? Eles podem instalar manualmentemake
e o que quiserem.A dura realidade sobre a segurança do computador é tanto quanto você deseja impedir o acesso indesejado, sendo obcecado por bloquear o acesso não é tão importante quanto:
Tudo depende de que tipo de trabalho você faz. Eu trabalho principalmente no mundo dos servidores web e minha atitude é basicamente qualquer pessoa que tenha acesso a servidores de produção precisa provar habilidades, conhecimento e maturidade. É isso aí. Às vezes, leva alguns dias. Às vezes leva meses. Mas, basicamente, sua melhor linha de segurança nos servidores de produção é controlar o acesso, além de outras coisas que fazemos para proteger os servidores.
fonte
make
em si é inofensivo. Tudo o que faz é executar aplicativos em uma ordem definida, dependendo das dependências especificadas e de quais arquivos já existem no sistema. Pode até ser útil como parte do processo de instalação: você pode usá-lo para colocar arquivos pré-criados onde eles precisam ir, executar testes de unidade ou outras coisas.No entanto, você precisa considerar para que exatamente deseja usá-lo. É frequentemente usado em conjunto com compiladores e outras ferramentas para criar aplicativos, e esses podem ser usados para negar algumas de suas linhas de defesa. Mas
make
não é possível fazer essas coisas se as ferramentas não estiverem disponíveis.fonte