.png)
Temos esta instância EC2: T2.medium, rodando Apache, com 4 hosts virtuais (4 sites). Às vezes, do nada, a CPU atinge níveis muito altos, talvez um ataque.
Vi que alguns de nossos arquivos wordpress foram modificados.
Como posso verificar quem está escrevendo nesses arquivos? Como posso verificar os logs da CPU para ver qual processo a está afetando? Há alguma métrica do Cloudwatch que eu possa usar?
Temos feito alguns fortalecimentos no servidor: atualizações, execução do AWS Inspector, lynis, modificação do arquivo de configuração ssh.
Existe alguma maneira de ver quem e como eles conseguiram inserir e modificar esses arquivos wordpress?
E que outras práticas de endurecimento você recomenda?
Responder1
Existem várias perguntas aqui.
Quem tem escrito nos arquivos
O sistema operacional não registra essas informações, mas há algumas pistas:
- A data da modificação
- As permissões de arquivo
Use a data de modificação dos arquivos para restringir sua pesquisa nos logs de acesso do Apache. Verifique, no mínimo, quaisquer POST
solicitações e logins dessa época. Por exemplo, isso mostraria todas as tentativas de login:
zgrep 'POST /wp-login.php' /var/log/apache2/*access*
Você pode então filtrar a saída pelo intervalo de tempo obtido a partir do horário de modificação dos arquivos.
Se os arquivos que foram modificados só puderem ser gravados por determinados usuários do sistema, você poderá ter certeza razoável de que eles foram modificados por esses usuários do sistema.
Quais processos estão vinculando a CPU
Essas informações não são registradas por padrão. Se for impraticável tentar monitorar o servidor "ao vivo" - por exemplo, com top - então existem várias ferramentas de registro que você pode usar.Aqui está uma pergunta sobre falha no servidoronde várias ferramentas são recomendadas para esse fim.
Determinando se você foi hackeado
Este é um tópico mais amplo, mas por onde eu começaria, já que você mencionou modificações nos arquivos do WordPress, é determinar se essas modificações são maliciosas. Execute um scanner de malware do WordPress e/ou procure padrões maliciosos, como eval(base64_decode(
shells da web php e assim por diante. Se não tiver certeza, seja persistente, minucioso e poste mais perguntas se necessário.
Determinar como um invasor obteve acesso
Se você tiver certeza razoável de que o site ou sites foram invadidos, tente determinar como o invasor obteve acesso. As duas maneiras mais prováveis de isso ter acontecido são por meio de login em uma conta de usuário administrador ou por meio de uma vulnerabilidade. Na maioria dos casos, é difícil determinar com um elevado grau de certeza. Mas se você estiver executando um software com uma vulnerabilidade conhecida, especialmente um com exploração pública e que permita a execução remota de código, essa é uma possibilidade muito provável. E se um usuário administrador do WordPress tiver credenciais fracas ou suas credenciaisvazaram, então esta é uma possibilidade muito provável.
Endurecimento adicional
Se você acredita que o servidor foi comprometido, consultea resposta canônica sobre o assunto.
Responder2
Esta não pretende ser uma resposta completa, é complementar à resposta do sceox.
Você deveria olharendurecendo Wordpress, ePermissões de arquivo Wordpress.
Eu tenho coisas configuradas assim:
- Um usuário/grupo possui os arquivos
- PHP faz parte de um grupo que pode ler os arquivos do Wordpress, incluindo plug-ins/temas/etc, mas não pode gravar neles. Ele pode gravar na pasta de uploads para que as imagens possam ser carregadas usando a GUI do Wordpress. Isso torna muito difícil que qualquer coisa na Internet comprometa os arquivos do Wordpress
- Eu tenho um script que usa oCLI do Wordpresspara fazer atualizações do Wordpress e dos plugins às 2h.
- Quaisquer novos plugins devem ser instalados com Wordpress CLI. Não é tão conveniente, mas é MUITO mais seguro.
Aqui está o script que uso, que é executado em um cron job
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
echo
echo Wordpress Update and Permissions Script Starting
echo "$(date) Wordpress update and backup started" >> /var/log/me/my-wordpress-upgrades 2>&1
# Function to upgrade wordpress
function upgrade_wordpress() {
# set up folders in the formats needed
dir=$1
uploads=$1/wp-content/uploads
echo Upgrading Wordpress core, plugins, themes in ${dir}
sudo -H -u www-user bash -c "wp core update --path=$dir"
sudo -H -u www-user bash -c "wp plugin update --all --path=$dir"
sudo -H -u www-user bash -c "wp theme update --all --path=$dir"
echo Setting wordpress permissions to 755 files and 644 folders
find ${dir} -type d -exec chmod 755 {} \;
find ${dir} -type f -exec chmod 644 {} \;
chmod 440 ${dir}/wp-config.php
echo Making uploads folder ${uploads} writable by the web server
chown -R www-data:www-data ${uploads}
echo Wordpress upgrade for $1 complete
echo
echo
}
echo Setting /var/www permissions to www-user:www-data
chown -R www-user:www-data /var/www/
# Run Wordpress update for each wordpress install
upgrade_wordpress /var/www/blog1
upgrade_wordpress /var/www/blog2