eu tenho umPilha LEMP (Ubuntu 20.04)que está perfeitamente configurado e otimizado por mim. Não possui nenhum webpanel. Eu estava usando-o inicialmente apenas para meus próprios sites. Mais tarde, comecei a adicionar alguns sites de clientes ao servidor.
Como eles solicitaram acesso SFTP para gerenciar arquivos do site, decidi garantir que eles não pudessem acessar/editar arquivos confidenciais no servidor.
Lista das alterações que fiz para isolar os usos tanto quanto possível:
- Criou um usuário sudo (vamos chamaradministrador do servidor) para mim e o acesso root foi desativado
chmod 700 /home/serveradmin
(sem-R
)- Criei contas de usuário normais para meus clientes (ex. cliente1, cliente2...) e depois adicionei todas elas aoadministrador do servidorgrupo
- Definir usuário nginx comoadministrador do servidor
- Criado pool php-fpm diferente para cada cliente. (ex. proprietário: cliente1 grupo: serveradmin, o mesmo para ouvintes)
- Tornou os arquivos confidenciais do site inacessíveis a terceiros (por exemplo, o arquivo wp-config.php inclui credenciais de banco de dados)
chmod -R 700
para a pasta SSL do site.- E claro, criei diferentes usuários e bancos de dados mysql para cada um dos clientes.
Agora, tenho 100% de certeza de que ninguém pode acessar a pasta /home/clientX de outras pessoas. Eles não podem editar ou remover pelo menos nenhum arquivo. No entanto, não sou um usuário Linux experiente e também não sou um provedor de hospedagem.a coisa e que,Esses clientes podem danificar/prejudicar meu servidor acessando e editando quaisquer arquivos do sistema fora da pasta/home? (por exemplo, os caminhos /etc, /var/run podem ser perigosos, eu acho).
Não alterei as permissões de pasta/arquivo dos arquivos de sistema padrão.
Então, meu servidor não está seguro? Ainda precisa de alterações para melhorar a segurança ou devo evitar totalmente dar-lhes acesso SFTP?
Atenciosamente.
Responder1
Pelo menos os pontos 3 e 4 são inválidos/inseguros.
- Criei contas de usuário normais para meus clientes (ex. client1, client2...) e depois adicionei todas elas ao grupo serveradmin
O que uma conta de usuário normal tem a ver com o administrador do servidor? Absolutamente nada, mesmo nomeando com sabedoria. Qual é o sentido de cada usuário do site pertencer ao serveradmin
grupo?
- Defina o usuário nginx como serveradmin
Da mesma maneira. O NGINX deve ser executado sob seuterusuário, normalmente nginx
(distros CentOS/RHEL) ou www-data
(sistemas baseados em Debian). Não tem nada a ver com administração de servidores.
Não posso entrar em detalhes sobre como a configuração atual é insegura, pois isso precisa de muito mais detalhes, como propriedade de soquete para PHP, locais de arquivos, etc.
Uma configuração verdadeiramente segura pressupõe a maior separação possível do usuário, e isso se aplica aos serviços. Portanto, comece alocando (ou usando aquele fornecido pelo pacote) um usuário separado para NGINX e prossigapermissões seguras para PHP-FPM. É o usuário do NGINX que deve estar em cada grupo de usuários do site, e não o contrário:
usermod -a -G client1 nginx
usermod -a -G client2 nginx
...
Agora nginx
o usuário pertence client1
a client2
grupos. O motivo é porque o nginx
usuário realmente precisa ser capaz de ler todos os arquivos do site.
Os pools PHP-FPM, por outro lado, podem ser vinculados às client1:client1
opções de tempo de execução e de escuta de soquete.