Есть ли интерактивный инструмент фильтрации при подкачке вывода?

Несколько осторожных слов наперед: Защита от DDoS-атак сложна и обычно требует помощи вашего провайдера. Iptables сами по себе не защитят вас и даже могут навредить. Я не думаю, что вы действительно хотите сделать то, о чем просите.

  • DDoS предназначены для того, чтобы вызвать отказ в обслуживании, перегружая вашу систему. Регистрация пакетов увеличит нагрузку на вашу систему. Таким образом, вы окажете атакующим услугу.
  • Источник IP-адреса легко подделать. Представьте, что вы подключены к своему серверу через ssh, и злоумышленник узнает IP-адрес вашего ноутбука. Очень легко отправить пакеты, выглядящие так, будто они пришли с любого заданного IP, в данном примере с вашего ноутбука. В ответ ваш сервер заблокирует ваш IP-адрес, фактически заблокировав вас. Эта техника позволяет атакующему заблокировать любой IP-адрес на сервере. Опять же, вы оказываете атакующему услугу и значительно упрощаете его работу.

С этим разобрались:

Записывайте каждый отдельный IP-адрес в syslog (не более 1 записи на IP и час):

iptables -I INPUT 1 \! -i lo                 \
  -m hashlimit --hashlimit-name "IP_SOURCES" \
               --hashlimit-mode srcip        \
               --hashlimit-burst 1           \
               --hashlimit-upto 1/hour       \
  -j LOG

Замените iptables на ip6tables, чтобы сделать то же самое для пакетов IPv6.

Блокирование IP будет работать аналогично, просто добавьте модуль conntrack в вышеуказанное правило, сопоставьте NEW соединения и установите цель перехода на DROP. Но опять же, я думаю, что вы окажете себе плохую услугу, если действительно сделаете это.

iptables -I INPUT 1 \! -i lo                 \
  -m conntrack --ctstate NEW                 \
  -m hashlimit --hashlimit-name "RATE_LIMIT" \
               --hashlimit-mode srcip        \
               --hashlimit-burst 20          \
               --hashlimit-above 1/min       \
  -j DROP

Это позволит 20 попыток соединения в минуту, отбрасывая все остальные попытки соединения. Пакеты установленных соединений все еще могут проходить невредимыми.

Как отмечалось в комментариях, fail2ban может быть хорошим решением для блокирования нежелательного трафика. Это не поможет вам, если злоумышленники генерируют SYN-flood, или используют IPv6, но будет полезно, например, если злоумышленники пытаются пробиться к вашему ssh или smtp серверу с помощью "нормального" IPv4 соединения.

5
01.10.2016, 20:16
0 ответов

Теги

Похожие вопросы