Назад | Перейти на главную страницу

Лучший способ отслеживать исходящие запросы с сервера

У нас есть LTS-сервер Ubuntu 14.04.1 с nginx 1.4.6, на котором размещено несколько десятков веб-сайтов, и мы получили жалобу на злоупотребление от другого сервера с сотнями таких запросов: «POST /wp-login.php HTTP / 1.0», исходящие от нашего сервер. Как я могу проанализировать проблему, чтобы узнать, откуда идет этот трафик? Я пытался прочитать вывод tcpdump, но у меня нет большого опыта с ним, и я не знаю, какие параметры ему передать или как прочитать вывод таким образом, чтобы я мог найти то, что ищу, в эффективный способ. Какие инструменты мне следует использовать и в каком порядке, чтобы проверить, смогу ли я отследить источник проблемы?

Из-за недостатка информации предполагаю следующее.

  • ваша система размещает веб-сайты
  • веб-сайты уязвимы, возможно, некоторые старые версии с довольно большим количеством известных уязвимостей
  • размещенные веб-сайты, скорее всего, были автоматически перечислены и использовались одним или несколькими злоумышленниками.
  • злоумышленники оставили бэкдоры в файловой системе и, возможно, в базе данных
  • злоумышленники не обязательно получали root-доступ (чем у вас новое ядро, тем меньше вероятность, что они это сделали)
  • используя уязвимости и бэкдоры, злоумышленники активно используют вашу систему для анонимизации себя при атаке других целей (как это подтверждается в вашем отчете)

Что с этим делать?

  • Своевременно обновлять размещенные веб-сайты - легче сказать, чем сделать, но это важно

  • Разделите, ваши веб-сайты должны быть максимально изолированы друг от друга (выполнение php не как никто или www-данные, а скорее как уникальные пользователи, таким образом компрометация одного сайта не приведет к компрометации всех сайтов так легко, особенно когда ленивые злоумышленники причиняют вам головную боль)

  • часто сканируйте и проверяйте вашу систему, вы можете использовать Мальдет для поиска подозрительных файлов злоумышленники могли оставить бэкдоры. Это ни в коем случае не полный пакет для очистки, он найдет кое-что, но основан на сигнатуре, и любая мутация в бэкдоре может легко сделать бэкдор незамеченным для подобных сканеров.

  • найти и уничтожить; соотноситься; и под этим я подразумеваю, ищите все, что у вас есть, делайте заметки о результатах, исследуйте журналы доступа на наличие упоминаний о доступе к тому, что вы нашли, затем отмечайте IP-адреса, которые обращались к этим плохим файлам; затем проверьте, к каким, возможно, другим файлам имеют доступ эти IP-адреса на вашем сервере. Это, вероятно, откроет еще несколько бэкдоров, подписи которых не совпадают.

  • Постарайтесь уменьшить поверхность атаки. Области администрирования - это многофункциональные компоненты, и это приводит к множеству ошибок в них. Если вы ограничиваете доступ к областям администрирования только несколькими IP-адресами; или добавьте дополнительный уровень, например базовую аутентификацию, это поможет защитить ваши размещенные сайты от владения.

  • Держите глаза открытыми, пролистайте этот список, найдите новые методы, которые можно добавить в этот список, чтобы улучшить свои защитные способности.

Простой подход первого уровня - использовать lsof -i @remotehostname (или удаленный IP-адрес), чтобы узнать, какой пользователь и процесс инициируют соединения с удаленным хостом.

Что касается устного перевода tcpdump вывод, мне по-прежнему гораздо проще использовать что-то вроде Wireshark для интерпретации захваченного потока TCP. Это также помогает вам сгенерировать синтаксис для использования в tcpdump, чтобы сделать ваши записи более конкретными.