.png)
У нас есть этот экземпляр EC2: T2.medium, работающий под управлением Apache, с 4 виртуальными хостами (4 сайта). Иногда, ни с того ни с сего, загрузка CPU достигает очень высоких значений, возможно, это атака.
Я видел, что некоторые из наших файлов WordPress были изменены.
Как я могу проверить, кто писал в этих файлах? Как я могу проверить логи ЦП, чтобы увидеть, какой процесс на него влияет? Есть ли какие-либо метрики Cloudwatch, которые я мог бы использовать?
Мы приняли меры по укреплению безопасности сервера: обновили его, запустили AWS Inspector, Lynis, изменили файл конфигурации SSH.
Есть ли способ узнать, кто и как смог войти и изменить эти файлы WordPress?
А какие еще практики закаливания вы рекомендуете?
решение1
Здесь возникает несколько вопросов.
Кто писал в файлы
Операционная система не регистрирует эту информацию, но есть некоторые подсказки:
- Дата изменения
- Разрешения на доступ к файлам
Используйте дату изменения файлов, чтобы сузить поиск в журналах доступа Apache. Проверьте по крайней мере любые POST
запросы и входы примерно того времени. Например, это покажет все попытки входа:
zgrep 'POST /wp-login.php' /var/log/apache2/*access*
Затем вы можете отфильтровать вывод по временному диапазону, полученному из времени изменения файлов.
Если измененные файлы доступны для записи только определенным пользователям системы, то вы можете быть уверены, что они были изменены этими пользователями системы.
Какие процессы нагружают ЦП?
Эта информация не регистрируется по умолчанию. Если непрактично пытаться отслеживать сервер "вживую" -- например, с помощью top -- то есть различные инструменты для регистрации, которые вы можете использовать.Вот вопрос о сбое серверагде для этой цели рекомендуются различные инструменты.
Как определить, были ли вы взломаны
Это более обширная тема, но я бы начал, поскольку вы упомянули изменения в файлах WordPress, с определения того, являются ли эти изменения вредоносными. Запустите сканер вредоносных программ WordPress и/или найдите вредоносные шаблоны, такие как eval(base64_decode(
, php web shells и т. д. Если вы не уверены, будьте настойчивы, будьте тщательны, задавайте больше вопросов, если нужно.
Определение того, как злоумышленник получил доступ
Если вы достаточно уверены, что сайт или сайты были взломаны, вы можете попытаться определить, как злоумышленник получил доступ. Два наиболее вероятных способа, которыми это могло произойти, — это вход в учетную запись администратора или уязвимость. В большинстве случаев трудно определить с высокой степенью уверенности. Но если вы запускали программное обеспечение с известной уязвимостью, особенно с общедоступным эксплойтом, и которое позволяет удаленное выполнение кода, то это весьма вероятная возможность. И если у пользователя-администратора WordPress слабые учетные данные или его учетные данныебыли утечки, то это весьма вероятная возможность.
Дальнейшее упрочнение
Если вы считаете, что сервер был скомпрометирован, вам следует обратиться кканонический ответ на эту тему.
решение2
Это не полный ответ, а дополнение к ответу sceox.
Вам следует посмотреть наукрепление Wordpress, иРазрешения файлов Wordpress.
У меня все организовано так:
- Файлами владеет один пользователь/группа.
- PHP является частью группы, которая может читать файлы Wordpress, включая плагины / темы / и т. д., но не может писать в них. Он может писать в папку uploads, чтобы изображения можно было загружать с помощью графического интерфейса Wordpress. Это делает очень сложным для чего-либо в Интернете, чтобы скомпрометировать файлы Wordpress
- У меня есть скрипт, который используетWordpress CLIделать обновления Wordpress и плагинов в 2 часа ночи.
- Любые новые плагины должны быть установлены с помощью Wordpress CLI. Это не так удобно, но НАМНОГО безопаснее.
Вот скрипт, который я использую, он запускается по заданию cron
#!/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