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

12

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 depois de instalar o ssh2 para php pedem não apenas a minha chave pública, mas o meu nome privado chave também. 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 o servidor possa fazer o upload do pacote de software correto para o meu servidor? Eu estou familiarizado com o funcionamento das chaves privadas / públicas do SSH, e é por isso que estou confuso por que o WordPress precisa disso. Se qualquer coisa, eu pensaria que o mecanismo de atualização nem precisaria desse protocolo; seria apenas usar http ou ftp para o servidor de pacotes e, em seguida, fazer o download / instalar / ativar a partir daí.

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

    
por Avery Chan 17.09.2013 / 13:24

1 resposta

11

Essencialmente, o WordPress precisa se conectar ao servidor onde está sendo executado.

Existem várias maneiras possíveis que o WordPress pode usar para gravar arquivos e "sobrescrever-se" durante uma atualização. De uma perspectiva de segurança, a parte importante desse processo é que os novos arquivos devem ter a mesma propriedade que os arquivos antigos.

Portanto, o WordPress faz 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 pertence a um id de usuário diferente (o que é provável se o Apache / PHP está sendo executado como um usuário diferente, como o usuário "www" ou "apache"), o WordPress tem que usar um método diferente para crie arquivos com o proprietário correto.

Uma abordagem é simples FTP. Se ele fizer uma conexão FTP de volta ao servidor em que está, e gravará os arquivos por cima, os arquivos resultantes serão de propriedade de qualquer pessoa que efetuar login como via FTP. Então, ele solicita ao usuário informações sobre FTP.

Mas o FTP não é muito seguro. Então, como você descobriu, 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 isso é o motivo pelo qual ele precisa de uma chave privada, porque está usando isso para fazer uma conexão de saída de volta para si mesma. Ao estabelecer essa conexão, ele pode definir credenciais e gravar arquivos como o usuário que possui essas credenciais.

Se você está preocupado com a posse dessas chaves, gere um novo conjunto de chaves e use exclusivamente para essa finalidade.

Para responder à sua pergunta direta, não, o WordPress não "entrega" as chaves em nenhum lugar. Ele faz o download do pacote de atualização, descompacta-o e usa essas chaves para estabelecer uma conexão com seu próprio servidor (basicamente, loopback) e, em seguida, copia os arquivos por essa 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 pertencentes ao processo principal do Apache / www / php.

    
por Otto 17.09.2013 / 13:57