У нас есть этот экземпляр EC2: T2.medium, работающий с apache, с 4 виртуальными хостами (4 сайта). Иногда из ниоткуда ЦП достигает очень высоких уровней, возможно, атака.

Я видел, что некоторые из наших файлов Wordpress были изменены.

Как я могу проверить, кто писал в эти файлы? Как я могу проверить журналы ЦП, чтобы увидеть, какой процесс влияет на него? Существуют ли какие-либо метрики CloudWatch, которые я мог бы использовать?

Мы немного усилили сервер: обновили, запустили AWS Inspector, lynis, модифицировали конфигурационный файл ssh.

Есть ли способ увидеть, кто и как им удалось войти и изменить эти файлы Wordpress?

А какие еще практики закаливания вы рекомендуете?

answer

Здесь есть несколько вопросов.

Кто писал в файлы

Операционная система не регистрирует эту информацию, но есть некоторые подсказки:

  • Дата модификации
  • Права доступа к файлам

Используйте дату изменения файлов, чтобы сузить поиск журналов доступа Apache. Проверьте, по крайней мере, любые POSTзапросы и входы в систему примерно за это время. Например, это покажет все попытки входа в систему:

zgrep 'POST /wp-login.php' /var/log/apache2/*access*

Затем вы можете отфильтровать вывод по временному диапазону, который вы получили из времени модификации файлов.

Если файлы, которые были изменены, доступны для записи только определенным системным пользователям, то вы можете быть достаточно уверены, что они были изменены этими системными пользователями.

Какие процессы привязывают ЦП

Эта информация не регистрируется по умолчанию. Если нецелесообразно пытаться контролировать сервер «вживую» — например, с помощью top — тогда есть различные инструменты ведения журнала, которые вы можете использовать. Вот вопрос о сбое сервера, где для этой цели рекомендуются различные инструменты.

Определение того, взломали ли вас

Это более обширная тема, но, поскольку вы упомянули об изменениях в файлах WordPress, я бы начал с определения того, являются ли эти изменения вредоносными. Запустите сканер вредоносных программ WordPress и/или найдите вредоносные шаблоны, такие как eval(base64_decode(, веб-оболочки php и т. д. Если вы не уверены, будьте настойчивы, будьте тщательны, задавайте дополнительные вопросы, если нужно.

Определение того, как злоумышленник получил доступ

Если вы достаточно уверены, что сайт или сайты были взломаны, вы можете попытаться определить, как злоумышленник получил доступ. Это могло произойти двумя наиболее вероятными способами: через вход в учетную запись администратора или через уязвимость. В большинстве случаев его трудно определить с высокой степенью достоверности. Но если вы запускали программное обеспечение с известной уязвимостью, особенно с общедоступным эксплойтом, позволяющим удаленное выполнение кода, то это очень вероятная возможность. И если пользователь-администратор WordPress имеет слабые учетные данные или их учетные данные просочились , то это очень вероятная возможность.

Дальнейшее закаливание

Если вы считаете, что сервер был скомпрометирован, то вам следует обратиться к каноническому ответу по теме .

Это не полный ответ, это дополнение к ответу sceox.

Вам следует обратить внимание на ужесточение прав доступа к файлам Wordpress и Wordpress .

У меня настроено так:

  • Один пользователь/группа владеет файлами
  • PHP является частью группы, которая может читать файлы Wordpress, включая плагины/темы/и т. д., но не может записывать в них. Он может записывать в папку загрузки, чтобы изображения можно было загружать с помощью графического интерфейса Wordpress. Из-за этого кому-либо в Интернете очень сложно скомпрометировать файлы Wordpress.
  • У меня есть сценарий, который использует интерфейс командной строки Wordpress для обновления 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