Por que o WordPress precisa da minha chave ssh privada para atualizar?


13

Configurar o WordPress para atualizar dentro do aplicativo (ou seja, WordPress) é ideal para mim devido à sua conveniência. No entanto, estou preocupado com os requisitos. Os campos solicitados que aparecem após a instalação do ssh2 para php solicitam não apenas minha chave pública, mas também minha chave privada. Eu pensaria que, no máximo, apenas a chave pública seria necessária.

O WordPress realmente fornece minha chave privada a um servidor para que ele possa carregar o pacote de software correto no meu servidor? Estou familiarizado com o funcionamento das chaves públicas / privadas do SSH, e é por isso que estou confuso por que o WordPress precisa disso. Na verdade, eu pensaria que o mecanismo de atualização nem precisaria desse protocolo; seria apenas usar http ou ftp para o servidor de pacotes e depois baixar / instalar / ativar a partir daí.

Por que o WordPress precisa das minhas chaves ssh? Existem preocupações de segurança aqui?

Respostas:


11

Essencialmente, o WordPress precisa se conectar novamente ao servidor em que ele está sendo executado.

Existem várias maneiras possíveis de usar o WordPress para gravar arquivos e, assim, "sobrescrever" a si mesmo durante uma atualização. Do ponto de vista da segurança, a parte importante desse processo é que os novos arquivos devem ter a mesma propriedade dos arquivos antigos.

Portanto, o WordPress realiza um teste primeiro escrevendo um arquivo diretamente e verificando quem é o proprietário resultante. Se o proprietário corresponder aos arquivos PHP, ele saberá que pode gravar arquivos com a propriedade correta (isso significa que o processo é "setuid" para o proprietário do arquivo).

Se o arquivo resultante for de propriedade de um ID de usuário diferente (o que provavelmente ocorre se o Apache / PHP estiver sendo executado como um usuário diferente, como o usuário "www" ou "apache"), o WordPress precisará usar um método diferente para criar arquivos com o proprietário correto.

Uma abordagem é o FTP simples. Se ele fizer uma conexão FTP de volta ao servidor em que está ligado e gravar os arquivos, os arquivos resultantes serão de propriedade de quem fizer login como FTP. Portanto, solicita ao usuário informações sobre FTP.

Mas o FTP não é muito seguro. Então, como você encontrou, outro método é via SSH2. Usando a biblioteca SSH para PHP, ele pode fazer uma conexão SSH de volta ao servidor da mesma maneira. E que é por isso que ele precisa de uma chave privada, porque ele está usando isso para fazer uma volta conexão de saída para si. Ao fazer essa conexão, ele pode definir credenciais e gravar arquivos como o usuário que possui essas credenciais.

Se você estiver preocupado com o fato de ter essas chaves, gere um novo conjunto de chaves e use-as exclusivamente para esse fim.

Para responder à sua pergunta direta, não, o WordPress não "fornece" as chaves em nenhum lugar. Ele baixa o pacote de atualização, descompacta e depois usa essas chaves para fazer uma conexão de volta ao seu próprio servidor (loopback, basicamente) e, em seguida, copia os arquivos nessa conexão. Ao fazer isso, as credenciais significam que os arquivos obtêm a propriedade correta e evitam os problemas de segurança de ter os arquivos do WordPress de propriedade do processo principal do Apache / www / php.


Ótima resposta. Isso acalmou minhas preocupações. Isso está documentado em algum lugar?
Avery Chan

Sim, embora possivelmente com quantidades diferentes de detalhes: codex.wordpress.org/Filesystem_API
Otto

quando você diz fazer uma conexão "de volta a si mesma". Você está dizendo que o PHP é o cliente FTP e se conecta ao mesmo servidor em que está sendo executado?
dangel

Sim exatamente isso.
Otto
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.