Controle de origem legado: CVS sob xinetd
Temos uma equipe que usa controle de origem legado: cvs. Executamos cvs pserver em xinetd (arquivo de configuração abaixo).
Sinalizador de auditoria
Uma auditoria de segurança levantou um sinalizador: "certifique-se de que o servidor cvs não execute sob root".
Pergunta:
Posso bloquear com segurança o 'cvs pserver' substituindo "user=root" por "user=cvs"? Quaisquer efeitos colaterais prejudiciais ou 'pegadinhas'?
Nota: O usuário "cvs" possui todos os arquivos no diretório 'cvs root' "/var/cvs/cvs"
Eu pergunto porque pesquisei toda a documentação de uma década e todos os exemplos têm 'user = root' e nenhum sugere alterar o parâmetro "user =" para aumentar a segurança.
Atualizar: Eu tentei. Funcionou. Sem problemas.
Obrigado
Exemplo: arquivo de configuração cvspserver
# Begin /etc/xinetd.d/cvspserver
service cvspserver
{
port = 2401
socket_type = stream
protocol = tcp
wait = no
user = root
passenv = PATH
server = /usr/bin/cvs
server_args = -f --allow-root=/var/cvs/cvs pserver
}
# End /etc/xinetd.d/cvspserver
Responder1
Você deve absolutamente seguir seus conselhos. É um conselho extremamente bom.
Geralmente, ao fazer isso, você precisará garantir que o daemon tenha direitos suficientes para fazer o que faz. Neste caso específico, isso provavelmente significa apenas a propriedade que já possui. Minha sugestão seria fazer backup do seu repositório e seguir em frente e fazer a alteração.
A maneira como isso funciona é que o xinetd (geralmente rodando como root) irá eliminar privilégios e então executar o /usr/bin/cvs com stdin e stdout direcionados para o soquete que o xinetd gerencia. Realmente não há nada nisso. O CVS é bastante simples e não deve exigir nenhuma permissão além de poder manipular os arquivos em sua raiz.