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

Забит ботнетом; iptables не успевает

Fructis - это многосайтовая (и многопрограммная) виртуальная машина (Xen) с 2 ядрами и примерно 6 ГБ оперативной памяти.

На нем размещаются популярные веб-сайты на Drupal и Wordpress, и в настоящее время их забивают. Все подробности изложу ниже.

  1. Я блокировал IP-адреса, но, похоже, существует ОЧЕНЬ агрессивная сеть ботов и в основном меняет IP-адреса быстрее, чем я могу их заблокировать

  2. Я обновил Drupal, но все сайты Wordpress не обязательно управляются мной.

  3. Я включил журналы для TS, но они, похоже, не помогают

  4. Возможно, ответ заключается в том, чтобы понять, какие виды атак ботов распространены в последнее время / сейчас? С этой целью, http://www.webmasterworld.com/home.htm может иметь полезную информацию

Подробности:

root@fructis:/home/nrogara# w
09:28:05 up 10 days,  1:55,  2 users,  load average: 31.10, 30.61, 32.31
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
nrogara  pts/0    c-24-7-67-188.hs Wed13    1:01m  0.18s  0.00s sshd:
nrogara [priv]
nrogara  pts/1    142-254-1-80.dsl 09:00    5.00s  0.06s  0.01s sshd:
nrogara [priv]

root@fructis:/home/nrogara# !net
netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 |
sort | uniq -c | sort -nr | head
     12 72.37.249.84
     12 162.243.193.98
      7 91.207.5.157
      7 74.73.126.40
      4 184.73.22.102
      3 94.102.49.35
      3 199.255.208.91
      3 195.211.154.155
      3 174.21.231.10
      3 108.62.154.15

(снова через 2 минуты)

root@fructis:/home/nrogara# netstat -tn 2>/dev/null | grep :80 | awk
'{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
     10 95.26.128.85
      6 67.170.85.225
      5 195.2.240.106
      4 24.7.67.188
      4 216.246.184.159
      3 206.51.125.66
      2 91.122.6.86
      2 79.143.187.214
      2 72.46.156.116
      2 50.115.172.177

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

Вы проанализировали, что такое боты делать? Они пытаются рассылать спам? Скребите ваш веб-контент? Пытаетесь выполнить DDoS-атаку?

Некоторое время назад я разработал инструмент для работы со случаями, похожими на этот, на уровне приложений. Плохое поведение анализирует метаданные в HTTP-запросах, чтобы определить, является ли запрос спамером или другим злоумышленником, и блокирует запрос с ранней ошибкой 403, прежде чем он связывает какие-либо ресурсы, выполняющие ваше веб-приложение. Он доступен как Плагин WordPress а также как Модуль Drupal.

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

Еще вы можете сделать правильное кэширование. Например, Boost для Drupal и W3 Общий кэш для WordPress. Это немного поможет, но если боты ползать ваш сайт, они будут тратить большую часть своего времени на получение некэшированного контента, поэтому в этом случае это не поможет. Это также не очень поможет, если боты в основном публикуют данные, например пытается отправить спам.

Вы также должны, если возможно, временно увеличить выделение ресурсов ЦП и ОЗУ для виртуальной машины, чтобы уменьшить нагрузку. Это может потребовать от вас остановки и перезапуска виртуальной машины, но на данный момент это незначительная проблема.

Я также иногда писал обычай fail2ban регулярные выражения для определенных ботов, которые совершали определенные оскорбительные действия, например, неоднократно пытались зарегистрировать учетные записи пользователей в Drupal. Если ваш анализ журналов сервера показывает, что происходит что-то очень специфическое, вы также можете сделать что-то подобное.