Вопрос или проблема
У меня, похоже, происходит некий самонаводящийся DDoS-атака. У меня есть собственная написанная программа для блога, которую я размещаю на дроплете Digital Ocean с Ubuntu 20. Долгое время всё работало отлично, но недавно сервер стал медленно реагировать, поэтому я проверил журналы доступа Apache и обнаружил, что он запрашивает одно и то же изображение несколько раз в секунду:
Фрагмент из журнала доступа:
134.209.212.156 - - [04/Oct/2024:15:32:55 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:54 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 3976 "-" "-"
127.0.0.1 - - [04/Oct/2024:15:32:56 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1350 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:56 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:56 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:56 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:57 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:57 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:57 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:54 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 3976 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:58 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:58 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:55 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 3975 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:55 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 3976 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:57 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 3977 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:54 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 3728 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:54 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 3729 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:32:58 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 3975 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:33:00 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:33:00 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:33:00 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:33:00 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:33:00 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:33:00 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:33:00 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 - - [04/Oct/2024:15:33:00 +0000] "GET /https://robert-parham.com/assets/images/hero_still.png HTTP/1.1" 200 1362 "-" "-"
134.209.212.156 – это публичный IP моего сервера, на который указывает мой домен, robert-parham.com.
Сайт работает отлично на моем компьютере, под учетной записью root или под учетной записью, которую я настроил, нет cron-заданий.
Может ли это быть каким-то вредоносным ПО? Какие меры я могу предпринять или какие инструменты я могу использовать, чтобы выяснить, какая программа или кусок кода отправляет эти запросы?
—
Правка 1:
Вот часть вывода из sudo tcpdump -vv -s0 tcp port 80 and src host 134.209.212.156
17:05:18.015144 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 44)
robert-parham.com.https > vmi1563824.contaboserver.net.http: Flags [S.], cksum 0x737c (ошибочно -> 0x575a), seq 2203077905, ack 1, win 64240, options [mss 1460], length 0
17:05:31.839148 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 44)
robert-parham.com.http > vmi1563824.contaboserver.net.http: Flags [S.], cksum 0x737c (ошибочно -> 0x2b82), seq 2445306852, ack 1, win 64240, options [mss 1460], length 0
17:05:34.400019 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 44)
robert-parham.com.https > vmi1563824.contaboserver.net.http: Flags [S.], cksum 0x737c (ошибочно -> 0x575a), seq 2203077905, ack 1, win 64240, options [mss 1460], length 0
17:05:49.535001 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 44)
robert-parham.com.http > 185.224.128.82.41528: Flags [S.], cksum 0x95bf (ошибочно -> 0x0637), seq 899153806, ack 2088086825, win 64240, options [mss 1460], length 0
17:06:55.622040 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 44)
robert-parham.com.https > vmi1563824.contaboserver.net.http: Flags [S.], cksum 0x737c (ошибочно -> 0xdebe), seq 3967376515, ack 1, win 64240, options [mss 1460], length 0
17:06:56.639166 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 44)
robert-parham.com.https > vmi1563824.contaboserver.net.http: Flags [S.], cksum 0x737c (ошибочно -> 0xdebe), seq 3967376515, ack 1, win 64240, options [mss 1460], length 0
17:06:58.687124 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 44)
robert-parham.com.https > vmi1563824.contaboserver.net.http: Flags [S.], cksum 0x737c (ошибочно -> 0xdebe), seq 3967376515, ack 1, win 64240, options [mss 1460], length 0
17:07:02.453575 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 44)
robert-parham.com.https > vmi1563824.contaboserver.net.http: Flags [S.], cksum 0x737c (ошибочно -> 0xdebe), seq 3967376515, ack 1, win 64240, options [mss 1460], length 0
17:07:04.527413 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 44)
robert-parham.com.https > vmi1563824.contaboserver.net.http: Flags [S.], cksum 0x737c (ошибочно -> 0xdebe), seq 3967376515, ack 1, win 64240, options [mss 1460], length 0
17:07:08.543172 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 44)
robert-parham.com.https > vmi1563824.contaboserver.net.http: Flags [S.], cksum 0x737c (ошибочно -> 0xdebe), seq 3967376515, ack 1, win 64240, options [mss 1460], length 0
17:07:16.799356 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 44)
robert-parham.com.https > vmi1563824.contaboserver.net.http: Flags [S.], cksum 0x737c (ошибочно -> 0xdebe), seq 3967376515, ack 1, win 64240, options [mss 1460], length 0
17:07:33.183150 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 44)
robert-parham.com.https > vmi1563824.contaboserver.net.http: Flags [S.], cksum 0x737c (ошибочно -> 0xdebe), seq 3967376515, ack 1, win 64240, options [mss 1460], длина 0
Согласно www.abuseipdb.com, как vmi1563824.contaboserver.net, так и 185.224.128.82 имеют высокие оценки по злоупотреблениям, поэтому я довольно уверенно предполагаю, что это какое-то вредоносное ПО на данный момент.
Ответ или решение
Судя по вашему описанию и предоставленным данным, у вас действительно может быть ситуация, когда сервер инициирует чрезмерное количество запросов к собственным ресурсам, в данном случае к изображению. Это может быть вызвано ошибкой в коде, вирусом или неправильно настроенными сервисами.
Возможные причины и шаги по устранению проблемы
-
Проблемы в коде:
- Проверьте ваш код на наличие циклических вызовов или рекурсивных функций, которые могут привести к бесконечным запросам к серверу.
- Обратите внимание на обработку изображений и любые другие скрипты, которые могут вызываться в процессе загрузки страницы.
-
Настройки Apache:
- Убедитесь, что в настройках вашего сервера нет конфигураций, которые могли бы привести к бесконечным редиректам. Например, неправильно настроенные правила mod_rewrite в
.htaccess
. - Проверьте модули Apache, которые могут быть активированы, и отключите ненужные.
- Убедитесь, что в настройках вашего сервера нет конфигураций, которые могли бы привести к бесконечным редиректам. Например, неправильно настроенные правила mod_rewrite в
-
Анализ журнала доступа и ошибок:
- Продолжайте следить за журналами доступа (
access.log
) и ошибок (error.log
). Обратите внимание на IP-адреса, которые делают запросы, и проверьте, нет ли аномальных паттернов.
- Продолжайте следить за журналами доступа (
-
Проверка наличия вредоносного ПО:
- Запустите сканирование систему на наличие вирусов и вредоносного ПО. Вы можете использовать такие инструменты, как
ClamAV
илиrkhunter
для проверки системы на наличие известного вредоносного кода. - Проверьте установленные пакеты на предмет злонамеренных изменений или установленных скриптов.
- Запустите сканирование систему на наличие вирусов и вредоносного ПО. Вы можете использовать такие инструменты, как
-
Сетевой анализ:
- Используйте
tcpdump
или аналогичные инструменты для анализа трафика. Убедитесь, что ваша система не взаимодействует с подозрительными IP-адресами. - Если вы видите исходящие соединения на IP-адреса, как
vmi1563824.contaboserver.net
и185.224.128.82
, это может указывать на компрометацию.
- Используйте
-
Защита сервера:
- Рассмотрите вопрос о блокировке подозрительных IP-адресов с помощью
iptables
или настройкиfail2ban
. - Используйте веб-фаервол, такой как
ModSecurity
, для защиты от атак на уровне приложений.
- Рассмотрите вопрос о блокировке подозрительных IP-адресов с помощью
-
Изоляция и тестирование:
- Если продолжаете испытывать проблему, изолируйте приложение, запустив его в контейнере или на другом сервере, чтобы видеть, воспроизводится ли проблема.
- Проверьте также наличие обновлений для вашего программного обеспечения и библиотек, которые могут содержать исправления известной уязвимости.
Заключение
Сложные проблемы с сервером, проявляющиеся в виде самоунишительных DDoS атак, зачастую требуют детального анализа как кода, так и конфигураций сервера. Важно подготовить резервные копии данных и конфигураций перед внесением значительных изменений. Если после выполненных шагов проблема не будет решена, возможно, потребуется помощь специалистов по безопасности для более глубокого анализа системы.